【Python】数据分析+数据挖掘——探索Pandas中的数据筛选

这篇具有很好参考价值的文章主要介绍了【Python】数据分析+数据挖掘——探索Pandas中的数据筛选。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 前言

当涉及数据处理和分析时,Pandas是Python编程语言中最强大、灵活且广泛使用的工具之一。Pandas提供了丰富的功能和方法,使得数据的选择、筛选和处理变得简单而高效。在本博客中,我们将重点介绍Pandas中数据筛选的关键知识点,包括条件索引、逻辑操作符、query()方法以及其他一些常用技巧~


2. 筛选

在Python和Pandas库中,索引是一种用于标识和访问数据的重要概念。索引可以是整数、标签、日期等类型,它允许我们按照指定的标记来查找、选择和操作数据。本文重点介绍的是Pandas中的筛选操作,我们先来简单回顾一下Python中一些筛选的相关操作。

在Python中列表、元组、字符串、字典都是支持索引的数据结构。索引从0开始,表示数据元素在序列中的位置。



例如,对于列表可以通过list[0]来访问列表的一个元素

In[0]:

list_filter = [1,2,3,4,5]
print(list_filter[0])
print(list_filter[1])

out[0]:

1
2


对于字符串,也可以使用索引来访问单个字符

In[1]:

string_filter = "hello"
print(string_filter[0])
print(string_filter[1])

out[1]:

h
e


对于元组亦是如此

In[2]:

tuple_filter = (1, 2, 3, 4)
print(tuple_filter[0])
print(tuple_filter[2])

out[2]:

1
3


对于字典则是可以通过’‘键’'来索引字典中的值

In[3]:

dict_filter = {'1': 'one', '2': 'two', '3': 'three'}
print(dict_filter['1']) 
print(dict_filter['2']) 

out[3]:

one
two

除此之外你也可以通过切片索引、负数索引来进行筛选操作在此就不在赘述了


案例数据表university_rank.csv

【Python】数据分析+数据挖掘——探索Pandas中的数据筛选,Python,数据挖掘,python,数据分析

2.1 整数位置索引筛选

df.iloc是Pandas中用于整数位置索引(Integer Location Indexing)的一种属性,用于访问DataFrame或Series中的数据。iloc允许你使用整数位置来选择特定的行和列,类似于Python中的列表索引。



语法 df.iloc[row_index, column_index] 其中的row_index和column_index可以是单个整数、切片或者列表

我们先来尝试一下整行筛选

df.iloc[<start_loc>:<end_loc>],这里需要注意的是end_loc是取不到的,比如df.iloc[0:2],从0开始,只能取到0,1。

In[4]:

import pandas as pd
df = pd.read_csv("university_rank.csv") # 读取案例数据表
df # 展示数据表,跟print一样的作用

out[4]:

大学名称 排名 地区 学科领域 排名依据
0 哈佛大学 1 北美 工程 学术声誉
1 牛津大学 2 欧洲 医学 科研产出
2 北京大学 3 亚洲 商学 国际影响力
3 悉尼大学 4 大洋洲 计算机科学 教学质量
4 圣保罗大学 5 南美 艺术 学生满意度
... ... ... ... ... ...
95 圣保罗国立大学 96 南美 计算机科学 研究生录取率
96 约翰内斯堡大学 97 非洲 环境科学 学术声誉
97 麦吉尔大学 98 北美 艺术 学生满意度
98 伦敦政治经济学院 99 欧洲 法律 国际影响力
99 东京大学 100 亚洲 教育 毕业生就业率

100 rows × 5 columns



In[5]:

df.iloc[0:2] # 对案例数据表进行整行筛选

out[5]:

大学名称 排名 地区 学科领域 排名依据
0 哈佛大学 1 北美 工程 学术声誉
1 牛津大学 2 欧洲 医学 科研产出


行能切边,那列能不能切片呢?答案当然是能,只需要用’ , '来分割行列之间的索引即可。

In[6]:

df.iloc[0:2, 0:3]

out[6]:

