前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >懂Excel也能轻松入门Python数据分析包pandas(二):高级筛选(下)

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

作者头像
Excel催化剂
发布2021-08-20 15:26:43
4420
发布2021-08-20 15:26:43
举报
文章被收录于专栏:Excel催化剂Excel催化剂

系列文章:

前言

经常听别人说 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 ,即可得到结果
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel催化剂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档