Pandas 筛选数据的 8 个神操作

日常用 Python做数据分析最常用到的就是查询筛选了,按各种条件、各种维度以及组合挑出我们想要的数据,以方便我们分析挖掘。

今天我给大家总结了日常查询和筛选常用的种骚操作,供各位学习参考。本文采用 sklearnboston数据举例介绍。 喜欢本文记得收藏、关注、点赞。

【注】完整代码、数据资料、文末提供技术交流群

from sklearn import datasets
import pandas as pd

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

Pandas 筛选数据的 8 个神操作

1. []

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

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

Pandas 筛选数据的 8 个神操作

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

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

Pandas 筛选数据的 8 个神操作

2. loc/iloc

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

比如下面这个例子,按条件筛选出数据,并筛选出指定变量,然后赋值。

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

Pandas 筛选数据的 8 个神操作

3. isin

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

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

Pandas 筛选数据的 8 个神操作

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

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

Pandas 筛选数据的 8 个神操作

4. str.contains

上面的举例都是 数值大小比较的筛选条件,除数值以外当然也有 字符串的查询需求pandas里实现字符串的模糊筛选,可以用 .str.contains()来实现,有点像在SQL语句里用的是 like

下面利用titanic的数据举例,筛选出人名中包含 Mrs或者 Lily的数据, |或逻辑符号在引号内。

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

Pandas 筛选数据的 8 个神操作

.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()

Pandas 筛选数据的 8 个神操作

也可以用 other赋给指定值。

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

Pandas 筛选数据的 8 个神操作

甚至还可以写组合条件。

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

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

Pandas 筛选数据的 8 个神操作

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

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

Pandas 筛选数据的 8 个神操作

6. query

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


train[train.Age > 25]

train.query('Age > 25')

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

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

Pandas 筛选数据的 8 个神操作

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

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

7. filter

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

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

下面举例介绍下。

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

Pandas 筛选数据的 8 个神操作
train.filter(regex='S', axis=1)

Pandas 筛选数据的 8 个神操作
train.filter(like='2', axis=0)

Pandas 筛选数据的 8 个神操作
train.filter(regex='^2', axis=0).filter(like='S', axis=1)

Pandas 筛选数据的 8 个神操作

8. any/all

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

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

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

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

Pandas 筛选数据的 8 个神操作

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

>>> train.isnull().any(axis=1).sum()
>>> 708

原创不易,欢迎点赞、留言、分享,支持我继续写下去。

推荐文章

技术交流

欢迎转载、收藏、有所收获点赞支持一下!

Pandas 筛选数据的 8 个神操作

目前开通了技术交流群,群友已超过 2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友

  • 方式①、发送如下图片至微信,长按识别,后台回复:加群;
  • 方式②、添加微信号: dkl88191,备注:来自CSDN
  • 方式③、微信搜索公众号: Python学习与数据挖掘,后台回复:加群

Pandas 筛选数据的 8 个神操作

Original: https://blog.csdn.net/qq_34160248/article/details/124390932
Author: Python数据挖掘
Title: Pandas 筛选数据的 8 个神操作

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/752645/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 关于flask入门教程-关于日期控件DateTimePicker

    DateTimePicker是基于JQuery的时间日期选择插件。只需要2行代码,即可轻松实现网页图形化日期时间选择器。 关于datetimepicker的使用,请参考https:…

    Python 2023年8月14日
    029
  • 自从学会了用python解析视频,都不用去找下载按钮在哪了,是真的方便

    以前看视频可能要到处找下载按钮,或者会有一些伪装的下载按钮,但一点击就会弹出广告,这会很可悲。 [En] In the past, when I watched a video, …

    Python 2023年5月24日
    044
  • python飞机大战简单的实现

    制作初衷 这几天闲来没事干,就想起来好长时间没做过游戏了,于是就想做一个游戏练练手,为了起到一个练习的目的就使用了自己不是太熟练的python这门语言来编写,代码都有备注,大家可以…

    Python 2023年9月18日
    077
  • 网络综合测试仪

    1.都有什么功能,他都可以测什么数据。 这里我们以TFN TT70 FT100智能网络测试平为例子,讲一下台提供全方位的通信技术连接和服务测试功能,可选,支持OTN, SDH/SO…

    Python 2023年10月4日
    055
  • 用Python批量获取世界各地视频,只有你喊不出名字的,没有我爬不到的

    import requests # 数据请求模块 pip install requests import re # 正则表达式模块 内置模块 url = ‘https://www….

    Python 2023年5月24日
    092
  • Python数据分析-绘图-1-Matplotlib绘图基础

    注:编码中用到的国民生产总值的数据可以在国家数据网站获得。 matplotlib图像可以分为如下四层结构: 1.canvas(画板):位于最底层,导入库时就存在。 2.figure…

    Python 2023年9月1日
    082
  • Python写的一个GUI界面的小说爬虫软件

    一个小说的爬虫,带GUI界面的 主要功能1.多线程提取 可使用代{过}{}过滤理2. 实时输出过程3. 一本书的txt文件 使用方法 许多人向蟒蛇学习,不知道从哪里开始。<d…

    Python 2023年5月24日
    090
  • 爬虫-7.Scrapy框架初级

    scrapy入门 Scrapy工作流程 名称作用Scrapy engine(引擎)总指挥:负责数据和信号的在不同模块间的传递Scheduler(调度器)一个队列,存放引擎发过来的r…

    Python 2023年10月1日
    059
  • 年底了,准备跳槽的可以看看

    前两天跟朋友感慨,今年的铜九铁十、裁员、疫情导致好多人都没拿到offer!现在已经12月了,具体明年的金三银四只剩下两个月。 对于想跳槽的职场人来说,绝对要从现在开始做准备了。这时…

    Python 2023年10月11日
    041
  • Python学习:如何使用pytest-mock(1)

    1.问题 使用 pytest做python代码的测试是很容易的,不过被测试代码对网络、数据库等远程服务有依赖,这种情况该如何快速方便的进行测试。 2.方案 python的unite…

    Python 2023年9月11日
    058
  • Pandas 横向数据汇总实例

    在某些情况下需要对Excel中的数据做横向汇总,此时使用Pandas的将体现出很强的优势,请看下面的数据: 表格中有5个子类别:类别1—-类别5,每一行中至少有1个类别…

    Python 2023年8月21日
    032
  • turtle画蟒蛇

    import turtle turtle.setup(650,350,200,200) turtle.penup() turtle.fd(-250) turtle.pendown(…

    Python 2023年9月19日
    054
  • TensorFlow 基础

    简介 这部分对 TensorFlow 的基础知识进行一个简单概述。下面的每一部分,都对应一个更详细的指南。 TensorFlow 是一个端到端的机器学习平台,支持: 基于多维数组的…

    Python 2023年8月28日
    064
  • 『 云原生·Docker』Docker中部署Nginx

    系列文章目录 &#x672C;&#x7CFB;&#x5217;&#x4E3B;&#x8981;&#x5206;&#x4E3A…

    Python 2023年9月28日
    035
  • Flask

    版本 flask&#x7248;&#x672C;&#xFF1A;1.1.4 jinjia2&#x7248;&#x672C;&#xFF…

    Python 2023年8月11日
    045
  • MySQL 学习笔记(五)–mysqldump

    mysqldump 与 –set-gtid-purged 设置 (1) mysqldump The mysqldump client utility performs …

    Python 2023年6月9日
    084
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球