大学名称 排名 地区
0 哈佛大学 1 北美
1 牛津大学 2 欧洲


补充:我们知道在Pandas中不仅有DataFrame还有Series,在Series中我们也可以使用df.iloc[index]来进行索引,其中index可以是单个整数、切片或者列表

In[7]:

data = [1, 2, 3, 4, 5]
series = pd.Series(data) # 创建一个Series类型的数据

# 使用整数位置索引访问数据
print(series.iloc[0])
print(series.iloc[1:3])

out[7]:

1
2,3

2.2 标签索引筛选

df.loc是Pandas中用于标签索引的一种属性,用于访问DataFrame或Series中的数据。loc允许你使用标签来选择特定的行和列,这使得索引更加灵活,可以根据标签选择数据,也可以使用条件来筛选。

语法 df.loc[row_label, column_label] 其中的row_label和column_label可以是单个整数、切片或者列表

我们先来尝试一下整行筛选,df.loc 与绝对值筛选的区别是,若使用df.loc[0:4],那么将会筛选从索引为0,到索引为4的所有列

In[8]:

df.loc[0:4]

out[8]:

大学名称 排名 地区 学科领域 排名依据
0 哈佛大学 1 北美 工程 学术声誉
1 牛津大学 2 欧洲 医学 科研产出
2 北京大学 3 亚洲 商学 国际影响力
3 悉尼大学 4 大洋洲 计算机科学 教学质量
4 圣保罗大学 5 南美 艺术 学生满意度


如果不想要[0:4]中间的部分,只想要index=0 和 index=4的行,给它们中间的’:‘换成’,'加一个列表嵌套就行,简单来说就是使用标签列表来筛选

In[9]:

df.loc[[0, 4]]

out[9]:

大学名称 排名 地区 学科领域 排名依据
0 哈佛大学 1 北美 工程 学术声誉
4 圣保罗大学 5 南美 艺术 学生满意度

在此就不再赘述Series的df.loc了基本用法与上类似,不过是从多维转为了一维而已。


2.3 多重索引筛选

df.xs是Pandas中的一种方法,用于在DataFrame中根据指定的标签或位置(行或列)获取跨越多个层次的数据。它主要用于处理具有多层索引的DataFrame

df.xs(
	# 要获取的行或列的标签或位置
    key, 
    # 可选参数,用于指定获取行还是列。默认为行,也可以设置为1(列)
    axis = 0,
    # 可选参数,用于指定多层索引的级别。只在有层次化索引时才需要设置
    level, 
    # 可选参数,指定是否丢弃返回结果中的索引级别,默认为True
    drop_level = True
)

In[10]:

df = pd.read_csv("university_rank.csv", index_col=["排名", "地区"]) # 读取案例数据表并设置双重索引
df

out[10]:

大学名称 学科领域 排名依据
排名 地区
1 北美 哈佛大学 工程 学术声誉
2 欧洲 牛津大学 医学 科研产出
3 亚洲 北京大学 商学 国际影响力
4 大洋洲 悉尼大学 计算机科学 教学质量
5 南美 圣保罗大学 艺术 学生满意度
... ... ... ... ...
96 南美 圣保罗国立大学 计算机科学 研究生录取率
97 非洲 约翰内斯堡大学 环境科学 学术声誉
98 北美 麦吉尔大学 艺术 学生满意度
99 欧洲 伦敦政治经济学院 法律 国际影响力
100 亚洲 东京大学 教育 毕业生就业率

100 rows × 3 columns



In[11]:

df.xs('北美', level=1)

out[11]:

