
转发本文并私信我"python",即可获得Python资料以及各种心得(持续更新的)
前言
经常听别人说 Python 数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得要死 。后来才发现 , 原来不是 Python 数据处理厉害,而是他有数据分析神器—— pandas。Excel 自带筛选功能,可以对表格中进行各种条件筛选 。今天我们就用 pandas 看看怎么做到 Excel 的筛选功能,并且看看 Excel 也做不到的功能 。
数据
本文示例数据如下:
- 数据都是用代码生成的 , 就是一些个人信息数据
加载数据
pandas 需要加载 Excel 数据,非常容易,如下:
- import pandas as pd , 导入 pandas 包
- pd.read_excel ,即可加载 Excel 数据
- 指定文件路径,由于文件在 Python 脚本同目录,直接输入文件名即可
- sheet_name 指定读取哪个工作表
- 还有很多其他参数,我们这次的数据非常规范 , 因此不需要用到其他参数
按位置过滤
Excel 的筛选只能根据列值进行操作,因此我们在表格添加一序号列 。看图:
- 为了与 pandas 行索引保持一致,这里添加的列值是从0开始

- 功能卡"数据"页面,在"排序和筛选"中点击大大的"筛选"图标

- 点首行第一列的下角标签
- 默认是全选了,点一下"全选",即可取消所有选中的
- 分别点选对应的值即可
看看 pandas 中如何做到,如下:

- pandas 中的 DataFrame 自带行索引
- 直接使用 df.loc[2:5]

按值过滤
位置过滤太简单了 , 很少场景使用 。这次看看"显示所有男性"记录 。Excel 不介绍了,看看 pandas 怎么完成:

- df['sex'] ,就是性别列
- df['sex']=='M',语义清晰,性别等于M

当然 , 有更加简单的写法,如下:

- query 方法,可以直接接受一个查询字符串,是不是很像 Sql 呢
指定多个值也很简单,"血型是A 或B-",如下:

- 查询字符串可以直接用 in

模式匹配
太简单了?来个复杂一点的 。"血型值首字母是A"的记录 。Excel 中的筛选也是强大的,直接有此功能 。如下:

pandas 对应操作如下:

- 血型 列是文本类型,因此可以用 .str,从而使用一系列文本快捷方法

【被人忽悠学Python,却不能高效处理Excel数据?用pandas解决问题】什么 , Excel也可以?来看看下面这个需求就不寻常了 。"住址内容有 x座,x是字母a至c,大小写都算",看看 pandas 怎么做:

- contains 方法可以用正则表达式
值范围
"收入在5000至8000的男性",pandas 如下:
简单吧 。Excel 上操作也简单,不再展示 。
再看看这个需求 。"出生在 1980至1990 之间的男性"

冰山一角
Excel 的筛选功能无疑是强大的,不过 pandas 也很厉害 。想必有抬杠的小伙伴会说,既然 Excel 自带功能都有,用 pandas 干啥?当然是自动化啦 。并且 pandas 中有许多功能,在 Excel 中需要用复杂的函数公式或 Vba 才能实现 。下期看看 Excel 的高级筛选功能 , 在 pandas 中是如何实现 。
如果希望从零开始学习 pandas,那么可以看看我的 pandas 专栏 。
