侵权投诉

pandas筛选数据的8个小技巧

数据分析与开发 2021-09-26 11:04 次阅读

日常用Python做数据分析最常用到的就是查询筛选了,按各种条件、各种维度以及组合挑出我们想要的数据,以方便我们分析挖掘。东哥总结了日常查询和筛选常用的种骚操作,供各位学习参考。本文采用sklearnboston数据举例介绍。

fromsklearnimportdatasets
importpandasaspd

boston=datasets.load_boston()
df=pd.DataFrame(boston.data,columns=boston.feature_names)

9f72463a-1114-11ec-8fb8-12bb97331649.png

1. []

第一种是最快捷方便的,直接在dataframe的[]中写筛选的条件或者组合条件。比如下面,想要筛选出大于NOX这变量平均值的所有数据,然后按NOX降序排序。

df[df['NOX']>df['NOX'].mean()].sort_values(by='NOX',ascending=False).head()

9f8862e4-1114-11ec-8fb8-12bb97331649.png

当然,也可以使用组合条件,条件之间使用逻辑符号& |等。比如下面这个例子除了上面条件外再加上且条件CHAS为1,注意逻辑符号分开的条件要用()隔开。

df[(df['NOX']>df['NOX'].mean())&(df['CHAS']==1)].sort_values(by='NOX',ascending=False).head()

9f96c9ba-1114-11ec-8fb8-12bb97331649.png

2. loc/iloc

[]之外,loc/iloc应该是最常用的两种查询方法了。loc按标签值(列名和行索引取值)访问,iloc按数字索引访问,均支持单值访问或切片查询。除了可以像[]按条件筛选数据以外,loc还可以指定返回的列变量,**从行和列两个维度筛选。**比如下面这个例子,按条件筛选出数据,并筛选出指定变量,然后赋值。

df.loc[(df['NOX']>df['NOX'].mean()),['CHAS']]=2

9fae84a6-1114-11ec-8fb8-12bb97331649.png

3. isin

上面我们筛选条件< > == !=都是个范围,但很多时候是需要锁定某些具体的值的,这时候就需要isin了。比如我们要限定NOX取值只能为0.538,0.713,0.437中时。

df.loc[df['NOX'].isin([0.538,0.713,0.437]),:].sample(5)

9fbd671e-1114-11ec-8fb8-12bb97331649.png

当然,也可以做取反操作,在筛选条件前加~符号即可。

df.loc[~df['NOX'].isin([0.538,0.713,0.437]),:].sample(5)

9fcf1112-1114-11ec-8fb8-12bb97331649.png

4. str.contains

上面的举例都是数值大小比较的筛选条件,除数值以外当然也有字符串的查询需求pandas里实现字符串的模糊筛选,可以用.str.contains()来实现,有点像在SQL语句里用的是like。下面利用titanic的数据举例,筛选出人名中包含Mrs或者Lily的数据,|或逻辑符号在引号内。

train.loc[train['Name'].str.contains('Mrs|Lily'),:].head()

9fe358de-1114-11ec-8fb8-12bb97331649.png

.str.contains()中还可以设置正则化筛选逻辑。

  • case=True:使用case指定区分大小写
  • na=True:就表示把有NAN的转换为布尔值True
  • flags=re.IGNORECASE:标志传递到re模块,例如re.IGNORECASE
  • regex=True:regex :如果为True,则假定第一个字符串是正则表达式,否则还是字符串

5. where/mask

在SQL里,我们知道where的功能是要把满足条件的筛选出来。pandas中where也是筛选,但用法稍有不同。where接受的条件需要是布尔类型的,如果不满足匹配条件,就被赋值为默认的NaN或其他指定值。举例如下,将Sexmale当作筛选条件,cond就是一列布尔型的Series,非male的值就都被赋值为默认的NaN空值了。

cond=train['Sex']=='male'
train['Sex'].where(cond,inplace=True)
train.head()

9ff0217c-1114-11ec-8fb8-12bb97331649.png

也可以用other赋给指定值。

cond=train['Sex']=='male'
train['Sex'].where(cond,other='FEMALE',inplace=True)

9ffc2c10-1114-11ec-8fb8-12bb97331649.png