大学名称 学科领域 排名依据
排名
1 哈佛大学 工程 学术声誉
7 麦吉尔大学 教育 校友网络
11 斯坦福大学 工程 研究成果
17 麦吉尔大学 教育 毕业生就业率
21 加州理工学院 工程 学术声誉
28 麦吉尔大学 医学 教学质量
32 斯坦福大学 经济学 校友网络
38 麦吉尔大学 艺术 学生满意度
42 加州理工学院 社会科学 校友网络
48 麦吉尔大学 艺术 学生满意度
52 斯坦福大学 社会科学 校友网络
58 麦吉尔大学 艺术 学生满意度
62 加州理工学院 社会科学 校友网络
68 麦吉尔大学 艺术 学生满意度
72 斯坦福大学 社会科学 校友网络
78 麦吉尔大学 艺术 学生满意度
82 加州理工学院 社会科学 校友网络
88 麦吉尔大学 艺术 学生满意度
92 斯坦福大学 社会科学 校友网络
98 麦吉尔大学 艺术 学生满意度

2.4 多条件索引筛选

在Pandas中,你可以使用多个条件来进行多条件索引。有几种方法可以实现多条件索引,其中一些常用的方法如下

  • 使用&|操作符: 你可以使用&表示"与"条件,|表示"或"条件。通过将条件括在圆括号中,可以确保优先级正确
  • 使用query()方法: query()方法允许你使用字符串表示多个条件,更加直观和简洁
  • 使用isin()方法: isin()方法允许你检查某一列是否包含指定的多个值,然后将条件应用于DataFrame

2.4.1 使用&|操作符

语法df[(option_one) &/| (option_two)...] 其中option_one和option_two都是筛选的条件,结果取决于中间的连接符

In[12]:

df = pd.read_csv("university_rank.csv") # 读取一下案例数据表
df

out[12]:

大学名称 排名 地区 学科领域 排名依据
0 哈佛大学 1 北美 工程 学术声誉
1 牛津大学 2 欧洲 医学 科研产出
2 北京大学 3 亚洲 商学 国际影响力
3 悉尼大学 4 大洋洲 计算机科学 教学质量
4 圣保罗大学 5 南美 艺术 学生满意度
... ... ... ... ... ...
95 圣保罗国立大学 96 南美 计算机科学 研究生录取率
96 约翰内斯堡大学 97 非洲 环境科学 学术声誉
97 麦吉尔大学 98 北美 艺术 学生满意度
98 伦敦政治经济学院 99 欧洲 法律 国际影响力
99 东京大学 100 亚洲 教育 毕业生就业率

100 rows × 5 columns



In[13]:

df[(df.排名 >= 6) & (df.排名 <= 10)] # 使用多条件筛选

out[13]:

大学名称 排名 地区 学科领域 排名依据
5 约翰内斯堡大学 6 非洲 法律 毕业生就业率
6 麦吉尔大学 7 北美 教育 校友网络
7 伦敦政治经济学院 8 欧洲 经济学 国际化程度
8 东京大学 9 亚洲 社会科学 研究生录取率
9 澳大利亚国立大学 10 大洋洲 环境科学 科研经费

2.4.2 query()方法

目前较常用的筛选语句,query()方法是Pandas中的一种数据筛选方法,它允许你使用字符串表达式来选择DataFrame中满足特定条件的数据。query()方法的设计灵感来自于SQL语言的查询语法,它能够简化复杂的条件筛选,并且能够处理大部分的数据选择需求。

语法:df.query(expr, inplace=False)

df.query(
    # 类sql语句
    expr
    # 是否在原df上修改,默认为False
    inplace = False
)

Tip:在expr语句中可以使用’@'来引用外部变量

In[14]:

df = pd.read_csv("university_rank.csv") # 读取一下案例数据表
expr = "排名 > 9 and 排名 < 16 and 地区 == '亚洲' " # 使用类sql语句多条件筛选DataFrame表
df.query(expr) # 查看使用query()方法查询的结果

out[14]:

大学名称 排名 地区 学科领域 排名依据
12 清华大学 13 亚洲 商学 校友网络


In[15]:

limit = 5 # 设置一个外部变量
expr = "排名 > @limit and 排名 < 50 and 地区 == '亚洲' " # 在expr参数里面应用外部变量
df.query(expr) # 查看使用query()方法查询的结果

out[15]:

