1. 程式人生 > >python庫學習筆記——分組計算利器:pandas中的groupby技術

python庫學習筆記——分組計算利器:pandas中的groupby技術

        最近處理資料需要分組計算,又用到了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進行資料分析》