懂Excel就能轻松入门pandas(一):筛选功能

论坛 期权论坛 期权     
数据大宇宙   2019-7-27 13:23   2620   0





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

Excel 自带筛选功能,可以对表格中进行各种条件筛选。今天我们就用 pandas 看看怎么做到 Excel 的筛选功能,并且看看 Excel 也做不到的功能。

数据
本文示例数据如下:

  • 数据都是用代码生成的,就是一些个人信息数据




加载数据
pandas 需要加载 Excel 数据,非常容易,如下:


  • - import pandas as pd ,导入 pandas 包
  • - pd.read_excel ,即可加载 Excel 数据
  • - 指定文件路径,由于文件在 Python 脚本同目录,直接输入文件名即可
  • - sheet_name 指定读取哪个工作表
  • - 还有很多其他参数,我们这次的数据非常规范,因此不需要用到其他参数




按位置过滤
Excel 的筛选只能根据列值进行操作,因此我们在表格添加一序号列。看图:

  • - 为了与 pandas 行索引保持一致,这里添加的列值是从0开始

接着试试,"显示第3至6行",如下:

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


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



看看 pandas 中如何做到,如下:

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

按值过滤
位置过滤太简单了,很少场景使用。这次看看"显示所有男性"记录。

Excel 不介绍了,看看 pandas 怎么完成:

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

多条件也不在话下,"显示男性并且血型是A+",如下:





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


  • - query 方法,可以直接接受一个查询字符串,是不是很像 Sql 呢



指定多个值也很简单,"血型是A+或B-",如下:


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




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





pandas 对应操作如下:


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

当然,pandas 中的文本处理功能比 Excel 强大得多,来看看。
"住址内容包含 天津市 3字"的记录。如下:



什么,Excel也可以?来看看下面这个需求就不寻常了。
"住址内容有 x座 ,x是字母a至c,大小写都算",看看 pandas 怎么做:

  • - contains 方法可以用正则表达式

值范围
"收入在5000至8000的男性",pandas 如下:



简单吧。Excel 上操作也简单,不再展示。

再看看这个需求。
"出生在 1980至1990 之间的男性"





冰山一角
Excel 的筛选功能无疑是强大的,不过 pandas 也很厉害。想必有抬杠的小伙伴会说,既然 Excel 自带功能都有,用 pandas 干啥?当然是自动化啦。并且 pandas 中有许多功能,在 Excel 中需要用复杂的函数公式或 Vba 才能实现。

下期看看 Excel 的高级筛选功能,在 pandas 中是如何实现。

发送 "数据处理" 获取本文案例数据和源码


扫描二维码
获取更多精彩
数据大宇宙
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP