4. DataFrame的列选择与过滤
任务说明
本案例使用Pandas构建一个包含员工信息的DataFrame,完成两类核心操作:列选择(按列名选取单列或多列)与行过滤(基于条件表达式筛选满足特定规则的行)。目标是通过最小可复现的代码,掌握DataFrame的索引与布尔筛选机制。
实现代码
import pandas as pd
# 1. 创建示例DataFrame
data = {
'姓名': ['张伟', '李娜', '王强', '赵敏', '刘洋'],
'部门': ['技术部', '市场部', '技术部', '财务部', '技术部'],
'薪资': [15000, 12000, 18000, 10000, 16000],
'工龄': [3, 5, 7, 2, 4]
}
df = pd.DataFrame(data)
# 2. 列选择
# 选择单列(返回Series)
single_col = df['姓名']
# 选择多列(返回DataFrame)
multi_cols = df[['姓名', '薪资']]
# 3. 行过滤
# 条件1:技术部员工
tech_dept = df[df['部门'] == '技术部']
# 条件2:薪资大于15000
high_salary = df[df['薪资'] > 15000]
# 条件3:技术部且工龄大于3年(复合条件)
tech_senior = df[(df['部门'] == '技术部') & (df['工龄'] > 3)]
# 4. 输出结果
print("=== 原始数据 ===")
print(df)
print("\n=== 单列选择(姓名) ===")
print(single_col)
print("\n=== 多列选择(姓名+薪资) ===")
print(multi_cols)
print("\n=== 过滤:技术部 ===")
print(tech_dept)
print("\n=== 过滤:薪资>15000 ===")
print(high_salary)
print("\n=== 过滤:技术部且工龄>3 ===")
print(tech_senior)
运行方式
确保已安装Pandas(pip install pandas),将上述代码保存为column_filter.py,在终端执行python column_filter.py。
验证方法
观察程序输出,逐项核对:
- 单列选择:输出为Series,索引为0-4,值为五个姓名,无表头。
- 多列选择:输出DataFrame包含“姓名”和“薪资”两列,共5行。
- 技术部过滤:应包含张伟、王强、刘洋三行(索引0、2、4)。
- 薪资>15000过滤:应包含张伟(15000不满足,注意边界)、王强(18000)、刘洋(16000),即索引2和4两行。
- 复合条件过滤:技术部且工龄>3,满足的是王强(工龄7)和刘洋(工龄4),索引2和4。
若输出与上述预期一致,则案例实现正确。