本文主要是介绍pandas数据过滤,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Pandas 数据过滤方法
Pandas 提供了多种方法来过滤数据,可以根据不同的条件进行筛选。以下是一些常见的 Pandas 数据过滤方法,结合实例进行讲解,希望能帮你快速理解。
1. 基于条件筛选行
可以使用布尔索引来根据条件过滤行。
import pandas as pd# 创建示例数据
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],'Age': [24, 27, 22, 32, 29],'Score': [85, 90, 78, 88, 92]}
df = pd.DataFrame(data)# 筛选 Age 大于 25 的行
filtered_df = df[df['Age'] > 25]
print(filtered_df)
2. 多条件筛选
可以使用 &
(与) 和 |
(或) 来结合多个条件进行筛选。
# 筛选 Age 大于 25 且 Score 大于 85 的行
filtered_df = df[(df['Age'] > 25) & (df['Score'] > 85)]
print(filtered_df)
3. 使用 isin()
方法筛选
isin()
方法用于筛选列中包含特定值的行。
# 筛选 Name 为 'Alice' 或 'Bob' 的行
filtered_df = df[df['Name'].isin(['Alice', 'Bob'])]
print(filtered_df)
4. 使用 str.contains()
筛选字符串
str.contains()
可以根据字符串的包含关系进行筛选。
# 筛选 Name 包含字母 'a' 的行
filtered_df = df[df['Name'].str.contains('a', case=False)]
print(filtered_df)
5. 使用 query()
方法筛选
query()
方法允许使用 SQL 风格的语法进行筛选。
# 使用 query 筛选 Age 大于 25 的行
filtered_df = df.query('Age > 25')
print(filtered_df)
6. 筛选缺失值
可以使用 isna()
或 notna()
来筛选包含缺失值或非缺失值的行。
# 添加一行带有缺失值的数据
df.loc[5] = ['Frank', None, 80]# 筛选 Age 为空的行
filtered_df = df[df['Age'].isna()]
print(filtered_df)
练习题目
练习 1: 创建一个包含 Name, Age, Score 的 DataFrame,并筛选出 Age 大于 30 的行。
练习 2: 使用布尔索引筛选出 Name 为 ‘David’ 或 ‘Eva’ 的行。
练习 3: 使用 isin()
方法筛选 Age 为 22, 24 的行。
练习 4: 使用 str.contains()
方法筛选 Name 中包含字母 ‘e’ 的行。
练习 5: 使用 query()
方法筛选出 Score 大于 85 且 Age 小于 30 的行。
习题答案
答案 1:
filtered_df = df[df['Age'] > 30]
答案 2:
filtered_df = df[(df['Name'] == 'David') | (df['Name'] == 'Eva')]
答案 3:
filtered_df = df[df['Age'].isin([22, 24])]
答案 4:
filtered_df = df[df['Name'].str.contains('e', case=False)]
答案 5:
filtered_df = df.query('Score > 85 & Age < 30')
这篇关于pandas数据过滤的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!