pandas:【集計】sum,max/min,mean
前提
- データフレーム作成
集計
データフレーム作成
df = pd.DataFrame([[1., 2., 3.],
[4., 5., 6.],
[7., 8., 9.],
[np.nan, np.nan, np.nan]],
columns=['A', 'B', 'C'])
print(df)
A B C 0 1.0 2.0 3.0 1 4.0 5.0 6.0 2 7.0 8.0 9.0 3 NaN NaN NaN
- 列名
- A,B,C
- データ
- 1.0~9.0まで
- 4行目は空(np.nan)で埋める
※NaNが含まれる場合の動作を見る
行方向に集計(sum,max/min)
a = df.aggregate(['max'])
b = df.aggregate(['sum', 'min'])
print(a)
print(b)
A B C
max 7.0 8.0 9.0
A B C
sum 12.0 15.0 18.0
min 1.0 2.0 3.0
- 「df.aggregate」のエイリアス「df.agg」でも可
- 列ごとに集計
- max:最大値
- sum:合計
- min:最小値
- その他の集計
- mean,median,prod,std,…
- 例えば「’mean’」の代わりに「np.mean」としてもいい
列方向に集計
c = df.aggregate("mean", axis="columns")
print(c)
0 2.0 1 5.0 2 8.0 3 NaN dtype: float64
- 列方向に集計された
- 1行目:2.0
- 2行目:5.0
- 3行目:8.0
- 4行目:NaN
列ごとに集計方法を指定する
d = df.aggregate({'A' : ['sum', 'min'], 'B' : ['min', 'max']})
print(d)
A B sum 12.0 NaN min 1.0 2.0 max NaN 8.0
- A列
- sumとmin
- maxは指定していないので、その行はNaN
- B列
- minとmax
- sumは指定していないので、その行はNaN
- 結果は3行
- sum,min,maxの3行
行の見出しを変更
e = df.aggregate(x=('A', max), y=('B', 'min'), z=('C', np.mean))
print(e)
A B C x 7.0 NaN NaN y NaN 2.0 NaN z NaN NaN 6.0
- 行の見出しが変更された
- 「max」が「x」
- 「min」が「y」
- 「mean」が「z」
