python怎么筛选excel数据_懂Excel就能轻松入门Python数据分析包pandas(一):筛选功能...

后续更多干货资料,请转发、收藏、关注!!!

55e736d12f2eb938f79b2ab054dab430e4dd6f3f.jpeg?token=d576c8b02ef2bcec6e36786b87733c6d&s=741AC83384C07EEA4B54D6E40300E021

前言

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

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

数据

本文示例数据如下:

8326cffc1e178a82cd7a91c174bb4288a877e84f.jpeg?token=f0214e56b539d80ea5a5885a8eea0130&s=C9028C1A199DC8CA0E65A4DB0200C0B3

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

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

d1160924ab18972b6b08451f66754a8c9f510a76.jpeg?token=f2f43402bda5f70deb25e8a0c741fc23&s=69E093424FEEBF700C4DBD0C0000E0C3

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

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

2934349b033b5bb553741d76b56be43cb400bcd0.jpeg?token=68b89b6ecae8f6bac6270906450a042d&s=E800CD1A199548CA484DC4CA020010B1

为了与 pandas 行索引保持一致,这里添加的列值是从0开始接着试试,"显示第3至6行",如下:

faf2b2119313b07e716892a98f6fa02695dd8cfc.jpeg?token=72d9949ceac0af9b54ffc1b54b4357ca&s=E940CD1A09BFC8CE14508CC90300C0B3

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

4b90f603738da977e88d303a32e9c91c8718e3bb.jpeg?token=39c22d8a179c6f1957d4ad4c0e95f7aa&s=F018CC3A8185E0EA4C79D0CE0200D0B3

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

ac4bd11373f0820255aa8a85ca43cae8aa641b88.jpeg?token=d5130caa9bbe699f2c4dd8eb75d20671&s=68E2336643F1907B0E49900B0000F0C3

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

9e3df8dcd100baa1a482da8ec5a88817c9fc2e92.jpeg?token=1b7032f4cc8782afefebc85ccc1df576&s=ED268654481765CE063216D10300F0BC

按值过滤

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

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

359b033b5bb5c9eaaac5d046548187053bf3b39b.jpeg?token=8318f0567ad631ae21c464779f40e991&s=60E233665BA5824F4EC9B40F0000B0C1

df['sex'] ,就是性别列df['sex']=='M' ,语义清晰,性别等于M多条件也不在话下,"显示男性并且血型是A+",如下:

6159252dd42a2834eb23c2b4d90df8ef17cebfc2.jpeg?token=dad13654d0ba057278d7011772718caa

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

5bafa40f4bfbfbedfddfe9dafa48c633adc31fca.jpeg?token=c017371c0182e2654fc1c24d3961baac

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

500fd9f9d72a605923ef436daa8c059e023bba03.jpeg?token=577ec2284213327380f465163be92873

查询字符串可以直接用 in模式匹配

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

f603918fa0ec08fa15961f0cdb560c6857fbdac0.jpeg?token=474956e409095649217ebea908655e75&s=C810AD1A150F50EA56D880CA030080B3

0df431adcbef7609c7769ab4af6592c97dd99edd.jpeg?token=29455f1aba643178ec0c4295fcc4763c&s=2A8A7C22111A45C81E5DE5DB0000D0B3

pandas对应操作如下:

fc1f4134970a304e482403ab53709683c8175c9e.jpeg?token=0c150017fa44bb3216d0ad08751eab16

血型 列是文本类型,因此可以用 .str ,从而使用一系列文本快捷方法当然,pandas中的文本处理功能比Excel强大得多,来看看。"住址内容包含天津市3字"的记录。如下:

8d5494eef01f3a2928913e601b9d8d345d607c04.jpeg?token=c08d324978022de13f944d3514adbbf6

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

1e30e924b899a901531925559f2d3b7e0308f5e6.jpeg?token=3f81bdf5354563909d80927de53d0276&s=A1F263265BADB24D08C5D50B0000B0C1

contains 方法可以用正则表达式

7af40ad162d9f2d3370005552854bb166227ccb0.jpeg?token=7aa9333e1b6a75bad0880800e0ccbbfa&s=4CE1587E31A6611F99704048030070F2

值范围

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

9c16fdfaaf51f3de39f0dd261656c11a3b29796b.jpeg?token=4b0b9747f21b098162d53ad6f39e2a40

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

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

d8f9d72a6059252d32969147b523323e5ab5b92a.jpeg?token=b7e4c081e6077eab2f432352d55e7f8e&s=E9D083429FE0AB701471DC070000F0C1

冰山一角

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值