在数据分析中,对数据的选择和筛选是最基础也最常用的操作。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 提供了 ilocloc 两种常用方法,分别基于位置标签选择。

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,且每个条件加括号!

多动手练习,很快就能熟练掌握这些操作,为后续数据分析打下基础~

小夜