甚至还可以写组合条件。

train['quality']=''
traincond1=train['Sex']=='male'
cond2=train['Age']>25

train['quality'].where(cond1&cond2,other='低质量男性',inplace=True)

a00930cc-1114-11ec-8fb8-12bb97331649.png

maskwhere是一对操作,与where正好反过来。

train['quality'].mask(cond1&cond2,other='低质量男性',inplace=True)

a0174b8a-1114-11ec-8fb8-12bb97331649.png

6. query

这是一种非常优雅的筛选数据方式。所有的筛选操作都在''之内完成。

#常用方式
train[train.Age>25]
#query方式
train.query('Age>25')

上面的两种方式效果上是一样的。再比如复杂点的,加入上面的str.contains用法的组合条件,注意条件里有''时,两边要用""包住。

train.query("Name.str.contains('William')&Age>25")

a02756e2-1114-11ec-8fb8-12bb97331649.png

query里还可以通过@来设定变量。

name='William'
train.query("Name.str.contains(@name)")

7. filter

filter是另外一个独特的筛选功能。filter不筛选具体数据,而是筛选特定的行或列。它支持三种筛选方式:

  • items:固定列名
  • regex:正则表达式
  • like:以及模糊查询
  • axis:控制是行index或列columns的查询

下面举例介绍下。

train.filter(items=['Age','Sex'])

train.filter(regex='S',axis=1)#列名包含S的

train.filter(like='2',axis=0)#索引中有2的

a052a612-1114-11ec-8fb8-12bb97331649.png

train.filter(regex='^2',axis=0).filter(like='S',axis=1)

8. any/all

any方法意思是,如果至少有一个值为True结果便为Trueall需要所有值为True结果才为True,比如下面这样。

>>train['Cabin'].all()
>>False
>>train['Cabin'].any()
>>True

anyall一般是需要和其它操作配合使用的,比如查看每列的空值情况。

train.isnull().any(axis=0)

a088f6b8-1114-11ec-8fb8-12bb97331649.png

再比如查看含有空值的行数。

>>>train.isnull().any(axis=1).sum()
>>>708
编辑:jq

原文标题:pandas 筛选数据的 8 个骚操作

文章出处:【微信号:DBDevs,微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