大学名称 排名 地区 学科领域 排名依据
8 东京大学 9 亚洲 社会科学 研究生录取率
12 清华大学 13 亚洲 商学 校友网络
18 东京大学 19 亚洲 社会科学 国际化程度
22 香港大学 23 亚洲 商学 国际影响力
29 东京大学 30 亚洲 艺术 学生满意度
33 清华大学 34 亚洲 医学 学术声誉
39 东京大学 40 亚洲 教育 毕业生就业率
43 香港大学 44 亚洲 工程 教学质量

若想对数量进行控制,那么也可以使用.head()方法或者.tail()方法来进行嵌套查询

In[16]:

df.query(expr).head(3)

out[16]:

大学名称 排名 地区 学科领域 排名依据
8 东京大学 9 亚洲 社会科学 研究生录取率
12 清华大学 13 亚洲 商学 校友网络
18 东京大学 19 亚洲 社会科学 国际化程度

2.4.3 isin()方法(布尔索引筛选)

isin()是Pandas中的一种方法,用于检查DataFrame或Series中的元素是否包含在指定的列表、集合或Series中。isin()方法返回一个布尔值的Series,其中元素为True表示对应的元素在指定的集合中,False表示不在其中。

语法df.col_name.isin(values)或者df.isin(values) 该方法会返回一个bool数列,其中values一般为一个列表、集合或Series,用于指定待检查的元素集合。

In[17]:

df = pd.read_csv("university_rank.csv") # 读取一下案例数据表
df # 展示案例数据表

out[17]:

大学名称 排名 地区 学科领域 排名依据
0 哈佛大学 1 北美 工程 学术声誉
1 牛津大学 2 欧洲 医学 科研产出
2 北京大学 3 亚洲 商学 国际影响力
3 悉尼大学 4 大洋洲 计算机科学 教学质量
4 圣保罗大学 5 南美 艺术 学生满意度
... ... ... ... ... ...
95 圣保罗国立大学 96 南美 计算机科学 研究生录取率
96 约翰内斯堡大学 97 非洲 环境科学 学术声誉
97 麦吉尔大学 98 北美 艺术 学生满意度
98 伦敦政治经济学院 99 欧洲 法律 国际影响力
99 东京大学 100 亚洲 教育 毕业生就业率

100 rows × 5 columns



In[18]:

df.排名.isin([1, 5, 6])

out[18]:

0      True
1     False
2     False
3     False
4      True
      ...  
95    False
96    False
97    False
98    False
99    False
Name: 排名, Length: 100, dtype: bool


现在返回是一个bool列表,想要获取到筛选后的数据在外面套上一层df就行了

In[19]:

df[df.排名.isin([1, 5, 6])]

out[19]:

大学名称 排名 地区 学科领域 排名依据
0 哈佛大学 1 北美 工程 学术声誉
4 圣保罗大学 5 南美 艺术 学生满意度
5 约翰内斯堡大学 6 非洲 法律 毕业生就业率

Tips

  • 在Pandas中可以使用~进行反向筛选,即剔除满足条件的。
  • 也可以使用drop()方法来删除满足的条件列和行
  • 在进行范围筛选的使用也可以使用between()方法

结束语

如果有疑问欢迎大家留言讨论,你如果觉得这篇文章对你有帮助可以给我一个免费的赞吗?我们之间的交流是我最大的动力!文章来源地址https://www.toymoban.com/news/detail-617006.html

