4. Pandas 数据选择、查询与修改
Pandas 数据选择、查询与修改
在数据分析过程中,数据选择与修改是最常见、最基础的操作之一。无论是从庞大的数据集中筛选出所需部分,还是对列进行新增、修改、删除,这些操作都直接影响后续的数据清洗与分析效率。本文将详细介绍 条件过滤、布尔索引、多条件查询 以及 新增、修改、删除列 的方法,并通过实例演示,帮助你快速掌握 Pandas 的核心数据处理技巧。
1. 条件过滤与布尔索引
在 Pandas 中,条件表达式常用于筛选数据。例如,我们可以基于数值、字符串等条件,快速提取符合要求的行。
import pandas as pddata = {'姓名': ['张三', '李四', '王五', '赵六'],'拼音': ['ZhangSan', 'LiSi', 'WangWu', 'ZhaoLiu'],'年龄': [23, 34, 29, 40],'城市': ['北京', '上海', '广州', '深圳']
}df = pd.DataFrame(data)
print(df)
姓名 拼音 年龄 城市
0 张三 ZhangSan 23 北京
1 李四 LiSi 34 上海
2 王五 WangWu 29 广州
3 赵六 ZhaoLiu 40 深圳
1.1 按单条件过滤
# 筛选年龄大于30的人
df_age = df[df['年龄'] > 30]
print(df_age)
姓名 拼音 年龄 城市
1 李四 LiSi 34 上海
3 赵六 ZhaoLiu 40 深圳
1.2 布尔索引
布尔索引是 Pandas 中非常灵活的筛选方式。首先通过条件生成布尔序列,然后再利用该序列进行过滤。
# 创建布尔序列
mask = df['城市'] == '北京'
print(mask)
0 True
1 False
2 False
3 False
Name: 城市, dtype: bool
使用布尔索引筛选:
# 使用布尔索引筛选
df_beijing = df[mask]
print(df_beijing)
姓名 拼音 年龄 城市
0 张三 ZhangSan 23 北京
2. 多条件查询
在实际分析中,经常需要组合多个条件。Pandas 允许使用逻辑运算符:
&
:与(and)|
:或(or)~
:非(not)
注意:每个条件必须用括号括起来。
# 年龄大于25且城市为广州或深圳
df_multi = df[(df['年龄'] > 25) & (df['城市'].isin(['广州', '深圳']))]
print(df_multi)
姓名 拼音 年龄 城市
2 王五 WangWu 29 广州
3 赵六 ZhaoLiu 40 深圳
3. 新增列
新增列可以通过常数赋值、运算结果或函数应用等方式实现。
3.1 通过常数新增列
df['性别'] = ['男', '女', '男', '女']
print(df)
姓名 拼音 年龄 城市 性别
0 张三 ZhangSan 23 北京 男
1 李四 LiSi 34 上海 女
2 王五 WangWu 29 广州 男
3 赵六 ZhaoLiu 40 深圳 女
3.2 通过计算新增列
# 年龄增加 1
df['明年年龄'] = df['年龄'] + 1
print(df)
姓名 拼音 年龄 城市 性别 明年年龄
0 张三 ZhangSan 23 北京 男 24
1 李四 LiSi 34 上海 女 35
2 王五 WangWu 29 广州 男 30
3 赵六 ZhaoLiu 40 深圳 女 41
4. 修改列
4.1 修改整列值
# 将拼音列全部改为大写
df['拼音'] = df['拼音'].str.upper()
print(df)
姓名 拼音 年龄 城市 性别 明年年龄
0 张三 ZHANGSAN 23 北京 男 24
1 李四 LISI 34 上海 女 35
2 王五 WANGWU 29 广州 男 30
3 赵六 ZHAOLIU 40 深圳 女 41
4.2 修改部分值
# 将张三的年龄改为25
df.loc[df['姓名'] == '张三', '年龄'] = 25
print(df)
姓名 拼音 年龄 城市 性别 明年年龄
0 张三 ZHANGSAN 25 北京 男 24
1 李四 LISI 34 上海 女 35
2 王五 WANGWU 29 广州 男 30
3 赵六 ZHAOLIU 40 深圳 女 41
5. 删除列
5.1 删除单列
# 删除单列
df.drop(columns=['明年年龄'], inplace=True)
print(df)
姓名 拼音 年龄 城市 性别
0 张三 ZHANGSAN 25 北京 男
1 李四 LISI 34 上海 女
2 王五 WANGWU 29 广州 男
3 赵六 ZHAOLIU 40 深圳 女
5.2 删除多列
# 删除多列
df.drop(columns=['拼音', '性别'], inplace=True)
print(df)
姓名 年龄 城市
0 张三 25 北京
1 李四 34 上海
2 王五 29 广州
3 赵六 40 深圳
6. 小结
本文介绍了 Pandas 中最常用的数据操作:
- 条件过滤与布尔索引:快速定位符合条件的行;
- 多条件查询:结合逻辑运算符实现复杂筛选;
- 新增列:可通过常数、计算或函数生成;
- 修改列:既能批量修改,也能针对特定条件修改;
- 删除列:灵活删除单列或多列。
掌握这些技巧,能够为后续的缺失值处理、分组聚合、透视分析等操作打下坚实基础,是 Pandas 数据处理的“第一步”。