华为创新性地推出“5G新通话”解决方案
在北京国家会议中心举行的2021年中国国际信息通信展览会上,由中国通信企业协会发起的“ICT中国(2....
的头像 华为云核心网 发表于 10-15 17:27 271次 阅读
华为发布SD-WAN逐包负载分担方案 提升带宽利用率
华为SD-WAN逐包负载分担方案,提升带宽利用率至90%,让您的广域网络更加高效。
的头像 华为产品资料 发表于 10-15 16:44 203次 阅读
教大家如何减小微量水分策略的结果中的误差
微量水分测定仪采用卡尔——菲休库仑法,对不同物质进行微量水分测定,是一种可靠的方法,微量水分测定仪成....
发表于 10-15 16:39 19次 阅读
详解工业液体密度测试步骤
业液体通常需要进行液体密度的测试来加以控制品质。行业内的测试仪就是搏仕的液体密度测试仪了。下面将演示....
发表于 10-15 16:27 14次 阅读
音频电路原理(双音频解码电子电路/TDA2822双声道功放电路/音频放大处理电路)
双音多频信号解码电路是目前在按键电话(固定电话、移动电话)、程控交换机及无线通信设备中广泛应用的集成....
发表于 10-15 16:08 446次 阅读
音频电路原理(双音频解码电子电路/TDA2822双声道功放电路/音频放大处理电路)
浅析压敏(热敏)陶瓷粉末水分测试实验报告
厦门搏仕检测设备有限公司  www.lboshi.cn 18959266236 陶瓷粉末水分含量介绍....
发表于 10-15 15:57 13次 阅读
探究塑料颗粒密度测试仪实验报告
密度计品牌:搏仕 型号:BOS-300系列 测试品:塑料颗粒 塑料种类纷多,密度值各不相同,如PP料....
发表于 10-15 15:47 13次 阅读
塑料水分测定仪测试经验总结
厦门搏仕检测设备有限公司  www.lboshi.cn 18959266236 塑料水分测定仪针对不....
发表于 10-15 15:38 15次 阅读
剖析汽车塑料零配件水分测试仪实验
水分仪品牌:搏仕     型号:BOS-180A系列     测试品:汽车塑料片 塑料的含水量是影响....
发表于 10-15 15:23 10次 阅读
四维图新构建现实世界三维还原的能力赋能智能网联应用
实时构建现实世界三维还原,将物理世界数字化,是四维图新近20年来一直努力的方向,通过对物理世界的人、....
的头像 四维图新NavInfo 发表于 10-15 14:40 772次 阅读
关于Python18个你不知道的高效编程技巧
初识Python语言,觉得python满足了我上学时候对编程语言的所有要求。python语言的高效编....
的头像 马哥Linux运维 发表于 10-15 11:23 164次 阅读
完整关注跨模态转换器网络
舞蹈是几乎所有文化中的一种通用语言,也是如今许多人在当代媒体平台上表达自己的一种方式。跳舞的能力(组....
的头像 TensorFlow 发表于 10-15 10:25 110次 阅读
MySQL缓冲区设计介绍
1. Buffer 与 cache 的区别? Bbuffer 与 Cache 非常类似,因为它们都用....
的头像 数据分析与开发 发表于 10-15 09:50 93次 阅读
pandasgui安装与简单使用
pandasgui安装与简单使用 根据作者的介绍,pandasgui是用于分析 Pandas Dat....
的头像 数据分析与开发 发表于 10-15 09:46 94次 阅读
交换模式与路由模式有哪些异同点
交换模式是什么?路由模式又是什么? 交换模式与路由模式有哪些异同点? ...
发表于 10-15 09:35 0次 阅读
采集与分析用户行为数据的意义
本文属于用户行为数据领域入门级别文章,适合对用户行为数据略知一二但是对这个主题非常感兴趣的同学。 1....
的头像 数据分析与开发 发表于 10-15 09:32 122次 阅读
JD-BQX7 七参数便携式气象站功能有哪些
七参数便携式气象站功能有哪些?在清凉谷旅游风景区的监测使用,满足风景区气象监测服务的需求,使得清凉谷....
发表于 10-14 16:29 34次 阅读
智慧电梯的运用能解决行业哪些需求
电梯作为与百姓生活最为密切相关的特种设备,直接关系人民群众生命和财产安全,关系经济发展大局和社会和谐....
发表于 10-14 16:28 20次 阅读
IBM利用AI 驱动帮助气候和数据科学家分析海量环境数据集
IBM (纽交所证券代码:IBM) 发布了一套环境智能应用软件,利用 AI 帮助企业做好准备并应对可....
的头像 IBM中国 发表于 10-14 16:01 690次 阅读
食品检测设备有哪些,其用途是什么
食品检测设备【恒美】有哪些,随着国家经济的大幅提高以及居民消费水平的普遍提高,休闲食品的食品种类与数....
发表于 10-14 10:43 24次 阅读
食品检测仪的工作原理及使用方法
食品检测仪【恒美 HM-G1200】的操作原理及方法。食品检测仪【恒美 HM-G1200】因其体积小....
发表于 10-14 10:29 15次 阅读
TableSQL API和Pyhton上相关的性能优化
一、简介 1.14 新版本原本规划有 35 个比较重要的新特性以及优化工作,目前已经有 26 个工作....
的头像 数据分析与开发 发表于 10-13 17:25 136次 阅读
胶水固含量测试注意事项
厦门搏仕检测设备有限公司  www.lboshi.cn 18959266236 1、无论是高粘性胶水....
发表于 10-13 16:16 32次 阅读
神经网络复杂性的基本下界
最近,人们对深度神经网络产生了极大的兴趣,因为它们在计算机视觉等领域取得了突破性的成果。 尽管如此,....
的头像 人工智能与大数据技术 发表于 10-13 15:40 158次 阅读
神经网络复杂性的基本下界
将FSoE部署到安全系统时面临的挑战
今年,瑞萨将高度关注Functional Safety over EtherCAT (FSoE) 解....
的头像 瑞萨电子 发表于 10-13 14:23 122次 阅读
浅谈商业智能BI给企业带来的价值
整体分析问题BI可以将企业信息化的数据孤岛整合起来,提供一个全局的视图,让决策者可以更加全面地看待问....
发表于 10-13 13:57 25次 阅读
IP知识百科之带你全面了解VPN技术
VPN是什么 VPN(Virtual Private Network)是依靠Internet服务提供....
的头像 华为产品资料 发表于 10-13 11:11 171次 阅读
红外遥控这么简单让我看看还有谁不会
平时我们经常会用到遥控器,那么现在遥控器也分很多种类,有使用红外通信的,也有使用蓝牙,无线的等,今天....
的头像 单片机匠人 发表于 10-13 11:06 247次 阅读
eBPF技术应用云原生网络实践系列之基于socket的service
背景介绍 Kubernetes 中的网络功能,主要包括 POD 网络,service 网络和网络策略....
的头像 Linux阅码场 发表于 10-13 10:54 200次 阅读
eBPF技术应用云原生网络实践系列之基于socket的service
汽车以太网数据通道的研究和发现
大家好!之前小编给大家做了两期汽车以太网的介绍,反响特别好,今天我们继续进行汽车以太网的探讨吧~ 由....
的头像 罗森伯格汽车电子 发表于 10-13 10:32 172次 阅读
汽车以太网数据通道的研究和发现
用Python实现3D地图教程
前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题....
的头像 马哥Linux运维 发表于 10-13 10:09 154次 阅读
用Python实现3D地图教程
关于Python对交通路口的红绿灯进行颜色检测
转自 |   Python联盟 1.视频读取 首先把视频读取进来,因为我测试的视频是4k的所以我用r....
的头像 新机器视觉 发表于 10-13 09:32 210次 阅读
关于Python对交通路口的红绿灯进行颜色检测
LiDAR测量物料体积能为行业带来哪些变化
在商业化竞争日益激烈的环境下,任何提高运营效率的机会对公司来说都是宝贵的。包括对原材料的精准测量和追....
的头像 广州虹科电子科技有限公司 发表于 10-13 09:11 156次 阅读
禹山便携式溶氧传感器的使用方法
禹山便携式溶氧传感器采用了国际领先的荧光寿命技术,其基于物理学中特定物质对活性荧光的猝熄原理。这种荧....
发表于 10-12 16:43 22次 阅读
如何制作数据可视化大屏
经常有小伙伴问,如何制作数据可视化大屏? 今天将手把手带你爬取奥运会相关信息,并利用 可视化大屏 为....
的头像 Linux爱好者 发表于 10-12 16:31 134次 阅读
如何制作数据可视化大屏
全方位解析FlinkSQL的实现原理
主要内容本篇主要从FlinkSQL实现的内核与原理,工作流等的视角带大家构建一幅FlinkSQL全景....
的头像 数据分析与开发 发表于 10-12 14:32 159次 阅读
全方位解析FlinkSQL的实现原理
美政府索要芯片数据原因之一被公开 剑指中国大陆车用芯片产业链
前不久,美政府组织召开了第三轮半导体峰会,依然是为了解决目前严重的缺芯问题。在这一轮峰会上,美政府要....
的头像 电子发烧友网 发表于 10-12 14:31 293次 阅读
什么是MicroPython 它能做什么有什么局限
随着Python成为主流的编程语言,MicroPython在嵌入式系统领域也越来越热门起来,尤其是大....
的头像 电子森林 发表于 10-12 11:44 214次 阅读
SATA连接器:低成本下的高连接性
电子发烧友网报道(文/李宁远)SATA连接器,作为连接器细分种类之一,广泛应用于PC、SSD、服务器....
的头像 电子发烧友网 发表于 10-12 10:49 246次 阅读
10具有挑战性的Python项目创意
你知道 Python 是被称为 全能编程语言 的吗?是的,它确实是,虽然不应该在每个项目中都使用它。....
的头像 Android编程精选 发表于 10-12 10:43 234次 阅读
全项目食品安全检测仪的检测项目
全项目食品安全检测仪检测项目,全项目食品安全检测仪【恒美HM-G1200】可以在餐饮行业、学校工厂食....
发表于 10-12 09:48 33次 阅读
如何把Python和Excel两大数据工具进行集成
  这次我们会介绍如何使用xlwings将Python和Excel两大数据工具进行集成,更便捷地处理....
的头像 数据分析与开发 发表于 10-12 09:41 143次 阅读
如何把Python和Excel两大数据工具进行集成
如何在Colab中使用SQL
如今,编码测试在数据科学面试过程中几乎是标准的。 作为一名数据科学招聘经理,我发现一个20-30分钟....
的头像 智能感知与物联网技术研究所 发表于 10-12 09:39 156次 阅读
如何在Colab中使用SQL
Python开发中Pycharm的实用小技巧
  Pycharm作为Python开发最常用的IDE之一,不仅兼容性好,而且功能也相当丰富,比如调试....
的头像 马哥Linux运维 发表于 10-12 09:36 128次 阅读
C++中的背包问题说明和源码示例
  问题说明 有N件物品和一个容量为V的背包。 第i件物品的重量是w[i],价值是v[i]。 求解将....
的头像 C语言编程学习基地 发表于 10-12 09:27 118次 阅读
Python的时间处理模块中处理日期与时间的全面总结
Python的时间处理模块在日常的使用中用的较多,但是使用的时候基本上都是要查资料,还是有些麻烦的,....
的头像 马哥Linux运维 发表于 10-12 09:24 174次 阅读
Python的时间处理模块中处理日期与时间的全面总结
探究Redis 性能测试与监控
很多人在安装部署好Redis后,就没有对Rredis的配置和部署等有效性和高可用性进行性能测试,最终....
的头像 马哥Linux运维 发表于 10-12 09:19 186次 阅读
探究Redis 性能测试与监控
IPv6+ 引领下一代互联网技术创新之路
今日,由推进IPv6规模部署专家委员会主办的“2021中国IPv6创新发展大会”在北京召开。本次大会....
的头像 华为数据通信 发表于 10-12 09:09 234次 阅读
IPv6+ 引领下一代互联网技术创新之路
超大Transformer语言模型的分布式训练框架
NVIDIA Megatron 是一个基于 PyTorch 的框架,用于训练基于 Transform....
的头像 NVIDIA英伟达企业解决方案 发表于 10-11 16:46 120次 阅读
超大Transformer语言模型的分布式训练框架
Python中最常用的几种线程锁你会用吗
前言本文将继续围绕 threading 模块讲解,基本上是纯理论偏多。 对于日常开发者来讲很少会使用....
的头像 马哥Linux运维 发表于 10-11 16:07 145次 阅读
Python入门知识汇总
Python代码生成EXE文件的方法是什么?
发表于 10-11 06:00 0次 阅读
什么是Python中的流程控制?
什么是Python中的流程控制?
发表于 10-09 07:24 0次 阅读
ARM架构的数据类型定义是什么
ARM架构的数据类型定义是什么? 局部变量和全局变量是什么意思? ...
发表于 10-09 06:32 0次 阅读
常量和变量有哪些区别
引用和拷贝有什么区别? 常量和变量有哪些区别? ...
发表于 10-08 08:42 0次 阅读
Python提供了几个级别访问的网络服务呢
Python提供了几个级别访问的网络服务呢?
发表于 09-30 08:09 0次 阅读
VS2017是如何实现串口发送及接收数据的
VS2017是如何实现串口发送及接收数据的?有哪些操作步骤? ...
发表于 09-30 07:04 0次 阅读
怎样使用代码来访问PLC数据
如何配置网络参数?怎样使用代码来访问PLC数据? 如何使用gitHub开源的组件技术来读写西门子plc数据? ...
发表于 09-29 07:42 0次 阅读
怎样使用gitHub开源的组件技术来读写三菱的plc数据
如何配置网络参数?怎样使用代码来访问PLC数据? 怎样使用gitHub开源的组件技术来读写三菱的plc数据? ...
发表于 09-29 06:03 0次 阅读
怎样去实现一种基于Python的OPC UA编程
怎样去实现一种基于Python的OPC UA编程? 如何通过FreeOpcUa创建自己的地址空间? ...
发表于 09-28 09:35 0次 阅读