在数据分析中,对数据的选择和筛选是最基础也最常用的操作。pandas 的 DataFrame 提供了灵活的方式来实现这一点。本文将用 3 个简单步骤,帮你快速掌握 DataFrame 数据选择与筛选的核心技巧,适合完全没接触过 pandas 的初学者。
第一步:选择列数据(最基础的列操作)¶
列选择是指提取 DataFrame 中的某一列或多列数据。在 pandas 中,列选择通过列名实现,非常直观。
1.1 选择单列数据¶
当你需要提取某一列时,直接用列名加方括号即可。返回结果是一个 Series(类似一维数组)。
import pandas as pd
# 先创建一个示例 DataFrame(包含姓名、年龄、城市、销售额)
data = {
'姓名': ['小明', '小红', '小刚', '小丽'],
'年龄': [20, 22, 21, 23],
'城市': ['北京', '上海', '广州', '深圳'],
'销售额': [1000, 1500, 800, 2000]
}
df = pd.DataFrame(data)
# 选择单列(年龄列)
age_column = df['年龄']
print("单列选择(年龄列):")
print(age_column)
输出结果:
单列选择(年龄列):
0 20
1 22
2 21
3 23
Name: 年龄, dtype: int64
1.2 选择多列数据¶
如果需要同时选择多列,只需将列名放在一个列表中(双括号)。返回结果是一个 DataFrame(类似二维数组)。
# 选择多列(年龄和城市列)
age_city_df = df[['年龄', '城市']]
print("\n多列选择(年龄和城市):")
print(age_city_df)
输出结果:
多列选择(年龄和城市):
年龄 城市
0 20 北京
1 22 上海
2 21 广州
3 23 深圳
第二步:选择行数据(基于位置或标签)¶
行选择是指提取 DataFrame 中的某几行数据。pandas 提供了 iloc 和 loc 两种常用方法,分别基于位置和标签选择。
2.1 iloc:按位置选择(整数索引)¶
iloc 是“按位置(index location)”选择,适合用默认的整数位置(0, 1, 2…)选择行。语法为 df.iloc[行范围]。
df.iloc[0:2]:选择前 2 行(位置 0 和 1,左闭右开区间)df.iloc[1]:选择第 2 行(位置 1)df.iloc[[0, 2]]:选择位置 0 和 2 的行
# 选择前 2 行(位置 0 和 1)
first_two_rows = df.iloc[0:2]
print("iloc选择前2行:")
print(first_two_rows)
输出结果:
iloc选择前2行:
姓名 年龄 城市 销售额
0 小明 20 北京 1000
1 小红 22 上海 1500
2.2 loc:按标签选择(自定义索引)¶
loc 是“按标签(label location)”选择,适合用自定义的行标签(如姓名、日期等)选择。如果行标签是默认的整数(0,1,2…),效果和 iloc 一致。
# 选择标签为 0 和 2 的行(默认整数标签)
selected_rows = df.loc[[0, 2]]
print("\nloc选择标签为0和2的行:")
print(selected_rows)
输出结果:
loc选择标签为0和2的行:
姓名 年龄 城市 销售额
0 小明 20 北京 1000
2 小刚 21 广州 800
第三步:条件筛选(根据条件选行)¶
条件筛选是指根据某列的条件(如“年龄>21岁”“销售额>1000”)选择满足条件的行。核心是布尔索引。
3.1 单条件筛选¶
直接用 df[条件],条件为某列的比较表达式(如 df['年龄'] > 21)。
# 筛选年龄大于21岁的行
filtered_by_age = df[df['年龄'] > 21]
print("年龄大于21岁的行:")
print(filtered_by_age)
输出结果:
年龄大于21岁的行:
姓名 年龄 城市 销售额
1 小红 22 上海 1500
3 小丽 23 深圳 2000
3.2 多条件筛选¶
如果需要同时满足多个条件,用 &(且)或 |(或)连接条件,每个条件必须用括号包裹。
# 筛选:销售额>1000 且 城市是上海
filtered_by_sales_and_city = df[(df['销售额'] > 1000) & (df['城市'] == '上海')]
print("\n销售额>1000且城市是上海的行:")
print(filtered_by_sales_and_city)
输出结果:
销售额>1000且城市是上海的行:
姓名 年龄 城市 销售额
1 小红 22 上海 1500
总结¶
通过以上 3 步,你已经掌握了 DataFrame 数据选择与筛选的核心技巧:
1. 列选择:用 df['列名'](单列)或 df[['列名1','列名2']](多列)
2. 行选择:用 iloc[位置](整数位置)或 loc[标签](自定义标签)
3. 条件筛选:用 df[条件](单条件)或 df[(条件1) & (条件2)](多条件)
关键提醒:多条件筛选时,必须用 &/| 代替 and/or,且每个条件加括号!
多动手练习,很快就能熟练掌握这些操作,为后续数据分析打下基础~