1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 懂Excel也能轻松入门Python数据分析包pandas(二):高级筛选(下)

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

时间:2023-01-07 05:48:41

相关推荐

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

关注、转发、收藏,更多干货等着你

系列文章:

懂Excel也能轻松入门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 专栏。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。