龙空技术网

被人忽悠学Python,却不能高效处理Excel数据?用pandas解决问题

外星人玩Python 1455

前言:

而今姐妹们对“python 处理表格真的那么厉害吗”都比较关心,姐妹们都需要学习一些“python 处理表格真的那么厉害吗”的相关文章。那么小编也在网摘上收集了一些有关“python 处理表格真的那么厉害吗””的相关内容,希望你们能喜欢,大家一起来了解一下吧!

转发本文并私信我"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开始

接着试试,"显示第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 中是如何实现。

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

标签: #python 处理表格真的那么厉害吗