python庫學習筆記——分組計算利器:pandas中的groupby技術
阿新 • • 發佈:2019-02-13
最近處理資料需要分組計算,又用到了groupby函式,溫故而知新。
分組運算的第一階段,pandas 物件(無論是 Series、DataFrame 還是其他的)中的資料會根據你所提供的一個或多個鍵被拆分(split)為多組。拆分操作是在物件的特定軸上執行的。例如,DataFrame 可以在其行(axis=0)或列(axis=1)上進行分組。然後,將一個函式應用到各個分組併產生一個新值。最後,所有這些函式的執行結果會被合併到最終的結果物件中。結果物件的形式一般取決於資料上所執行的操作。
舉例說明,生成隨機DataFrame資料
輸入
df = DataFrame({'key1':['a','a','b','b','a'], 'key2':['one','two','one','two','one'], 'data1':np.random.randn(5), 'data2':np.random.randn(5)})
輸出df
假設我們想要按 key1 進行分組,並計算 data1 列的平均值。
輸入
df['data1'].groupby(df['key1']).mean() or df.groupby('key1')['data1'].mean()
輸出
key1
a 0.310092
b -0.785952
Name: data1, dtype: float64
假設我們想要按 key1 ,key2進行分組,並計算 data1 列的平均值。
輸入
df['data1'].groupby([df['key1'],df['key2']]).mean() or df.groupby(['key1','key2'])[['data1']].mean()
輸出
key1 key2
a one -0.078753
two 1.087782
b one -1.346429
two -0.225475
Name: data1, dtype: float64
另外,我們可以對分組進行迭代,以多重鍵為例:
輸入
for name,group in df.groupby('key1'):
print (name)
print (group)
輸出
a data1 data2 key1 key2 0 0.033971 0.066088 a one 1 1.087782 -0.095748 a two 4 -0.191477 -0.057805 a one b data1 data2 key1 key2 2 -1.346429 0.648059 b one 3 -0.225475 1.440988 b two
參考資料:《利用python進行資料分析》