在python中处理数据后,要导入excel制作图表吗? 直接用python制作美丽的图表-betway体育官网_betway必威体育官网|betway88

请重视本号,后续会有更多相关教程。转发本文并私信我"python",即可取得按水平范畴分类好的Python材料

系列文章

  1. "代替Excel 凯特龙Vba"系列(一):用Python的pandas快速汇总
  2. "Python代替Excel Vba"系列(二):pandas在python中处理数据后,要导入excel制造图表吗? 直接用python制造美丽的图表-betway体育官网_betway必威体育官网|betway88分组计算与操作Excel
  3. "Python代替Excel Vba"系列(三):pandas处理不标准数据

前语

上一节咱们现已成功把一份教师课程表收拾成标准的形fczlm式,本节咱们就看一下怎样运用这份数据得到一些信息。而且尽可能让每个部分都有可视化输出。

本文关键:

  • 运用 p大白鲨游戏下载andas 快速按需求做汇总收拾。

注在python中处理数据后,要导入excel制造图表吗? 直接用python制造美丽的图表-betway体育官网_betway必威体育官网|betway88意:尽管本文是"Python代替Excel Vba"系列,但期望各位读者理解,东西都是各有所长,挑选合适的东西,反击才福冈是最好的。

事例

这雨燕次的数据是依据上一节已收拾的教师课程表。如下图:

  • 表中的一行表明 某一天的某课时是哪位教师担任的哪门科目。
  • 这儿的姓名依照原有数据做了脱敏(teach 列)。

本文所用到的 pandas 技巧都在之前的章节已有具体介绍,因而本文只对要点细节做解说


设定问题

本文的方针问题如下:

  • 科意图分配状况怎么?
  • 教师的课时分配怎么?

导入包

本文所需的包,装置指令如下:

pip install pandas
pip install numpy
pip install pyecharts

主张你装置 anaconda ,那么最难装置的 pandas 和 numpy 都不会是问题。

脚本中导入

  • 本文运用 pyecharts 做可视化输出

加载数据

代码如下:

  • 这次直接从 csv 文件读取即可。

主科目占比

要看主科目占比,那么首要依据科目区分主次科目。如下:

  • df['sj'].apply(lambda x: '语数英' if x in cond else '其他') ,依据科目列,区分为"语数英"或"其他"
  • 把区分成果增加的新列 sj_class 。

现在数据如下:


现在能够看看主科意图数量。咱们把汇总问题的主键列出,运用 pandas 的 groupby 办法即可快速做汇总。 如下:

  • df.groupby(['sj_class']) ,按 sj_class 分组。
  • .size() ,即可求得每组的个数。这儿运用 count 也樟树能够,但你会留意到运用 count ,pandas 会把一切列都进行计数。而且 count 会疏忽 nan ,而 size 则不会。
  • .reset_index() ,调用 groupby 后,分组的 sj_class 会作为 index ,因而这儿仅仅把 sj_class 从头设置为列。

来看5s办理看实践占比吧。

上述2次汇总其实是能够界说为日日一个通用的办法。这儿是为了便利解析因而仿制了2段差不多的代码


按班级看科目占比

仅仅看全体的占比状况不太能够了解数据。咱们试试再深化一些维度去看看数据。 看看每个等级的主科目占比状况。如下:

  • 这次咱们的汇总主键是 等级和主科目。
  • 能够看到其实与之前的流程根本共同,仅仅在分组时加上了 grade 字段。

看看图表吧:

  • 能够看到五年级的语数英课时象拔占比最大(为什么不是六年级的主科目占比最太冲穴大?)。
  • 七、八年级语数英没有其他科目占比大(初一初二语数英课时减少了?)。

教师分配状况

来个杂乱一点的需求,看教国际时刻师分配状况,咱们设定如下要求:

  • 每位教师的上下午课时数量,而且按课时数量排序。
  • 每位教师每天的上下午课时数量,而且按课时数量排序。在python中处理数据后,要导入excel制造图表吗? 直接用python制造美丽的图表-betway体育官网_betway必威体育官网|betway88

首要,每位教师的上下午课时数量。主键是 教师和上在python中处理数据后,要导入excel制造图表吗? 直接用python制造美丽的图表-betway体育官网_betway必威体育官网|betway88下午。 代码如下:

  • 分组汇总与之前的共同。仅仅主键不同罢了。
  • res.groupby('teach')['value'].transform('sum') ,求出每位教师的总课时
  • res['total'].rank(ascending=False) ,做一个排名。

这儿要点说一下这段代码:

  • 这儿为了做图表,需求保证每位教师都有上午和下午2行数FaceWin据。但实践数据中有些教师只要半响的课(如下图的教师 n56)。


  • .创生之柱set_index(['teach','apm']) ,先让 teach 和aj4 apm 做行索引。
  • 此刻 apm 行索引中都有上午和下午的值。
  • .unstack() ,在python中处理数据后,要导入excel制造图表吗? 直接用python制造美丽的图表-betway体育官网_betway必威体育官网|betway88把 apm 从行索引移到列索引。那么就会有 上午列 和 下午列。
  • 留意此刻,假如一位教师只要下午的课,那么此列他的值就为 nan。


  • .stack(d鞋奴ropna=False) ,把 apm 从列索引移回去行索引,dropna=False ,让其保存 nan 的值。
  • 此刻即可保证一切的教师都有上下午2行数据。


直接在python中处理数据后,要导入excel制造图表吗? 直接用python制造美丽的图表-betway体育官网_betway必威体育官网|betway88看可视化吧:

  • 上图能够看出来,n4 这教师是最在python中处理数据后,要导入excel制造图表吗? 直接用python制造美丽的图表-betway体育官网_betway必威体育官网|betway88多课极地狐时(25110课时)
  • 大部分的教师都是上午比下午课汉方豆蔻茶官网时多(这很可能是因为原本下午的课时就比上午少啊)- 有4位教师只要下午有课。

再看看每天分别是哪位教师比较忙的。

  • n4 这位教师星期二下午就彻底没有课时。

上述2次汇总其实是能够界说为一个通用的办法。这儿是为了便利解析因而仿制了2段差不多的代码


最终

本文要点

  • 从剖析问题出提取主键,运用 groupby 即可快速得到数据。
  • 灵活运用 stack 与 unstack ,能够快速做一些数据补充。

[源码地址](https://github.com/CrystalWindSnake/Creative/tree/master/python/excel_pandas/4)

请重视本号,后续会有更多相关教程。

评论(0)