【Pandasで簡単表示】.agg()でデータを集計する。最小値・最大値・平均値・中央値・標準偏差。

Pandasのデータをさまざまなかたちで集計する関数が.agg()です。

groupby()で、グループを指定します。

import pandas as pd 
import numpy as np
df = pd.DataFrame({'A': [1, 1, 2, 2, 3, 3, 4, 5, 5, 5],
                   'B': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
                   'C': np.random.randn(10)})

'A'では、1,2,3,5が複数存在し、4は1つしか存在していないところに注目してください。groupby()メソッドを'A'に適用した時、'A'における「かぶり」が除外されます。その様子をあとでお見せするために、あえて「かぶり」を存在させています。

'C'では、np.random.randn()という関数を用いています。randn()はガウス分布でランダムな数値を出力してくれます。


df

df.groupby('A').agg('min')

Aが1,2,3,4,5にグループ化されたことがわかります。

たとえば、Aが1の時、Bにおける最小値は1<2なので1。Cにおける最小値は-1.956468<-1.569548なので-1.956468のほうが表示されます。最小値は'min'と指定し、.agg('min')という書き方をしています。


df.groupby('A').agg(['min', 'max', 'sum'])

このように、表示したい数値を複数指定することができます。


df.groupby('A').C.agg(['min', 'max', 'sum', 'mean', 'median', 'std'])

こちらの例では、Aでグルーピングして、Cの値を集計しています。.C.agg()となっており、Bが集計されていないことがわかります。
'min':最小値
'max':最大値
'mean':平均値
'median':中央値
'std':標準偏差


df.groupby('A').agg({'B': ['min', 'max'], 'C': 'sum'})

Aでグルーピングして、Bでは最小値と最大値、Cでは合計が見たい場合このように指定できます。