懂Excel就能轻松入门Python数据分析包pandas(三):制作成绩条

2021-09-01 15:07:11 浏览数 (1)

系列文章:

经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得要死。后来才发现,原来不是 Python 数据处理厉害,而是他有数据分析神器—— pandas

前言

很多从未接触 pandas 的小伙伴看到相关资料后,会觉得这玩意无法处理像 Excel 那样格式复杂多变的数据。其实 pandas 比起手动操作、透视表操作甚至 Vba 操作,他可以更灵活快速处理复杂形状的数据。

这次,我们来看看怎么用 pandas 一次生成各种形如工资条的格式数据。


案例

继续沿用成绩单数据:

我们希望把每位学生的成绩单独列出来,也就是一行记录成为一个小表:


Excel 技巧

用 Excel 自带功能可不可以批量完成这个工作呢?当然可以,只不过需要许多技巧。但我总是说,思路比方法更重要,这是因为,如果你理解这 Excel 操作过程,同样的思路就可以应用在 pandas 中完成。

看看 Excel 是怎么完成此需求的,我们用10条记录做演示:

  • 添加辅助序列,每个数值相隔2(这是因为结果数据每行相隔2行)

  • 在辅助列下面,生成序列(结束值为上一步序列的尾数)
  • 使用 Excel 自带的生成系列功能即可

  • 批量添加标题行
  • 从3开始,每隔3行设置一标题

  • 去除重复的序列行

  • 最后根据辅助列排序,即可得到结果

pandas 做法

pandas 中有多种实现方式,本节先介绍与上述 Excel 的解决思路基本一致的方式。如下:

  • 修改行索引值,相当于 Excel 的第一步

  • reindex 可以给予不存在的行索引值,此时那些行会变成空行
  • 相当于 Excel 中的第二与第四步

  • 最后,把从索引3开始,每隔3行赋值列标题即可

完整代码如下:


最后

本文介绍的方式实际限制比较大,比如不能按任意维度划分等,并且需要使用者对 pandas 中的索引有深入理解。下次将介绍一种通用的方式,而且还可以在每个小表格中添加汇总行。

如果希望从零开始学习 pandas ,那么可以看看我的 pandas 专栏。

0 人点赞