在數據分析中,對數據的選擇和篩選是最基礎也最常用的操作。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,且每個條件加括號!

多動手練習,很快就能熟練掌握這些操作,爲後續數據分析打下基礎~

小夜