Pandas 复杂条件
在数据分析和处理中,筛选数据是一个常见的任务。Pandas 提供了强大的工具来帮助我们根据条件选择数据。简单条件(如选择某一列大于某个值的数据)很容易实现,但在实际应用中,我们经常需要处理更复杂的条件。本文将介绍如何在 Pandas 中使用复杂条件进行数据筛选和选择。
什么是复杂条件?
复杂条件通常涉及多个条件的组合,使用逻辑运算符(如 &
、|
、~
)来连接这些条件。例如,你可能需要选择某一列的值大于某个值 并且 另一列的值小于某个值的数据。这种多条件的组合就是复杂条件。
逻辑运算符
在 Pandas 中,我们使用以下逻辑运算符来组合条件:
&
:逻辑与(AND)|
:逻辑或(OR)~
:逻辑非(NOT)
注意:在 Pandas 中,逻辑运算符必须用括号 ()
包裹每个条件,否则会引发错误。
示例:使用逻辑与(AND)
假设我们有一个 DataFrame df
,其中包含以下数据:
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
'Age': [24, 27, 22, 32, 29],
'Salary': [50000, 54000, 48000, 62000, 58000]
}
df = pd.DataFrame(data)
如果我们想要选择年龄大于 25 并且 工资小于 60000 的员工,可以使用以下代码:
filtered_df = df[(df['Age'] > 25) & (df['Salary'] < 60000)]
print(filtered_df)
输出:
Name Age Salary
1 Bob 27 54000
4 Eva 29 58000
示例:使用逻辑或(OR)
如果我们想要选择年龄小于 25 或者 工资大于 60000 的员工,可以使用以下代码:
filtered_df = df[(df['Age'] < 25) | (df['Salary'] > 60000)]
print(filtered_df)
输出:
Name Age Salary
0 Alice 24 50000
2 Charlie 22 48000
3 David 32 62000
示例:使用逻辑非(NOT)
如果我们想要选择年龄 不 小于 25 的员工,可以使用以下代码:
filtered_df = df[~(df['Age'] < 25)]
print(filtered_df)
输出:
Name Age Salary
1 Bob 27 54000
3 David 32 62000
4 Eva 29 58000
实际应用场景
场景 1:筛选特定时间范围内的数据
假设我们有一个包含日期和销售额的 DataFrame,我们想要筛选出 2023 年 1 月 1 日到 2023 年 3 月 31 日之间的数据。
data = {
'Date': pd.date_range(start='2023-01-01', end='2023-12-31', freq='D'),
'Sales': [100 + i for i in range(365)]
}
df = pd.DataFrame(data)
start_date = '2023-01-01'
end_date = '2023-03-31'
filtered_df = df[(df['Date'] >= start_date) & (df['Date'] <= end_date)]
print(filtered_df.head())
输出:
Date Sales
0 2023-01-01 100
1 2023-01-02 101
2 2023-01-03 102
3 2023-01-04 103
4 2023-01-05 104
场景 2:多条件组合筛选
假设我们有一个包含学生成绩的 DataFrame,我们想要筛选出数学成绩大于 80 并且 英语成绩大于 75 的学生。
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
'Math': [85, 78, 90, 82, 88],
'English': [80, 76, 85, 70, 90]
}
df = pd.DataFrame(data)
filtered_df = df[(df['Math'] > 80) & (df['English'] > 75)]
print(filtered_df)
输出:
Name Math English
0 Alice 85 80
2 Charlie 90 85
4 Eva 88 90
总结
在 Pandas 中,复杂条件的筛选是通过逻辑运算符 &
、|
、~
来实现的。每个条件必须用括号包裹,以避免语法错误。通过组合多个条件,我们可以灵活地筛选出符合特定要求的数据。
练习:尝试创建一个包含多个条件的复杂筛选,例如选择年龄在 25 到 30 岁之间 并且 工资在 50000 到 60000 之间的员工。
附加资源
通过掌握复杂条件的筛选技巧,你将能够更高效地处理和分析数据。继续练习,提升你的 Pandas 技能吧!