上次說了要怎麼創建 DataFrame 和基本操作,這次來說說一些比較進階的操作。
一樣使用上次的範例。
data = [
['Alice', 25, 'New York'],
['Bob', 30, 'Los Angeles'],
['Charlie', 35, 'Chicago']
]
df1 = pd.DataFrame(data, columns=['Name', 'Age', 'City'])
添加和刪除列
添加新列:可以直接為 DataFrame 添加新列,並為其賦值。
df1['Category'] = ['Young' if age < 30 else 'Old' for age in df1['Age']]
print(df1)
刪除列:使用 drop() 函數可以刪除指定的列。
df1 = df1.drop('Category', axis=1)
print(df1)
刪除列時需要指定 axis=1。1 為列 0 為行
選擇資料
選擇特定的行和列:可以使用 loc 或 iloc 選擇特定的行和列。
print(df1.loc[0]) # 選擇第一行
print(df1.loc[:, ['Name', 'Age']]) # 選擇所有行的 'Name' 和 'Age' 列
print(df1.iloc[0]) # 選擇第一行
print(df1.iloc[:, [0, 1]]) # 選擇所有行的第 0 和第 1 列
兩著差別在於 loc 是用標籤,而 iloc 是用索引。
處理缺失值
檢查缺失值:使用 isnull() 可以檢查 DataFrame 中的缺失值。print(df1.isnull())
填充缺失值:使用 fillna() 可以填充缺失值。df1['Age'].fillna(0, inplace=True)
刪除缺失值:使用 dropna() 可以刪除包含缺失值的行或列。df1.dropna(inplace=True)
合併與拼接
合併:使用 merge() 可以根據共同的列合併兩個 DataFrame。
df_a = pd.DataFrame({'Name': ['Alice', 'Bob'], 'Age': [25, 30]})
df_b = pd.DataFrame({'Name': ['Alice', 'Bob'], 'City': ['New York', 'Los Angeles']})
df_c= pd.merge(df_a, df_b, on='Name')
print(df_c)
拼接 DataFrame:使用 concat() 可以將多個 DataFrame 拼接在一起。
df_d = pd.DataFrame({'A': ['A0', 'A1', 'A2'], 'B': ['B0', 'B1', 'B2']})
df_e = pd.DataFrame({'A': ['A3', 'A4', 'A5'], 'B': ['B3', 'B4', 'B5']})
df_f = pd.concat([df_d, df_e])
print(df_f)
排序
按列排序:使用 sort_values() 可以對 DataFrame 進行排序。
df1.sort_values(by='Age', inplace=True)
print(df1)
按索引排序:使用 sort_index() 可以根據索引對 DataFrame 進行排序。
df1.sort_index(inplace=True)
print(df1)