到了这里,关于【Python】数据分析+数据挖掘——探索Pandas中的数据筛选的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python数据分析-数据挖掘(准备数据——数据建模——模型评估——模型应用)

    20 理解业务和数据:我们需要做好什么计划?_哔哩哔哩_bilibili 目录   一、理解业务和数据:我们需要做好什么计划? 1.1两个思想问题 1.2为什么数据挖掘不是万能的 1.3业务背景与目标 1.4把握数据  1.5总结 二、 准备数据:如何处理出完整、干净的数据? 2.1找到数据 2.2数据探索

    2024年02月05日
    浏览(55)
  • 【Python】数据分析+数据挖掘——变量列的相关操作

    在Python和Pandas中,变量列操作指的是对DataFrame中的列进行操作,包括但不限于 选择列、重命名列、添加新列、删除列、修改列数据 等操作。这些操作可以帮助我们处理数据、分析数据和进行特征工程等。 概述 下面将会列出一些基本的操作指令 案例数据表university_rank.csv In

    2024年02月16日
    浏览(32)
  • 大数据教材推荐|Python数据挖掘入门、进阶与案例分析

      主   编: 卢滔,张良均,戴浩,李曼,陈四德 出版社: 机械工业出版社 内容提要 本书从实践出发,结合11个 “泰迪杯” 官方推出的赛题,按照赛题的难易程度进行排序,由浅入深地介绍数据挖掘技术在 商务、教育、交通、传媒、旅游、电力、制造业等行业的应用 。因

    2024年02月10日
    浏览(31)
  • Python数据挖掘实用案例——自动售货机销售数据分析与应用

    🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C++、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:C++STL,感兴趣的小伙伴可以看看。 🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​ ⛱️万物从心起,心动则万物动🏄

    2024年02月08日
    浏览(60)
  • 大数据图书推荐:Python数据分析与挖掘实战(第2版)

    《Python数据分析与挖掘实战(第2版)》的配套学习视频,课程内容共分为基础篇(第1~5章)和实战篇(第6~11章)。      基础篇内容包括数据挖掘的概述、基本流程、常用工具、开发环境,Python数据挖掘的编程基础、数据探索、数据预处理、数据挖掘算法基础等基础知识;

    2024年02月02日
    浏览(39)
  • python数据分析与挖掘实战(商品零售购物篮分析)

            购物篮分析是商业领域最前沿、最具挑战性的问题之一,也是许多企业重点研究的问题。购物篮分析是通过发现顾客在一次购买行为中放入购物篮中不同商品之间的关联,研究顾客的购买行为,从而辅助零售企业制定营销策略的一种数据分析方法。        本篇文章

    2024年02月06日
    浏览(42)
  • Python高分大数据分析与挖掘大作业

    1.创建一个Python脚本,命名为test1.py,完成以下功能。 (1)生成两个3×3矩阵,并计算矩阵的乘积。 (2)求矩阵 A= -1 1 0 -4 3 0 1 02 的特征值和特征向量。 (3)设有矩阵 A = 5 2 1 2 01 ,试对其进行奇异分解。 求解过程 2.油气藏的储量密度 Y 与生油门限以下平均地温梯度 X 1、

    2024年02月04日
    浏览(36)
  • 【python】数据挖掘分析清洗——缺失值处理方法汇总

    本文链接:https://blog.csdn.net/weixin_47058355/article/details/128866686 数据挖掘系列: 缺失值处理方法汇总 离散化方法汇总 离群点(异常值)处理方法汇总 标准化(数据归一化)处理方法汇总 特征选择(特征筛选)方法汇总 特征选择筛选(降维)方法汇总 分类预测方法汇总 看了下网络上做

    2024年02月02日
    浏览(39)
  • Python数据挖掘:入门、进阶与实用案例分析——基于非侵入式负荷检测与分解的电力数据挖掘

    本案例将根据已收集到的电力数据,深度挖掘各电力设备的电流、电压和功率等情况,分析各电力设备的实际用电量,进而为电力公司制定电能能源策略提供一定的参考依据。更多详细内容请参考《Python数据挖掘:入门进阶与实用案例分析》一书。 为了更好地监测用电设备的

    2024年02月08日
    浏览(38)
  • 【python】数据挖掘分析清洗——特征选择(特征筛选)方法汇总

    本文链接:https://blog.csdn.net/weixin_47058355/article/details/130400400?spm=1001.2014.3001.5501 数据挖掘系列: 缺失值处理方法汇总 离散化方法汇总 离群点(异常值)处理方法汇总 标准化(数据归一化)处理方法汇总 特征选择(特征筛选)方法汇总 特征选择筛选(降维)方法汇总 分类预测方法汇

    2024年02月15日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包