【Python】进阶学习:pandas--如何根据指定条件筛选数据

【Python】进阶学习:pandas–如何根据指定条件筛选数据
在这里插入图片描述

🌈 个人主页:高斯小哥
🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得到您的订阅和支持~
💡 创作高质量博文(平均质量分92+),分享更多关于深度学习、PyTorch、Python领域的优质内容!(希望得到您的关注~)


🌵文章目录🌵

  • 📚 一、pandas库简介
  • 🔍 二、条件筛选基础
    • 📋 示例1:筛选DataFrame中的特定行
    • 📋 示例2:组合多个条件
  • 🎯 三、高级筛选技巧
    • 📋 示例3:使用`query()`方法筛选数据
    • 📋 示例4:使用`isin()`方法筛选数据
  • 📘 四、条件筛选与函数应用
    • 📋 示例5:使用`apply()`和条件函数筛选数据
  • 🌈 五、条件筛选的最佳实践
    • 📋 示例6:保持代码清晰
    • 📋 示例7:利用向量化操作
  • 🎉六、 总结
  • 🤝七、期待与你共同进步

📚 一、pandas库简介

  pandas是Python中一个非常流行的数据处理库,它提供了大量的数据结构(如Series和DataFrame)以及数据分析工具,让数据处理变得既简单又高效。在数据分析的过程中,我们经常需要根据某些条件筛选数据,这时pandas提供了非常灵活和方便的筛选功能。

🔍 二、条件筛选基础

  在pandas中,我们通常使用布尔索引(Boolean Indexing)来进行条件筛选。布尔索引是指根据条件表达式的结果(True或False)来选择数据。

📋 示例1:筛选DataFrame中的特定行


假设我们有一个DataFrame df,其中包含学生的信息:

import pandas as pd# 创建一个示例DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'Age': [25, 22, 28, 20, 23],'Grade': ['A', 'B', 'A', 'C', 'B']
}
df = pd.DataFrame(data)# 筛选年龄大于23的学生
older_students = df[df['Age'] > 23]
print(older_students)

输出:

      Name  Age Grade
0    Alice   25     A
2  Charlie   28     A

📋 示例2:组合多个条件


我们也可以使用&(和)和|(或)来组合多个条件:

import pandas as pd# 创建一个示例DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'Age': [25, 22, 28, 20, 23],'Grade': ['A', 'B', 'A', 'C', 'B']
}
df = pd.DataFrame(data)# 筛选年龄大于23且成绩为A的学生
specific_students = df[(df['Age'] > 23) & (df['Grade'] == 'A')]
print(specific_students)

输出:

      Name  Age Grade
0    Alice   25     A
2  Charlie   28     A

🎯 三、高级筛选技巧

  除了基本的布尔索引,pandas还提供了很多高级筛选技巧,如query()方法、isin()方法等。

📋 示例3:使用query()方法筛选数据

  query()方法允许我们使用字符串表达式来筛选数据,非常适合处理复杂的筛选条件。

import pandas as pd# 创建一个示例DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'Age': [25, 22, 28, 20, 23],'Grade': ['A', 'B', 'A', 'C', 'B']
}
df = pd.DataFrame(data)# 筛选年龄大于23或成绩为A的学生
complex_filter = df.query('Age > 23 or Grade == "A"')
print(complex_filter)

输出:

      Name  Age Grade
0    Alice   25     A
2  Charlie   28     A

📋 示例4:使用isin()方法筛选数据

  isin()方法允许我们根据一个值列表来筛选数据。

import pandas as pd# 创建一个示例DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'Age': [25, 22, 28, 20, 23],'Grade': ['A', 'B', 'A', 'C', 'B']
}
df = pd.DataFrame(data)# 筛选名字是Alice或Eve的学生
name_filter = df[df['Name'].isin(['Alice', 'Eve'])]
print(name_filter)

输出:

    Name  Age Grade
0  Alice   25     A
4    Eve   23     B

📘 四、条件筛选与函数应用

  除了直接使用条件表达式,我们还可以结合pandas提供的函数来进行更复杂的筛选操作。

📋 示例5:使用apply()和条件函数筛选数据

import pandas as pd# 创建一个示例DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'Age': [25, 22, 28, 20, 23],'Grade': ['A', 'B', 'A', 'C', 'B']
}
df = pd.DataFrame(data)# 定义一个条件函数
def is_elderly(age):return age >= 21# 使用apply()方法应用条件函数
elderly_students = df[df['Age'].apply(is_elderly)]
print(elderly_students)

输出:

      Name  Age Grade
0    Alice   25     A
1      Bob   22     B
2  Charlie   28     A
4      Eve   23     B

  在这个例子中,我们定义了一个is_elderly函数来判断年龄是否大于等于21,然后使用apply()方法将这个函数应用到Age列上,得到一个布尔序列,最后用这个布尔序列来筛选数据。

🌈 五、条件筛选的最佳实践

  在实际应用中,遵循一些最佳实践可以让我们的代码更加清晰、高效。

📋 示例6:保持代码清晰

  尽量使用具有描述性的列名和条件表达式,这样其他人在阅读你的代码时可以更容易理解你的意图。

# 使用描述性的列名和条件表达式
high_scoring_students = df[(df['Grade'] == 'A') | (df['Grade'] == 'B')]
print(high_scoring_students)

📋 示例7:利用向量化操作

  pandas的许多函数都是向量化(vectorized)的,这意味着它们在整个数组上操作而不是在单个元素上循环。利用这些向量化操作可以提高代码的效率。

# 利用向量化操作筛选数据
high_grades = df['Grade'].isin(['A', 'B'])
high_scoring_students = df[high_grades]
print(high_scoring_students)

输出:

      Name  Age Grade
