系列文章:
经常听别人说 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 专栏。