pandas數據處理三:數據聚合&高級數據聚合
數據聚合
- 數據聚合是數據處理的最後一步,通常是要使每一個數組生成一個單一的數值。
- 數據分類處理:
- 分組:先把數據分爲幾組
- 聚合 , 求分組組內的數據聚合
- 合併:把不同組得到的結果合併起來
- 數據分類處理的核心: groupby()函數
例子:統計出color的總price, 再合併到原表種
df = DataFrame({'color':['red','white','red','cyan','cyan','green','white','cyan'],
'price':np.random.randint(0,8,size = 8),
'weight':np.random.randint(50,55,size = 8)})
df
分組
# 分組
df.groupby(by='color')
使用.groups屬性查看各行的分組情況:
# 查看分組的情況.groups
df.groupby(by='color').groups
聚合:
# 以color作爲分類索引,計算出每個顏色的price總和,weight總和
df.groupby(by='color').sum()
# 推薦寫法
# 分組&聚合
price_sum = df.groupby(by='color')[['price']].sum()
price_sum
查看元數據
df
合併
# 合併
pd.merge(df, price_sum, left_on='color', right_index=True, suffixes=['', '_sum'])
高級數據聚合
-
可以使用pd.merge()函數將聚合操作的計算結果添加到df的每一行
-
使用groupby分組後調用加和等函數進行運算,讓後最後可以調用add_prefix(),來修改列名
-
“高級”在於可以在合併前先修改索引前後綴,而且可以給列統一加後綴
weight_sum = ddd.groupby(by='item')[['weight']].sum() weight_sum
weight_sum.add_suffix('_sum')
# 用來給列統一加後綴. ddd.add_suffix('_test')
# 前綴prefix ddd.add_prefix('test_')
-
可以使用transform和apply實現相同功能
在transform或者apply中傳入函數即可
萬能函數 apply()
why? 因爲它能把字符串也聚合起來
# 萬能 函數
ddd.groupby(by='item').apply(sum)