系列列表'替代Excel Vba'系列(一):用Python的pandas快速汇总 前言在本系列的上一章已经介绍了如何读写 excel 数据,并快速进行汇总处理。但有些小伙伴看完之后有些疑惑:
今天,我就沿用上一章的数据,把需求升级一下,以解决上述疑点。 本文要点:
注意:虽然本文是'Python替代Excel Vba'系列,但希望各位读者明白,工具都是各有所长,适合才是最好。 案例数据与上一节一样,就一个学生的数据表。 ![]() 不过这次我们需要把每个班级成绩好的同学给揪出来好好表扬,因此条件如下:
导入包本文所需的包,安装命令如下: pip install xlwingspip install pandas 脚本中导入 ![]() 本文只说重点细节,至于如何从 excel 中读取数据,上一节已经有详细介绍。 排名首先需要解决的是怎么得到班级 top 3? 首要任务是得到排名,如下: ![]()
来看看结果。 ![]()
找出低水平学生现在找出低于所在班级平均分的同学吧。 先按班级计算平均分,然后把平均分填到每一行上。 ![]()
看看数据 ![]()
万事俱备看到这里,你可能会觉得很复杂,但注意,我们只是写了2句代码即可做到了比较复杂的分组汇总。 首先把 top 3的同学挑出来 ![]()
接着把低于平均分的也挑出来 ![]()
但是,需求是需要我们在原表格上标记颜色。怎么可以用目前的结果数据关联到原数据上。 我们注意看得到的结果中的 index。就是最左边的那一列数字 ![]() 每个 DataFrame 都会有这样的 index,不管你怎么操作他,这个 index 都不会改变。因此我们可以利用 index 定位 excel 的单元格,然后通过 xlwings 标记底色就好了。 给表格加点颜色首先定义一个设置颜色的方法 ![]()
如果你对 excel 不熟悉,可能你会问,你怎么知道设置颜色是这些代码? 其实我是通过录制宏来得到。如下: ![]() 完整代码以下是完整的代码: ![]() 本节就不再上 vba 代码了(没人愿意写~~)。 使用 pandas 到底好处是什么目前为止,你可以看到 Python 处理 excel 数据的基本套路是
如果你熟悉 vba ,那么 pandas 就像一个数组+ sql 的多功能工具。 总结通过本文应该可以解答之前的一些疑惑。像本次需求中的数据处理任务,即使你用透视表来解决也是不容易的,更不用说用 vba 了。 使用 python 不仅代码简洁易懂,并且整个过程都可以重复执行。 [源码地址]( |
|
来自: 网摘文苑 > 《office与VBA》