【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# 创建一个示例DataFramedata = {'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)
输出:
NameAge Grade0Alice 25 A2Charlie 28 A
示例2:组合多个条件
我们也可以使用&
(和)和|
(或)来组合多个条件:
import pandas as pd# 创建一个示例DataFramedata = {'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)
输出:
NameAge Grade0Alice 25 A2Charlie 28 A
三、高级筛选技巧
除了基本的布尔索引,pandas还提供了很多高级筛选技巧,如query()
方法、isin()
方法等。
示例3:使用query()
方法筛选数据
query()
方法允许我们使用字符串表达式来筛选数据,非常适合处理复杂的筛选条件。
import pandas as pd# 创建一个示例DataFramedata = {'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)
输出:
NameAge Grade0Alice 25 A2Charlie 28 A
示例4:使用isin()
方法筛选数据
isin()
方法允许我们根据一个值列表来筛选数据。
import pandas as pd# 创建一个示例DataFramedata = {'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)
输出:
NameAge Grade0Alice 25 A4Eve 23 B
四、条件筛选与函数应用
除了直接使用条件表达式,我们还可以结合pandas提供的函数来进行更复杂的筛选操作。
示例5:使用apply()
和条件函数筛选数据
import pandas as pd# 创建一个示例DataFramedata = {'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)
输出:
NameAge Grade0Alice 25 A1Bob 22 B2Charlie 28 A4Eve 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)
输出:
NameAge Grade0Alice 25 A1Bob 22 B2Charlie 28 A4Eve 23 B
在这个例子中,我们使用了isin()
这个向量化函数来创建一个布尔数组,然后用这个数组来筛选数据。
六、 总结
条件筛选是pandas中非常重要的一个功能,它允许我们根据特定条件来快速、高效地筛选数据。通过学习和实践这些条件筛选的技巧和最佳实践,我们可以更好地利用pandas来处理和分析数据。希望这篇文章能够帮助你更深入地理解和应用pandas的条件筛选功能!
七、期待与你共同进步
亲爱的读者,非常感谢你每一次的停留和阅读!你的支持是我们前行的最大动力!
在这茫茫网海中,有你的关注,我们深感荣幸。你的每一次点赞、收藏、评论和关注,都像是明灯一样照亮我们前行的道路,给予我们无比的鼓舞和力量。
我们会继续努力,为你呈现更多精彩和有深度的内容。同时,我们非常欢迎你在评论区留下你的宝贵意见和建议,让我们共同进步,共同成长!
无论你在编程的道路上遇到什么困难,都希望你能坚持下去,因为每一次的挫折都是通往成功的必经之路。我们期待与你一起书写编程的精彩篇章!
最后,再次感谢你的厚爱与支持!愿你在编程的道路上越走越远,收获满满的成就和喜悦!祝你编程愉快!