在數據分析中,對數據的選擇和篩選是最基礎也最常用的操作。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,且每個條件加括號!
多動手練習,很快就能熟練掌握這些操作,爲後續數據分析打下基礎~