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」


Posted by futa