pandas提供了一個靈活高效的groupby功能,它使你能以一種自然的方式對資料集進行切片、切塊、摘要等操作。根據一個或多個鍵(可以是函數、陣列或DataFrame列名)拆分pandas對象。計算分組摘要統計,如計數、平均值、標準差,或使用者自訂函數。對DataFrame的列應用各種各樣的函數。應用組內轉換或其他運算,如規格化、線性回歸、排名或選取子集等。計算透視表或交叉表。執行分位數分析以及其他分組分析。
1、首先來看看下面這個非常簡單的表格型資料集(以DataFrame的形式):
>>> import pandas as pd
>>> df = pd.DataFrame({'key1':['a', 'a', 'b', 'b', 'a'],
... 'key2':['one', 'two', 'one', 'two', 'one'],
... 'data1':np.random.randn(5),
... 'data2':np.random.randn(5)})
>>> df
data1 data2 key1 key2
0 -0.410673 0.519378 a one
1 -2.120793 0.199074 a two
2 0.642216 -0.143671 b one
3 0.975133 -0.592994 b two
4 -1.017495 -0.530459 a one
假設你想要按key1進行分組,並計算data1列的平均值,我們可以訪問data1,並根據key1調用groupby:
>>> grouped = df['data1'].groupby(df['key1'])
>>> grouped
<pandas.core.groupby.SeriesGroupBy object at 0x04120D70>
變數grouped是一個GroupBy物件,它實際上還沒有進行任何計算,只是含有一些有關分組鍵df['key1']的中間資料而已,然後我們可以調用GroupBy的mean方法來計算分組平均值:
grouped.mean()
key1
a -1.182987
b 0.808674
dtype: float64