前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >对比Excel,更强大的Python pandas筛选

对比Excel,更强大的Python pandas筛选

作者头像
fanjy
发布2022-04-13 14:20:12
发布2022-04-13 14:20:12
3.9K00
代码可运行
举报
文章被收录于专栏:完美Excel完美Excel
运行总次数:0
代码可运行

标签:Python与Excel,pandas

能够对数据进行切片和切分对于处理数据至关重要。与Excel中的筛选类似,我们还可以在数据框架上应用筛选,唯一的区别是Python pandas中的筛选功能更强大、效率更高。可能你对一个500k行的Excel电子表格应用筛选的时候,会花费你很长的时间,此时,应该考虑学习运用一种更有效的工具——Python。

准备用于演示的数据框架

同样,我们使用原来用过的世界500强数据集。首先,我们将激活pandas并从百度百科加载数据。

代码语言:javascript
代码运行次数:0
运行
复制
import pandas as pd
df =pd.read_html('https://baike.baidu.com/item/%E4%B8%96%E7%95%8C500%E5%BC%BA/640042?fr=aladdin')[1]

按单个条件筛选数据框架

从世界500强列表中选择中公司,我们可以使用.loc[]来实现。注意,这里使用的是方括号而不是括号()。基本引用如下所示:

df.loc[column == ‘条件’]

图1

结果是一个新的数据框架,包含110家属于中国的公司。此数据框架包括原始数据集中的所有列,我们可以将其作为一个独立的表(数据框架)使用,而不需要额外的步骤(例如,如果我们在Excel中进行筛选后,需要将其复制到另一个工作表或删除其他行以使其成为“一个表”)。

如果不需要新数据框架中的所有列,只需将所需的列名传递到.loc[]中即可。例如,仅需要选择最新排名、公司名称和营业收入,我们可以执行以下操作。注意,它只返回我们指定的3列。

图2

发生了什么(原理)

了解事情究竟是怎么发生的很重要,这将帮助我们理解如何在pandas上使用筛选。

我们传递给loc[]的条件:df['总部所在国家'] == '中国',实际上是一个布尔索引,它是一个True值或False值列表。上面的代码行翻译为:对于每一行,如果“总部所在国家”是“中国”,则评估为Ture,否则为False。

为了更好地形象化这个思想,让我展示一下在Excel中它是什么样子。看看下面的Excel屏幕截图,添加了一个新列,名为“是否中国”,还使用了一个简单的IF公式来评估一行是否“总部所在国家”为中国,该公式返回1或0。实际上,我正在检查每一行的值。完成公式检查后,我可以筛选”是否中国”列,然后选择值为1的所有行。

图3

Python使用了一种类似的方法,让我们来看看布尔索引到底是什么。

图4

注意上面代码片段的底部——长度:500。上面的代码行创建了一个列表,该列表的长度与数据框架本身相同,并用True或False填充。这基本上就是我们在Excel中所做的。当你将这个布尔索引传递到df.loc[]中时,它将只返回有真值的行(即,从Excel筛选中选择1),值为False的行将被删除。

在现实生活中,我们经常需要根据多个条件进行筛选,接下来,我们将介绍如何在pandas中进行一些高级筛选。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

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

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

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