0    Alice   25     A
1      Bob   22     B
2  Charlie   28     A
4      Eve   23     B

在这个例子中,我们使用了isin()这个向量化函数来创建一个布尔数组,然后用这个数组来筛选数据。

🎉六、 总结

  条件筛选是pandas中非常重要的一个功能,它允许我们根据特定条件来快速、高效地筛选数据。通过学习和实践这些条件筛选的技巧和最佳实践,我们可以更好地利用pandas来处理和分析数据。希望这篇文章能够帮助你更深入地理解和应用pandas的条件筛选功能!

🤝七、期待与你共同进步

  🌱 亲爱的读者,非常感谢你每一次的停留和阅读!你的支持是我们前行的最大动力!🙏

  🌐 在这茫茫网海中,有你的关注,我们深感荣幸。你的每一次点赞👍、收藏🌟、评论💬和关注💖,都像是明灯一样照亮我们前行的道路,给予我们无比的鼓舞和力量。🌟

  📚 我们会继续努力,为你呈现更多精彩和有深度的内容。同时,我们非常欢迎你在评论区留下你的宝贵意见和建议,让我们共同进步,共同成长!💬

  💪 无论你在编程的道路上遇到什么困难,都希望你能坚持下去,因为每一次的挫折都是通往成功的必经之路。我们期待与你一起书写编程的精彩篇章! 🎉

  🌈 最后,再次感谢你的厚爱与支持!愿你在编程的道路上越走越远,收获满满的成就和喜悦!祝你编程愉快!🎉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/506120.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

synchrosized 的可重入特性、死锁、哲学家就餐问题以及解决死锁的方法等干货

文章目录 💐synchrosized的可重入特性关于死锁:哲学家就餐问题💡如何避免/解决死锁 💐synchrosized的可重入特性 可重入特性:当一个线程针对一个对象同时加锁多次,不会构成死锁,这样的特性称为…

NoSQL--虚拟机网络配置

目录 1.初识NoSQL 1.1 NoSQL之虚拟机网络配置 1.1.1 首先,导入预先配置好的NoSQL版本到VMware Workstation中 1.1.2 开启虚拟机操作: 1.1.2.1 点击开启虚拟机: 1.1.2.2 默认选择回车CentOS Linux(3.10.0-1127.e17.x86_64) 7 …

今日Arxiv最热NLP大模型论文:Llama-2上下文扩大48倍的方法来了,港大发布,无需训练

引言:大语言模型的长上下文理解能力 在当今的人工智能领域,大语言模型(Large Language Models,简称LLMs)的长上下文理解能力成为了一个重要的研究方向。这种能力对于模型来说至关重要,因为它使得LLMs能够有…

精品SSM的教学管理系统课程作业成绩

《[含文档PPT源码等]精品基于SSM的教学管理系统[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功! 软件开发环境及开发工具: Java——涉及技术: 前端使用技术:HTML5,CSS3、Jav…

<网络安全>《63 微课堂<第3课 旁路部署和串行部署是什么?>》

1、串联和并联概念 串联和并联是物理学上的概念。 串联电路把元件逐个顺次连接起来组成的电路。如图,特点是:流过一个元件的电流同时也流过另一个。 并联电路把元件并列地连接起来组成的电路,如图,特点是:干路的电流…

Ps:快照

“历史记录” History面板可分为快照区和历史记录状态区两个部分。 Photoshop 的快照 snapshot功能允许用户保存当前工作状态的完整副本,这包括图像的所有图层(包括图层可见性)、图层样式、选区以及颜色模式、位深度等其他属性。 通过创建当前…

一份在互联网公司干了八年的经验分享

一份在互联网公司干了八年的经验分享 一晃在这一行已经摸爬滚打8年有余,虽科班毕业,也不是什么名校,学校的计算机氛围没那么浓厚,我基本上是在工作之后才开始正儿八经的学习编程,一边啃书本敲代码,一边是上…

汽车三元催化器的废品项目详解,三元催化再生项目的回收技术教学

一、教程描述 这是一个收废品项目,就收那些别人不懂的,三元催化器的附加值高,只要掌握技术,怎么玩都行的,只是要放得下你的面子。三元催化器,是安装在汽车排气系统中最重要的机外净化装置,它可…

NOC2023软件创意编程(学而思赛道)python小高组初赛真题

软件创意编程 一、参赛范围 1.参赛组别:小学低年级组(1-3 年级)、小学高年级组(4-6 年级)、初中组。 2.参赛人数:1 人。 3.指导教师:1 人(可空缺)。 4.每人限参加 1 个赛项。 组别确定:以地方教育行政主管部门(教委、教育厅、教育局) 认定的选手所属学段为准。 二、…

2024年3月5-7日年生物发酵装备展-环科环保科技

参展企业介绍 山东环科环保科技有限公司,是一家集环保设备的设计、制造、安装、服务及环境治理工程总承包于一体的企业。 公司长期专注于大气、水、危固废三大领域,以科技创造碧水蓝天,为客户提供环保解决方案。 以稳定的产品及服务质量、适用的技术、…

BUUCTF---数据包中的线索1

1.题目描述 2.下载附件,是一个.pcap文件 3.放在wireshark中,仔细观察数据流,会发现有个叫fenxi.php的数据流 4.这条数据流是http,且使用GET方式,接下来我们使用http.request,methodGET 命令来过滤数据流 5.在分析栏中我们追踪htt…

DataGrip(IDEA 内置)连接 SQL Server

原文:https://blog.iyatt.com/?p14265 测试环境: IDEA 2023.1SQL Server 2022 首先打开 SQL Server 配置管理工具 启用 TCP/IP 打开 Windows 服务管理 在服务列表中找到 SQL Server(MSSQLSERVER),右键重新启…