返回公众号历史文章目录

文章 / 公众号历史文章

懂Excel也能轻松入门Python数据分析包pandas(二):高级筛选(下)

系列文章: 懂Excel也能轻松入门Python数据分析包pandas(二):高级筛选(上) 前言 经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得要死。后来才发现,原来不是 Python 数据处理厉害,而是他有数据分析神器—— pandas 。 紧接着上一篇的高

公众号文章插图

公众号文章插图

系列文章:

前言

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

紧接着上一篇的高级筛选,不过上一篇的例子太简单了,这次来点难度。

公众号文章插图

数据

继续沿用上一篇的数据:

公众号文章插图

    • 某学校的一份考试成绩表(8科成绩)

公众号文章插图

加载数据

pandas 需要加载 Excel 数据,如下:

公众号文章插图

公众号文章插图

复杂过滤

“高于全级平均分的人”,Excel 高级筛选的条件区域设置如下:

公众号文章插图

    • 这次需要在条件值中使用函数公式
    • =K2>AVERAGE(K:K) ,你可以想象成,Excel 会遍历每行,遍历时,会把函数公式中的 K2 ,用当前行的值替换

公众号文章插图

pandas 实现思路是一样的,如下:

公众号文章插图

公众号文章插图

上面的需求还是有点简单,再加点料。

“总分高于所在班级平均分的学校”,Excel 高级筛选的条件区域设置如下:

公众号文章插图

    • 此时不能简单使用 AVERAGE ,这是因为我们需要根据 班级 获得该班级的平均分,这次使用 AVERAGEIF(B:B,B2,K:K)

公众号文章插图

pandas 实现则显得麻烦点。如下:

公众号文章插图

    • .groupby(‘班级’) ,按班级分组
    • .apply ,对每组查询总分超出平均分的记录。

    这里的 query 字符串与上一例子是一样的

公众号文章插图

为难 Excel 的任务

有些任务用 Excel 自带功能则非常繁琐,比如:

“全级中,8科成绩都超出全级平均分的学生”

这任务如果用 Excel 实现,必须逐一对每个科目进行求平均,直接看看 pandas 的实现:

公众号文章插图

    • 定义一个方法,这有利于重用逻辑
    • 前2句,先求出每科平均分
    • 然后求出每位学生高于平均分的科目数量 count
    • 最后简单判断一下,即可得到结果

看看调用结果:

公众号文章插图

公众号文章插图

这时候,如果需要看 “8科成绩都超出该班级的平均分的学生”,则非常简单了:

公众号文章插图

    • 这些都是班内的“三好学生”

是不是 so easy?!

来看看有哪些学生需要留堂见家长。

“8科成绩都低于班内平均水平的学生”,仍然很简单:

公众号文章插图

    • 仅仅添加一个参数 sjs=0 ,即可得到结果

公众号文章插图

下期对标 Excel 的按添加批量赋值功能,看看在 pandas 中是如何实现。

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

扫描二维码

获取更多精彩

数据大宇宙

公众号文章插图