Python データの前処理において、役立つ集計処理のaggメソッド「Pandas」

 データの前処理で使うpandas には、データを要約・集約するための agg メソッドがあり、これを使いこなせるようになると、複雑な集計処理もシンプルに記述できるようになります。本記事では、agg メソッドの使い方を、具体的な例で解説します。

aggメソッドとは?

aggaggregation(集約) の略で、複数の統計関数を簡単に適用できる pandas のメソッドです。特に、データをグループ化してから計算する際に役立ちます。

基本構文

DataFrame.agg(func, axis=0)
  • func: 適用する関数、リスト、または辞書。summean などの集計関数を指定します。
  • axis: 処理を適用する軸。0(デフォルト)は行方向、1 は列方向を指定します。

実例aggの使い方

1. 単一の関数を適用する場合

まずは、データフレーム全体に対して、1つの関数を適用する基本的な使い方です。

import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8]
})

# 各列の合計を計算
print(df.agg('sum'))

出力:

A    10
B    26
dtype: int64

2. 複数の関数を同時に適用する場合

import pandas as pd

df = pd.DataFrame({
'A': [1, 2, 3, 4],
'B': [5, 6, 7, 8]
})

# 平均と合計を一緒に計算
print(df.agg(['mean', 'sum']))

出力:

            A     B
mean     2.5   6.5
sum     10    26

3. 列ごとに異なる関数を適用する場合

import pandas as pd

df = pd.DataFrame({
'A': [1, 2, 3, 4],
'B': [5, 6, 7, 8]
})

#列 'A' には 'sum'、列 'B' には 'mean' を適用
print(df.agg({'A': 'sum', 'B': 'mean'}))
出力:
A    10
B    6.5
dtype: float64

4. groupby と組み合わせた集約

import pandas as pd

df = pd.DataFrame({ 'Category': ['A', 'A', 'B', 'B'], 'Values': [10, 20, 30, 40] }) # カテゴリごとに合計と平均を計算 print(df.groupby('Category').agg(['sum', 'mean']))
出力:
          Values     
             sum mean
Category               
A            30   15.0
B            70   35.0

5. カスタム関数の適用

import pandas as pd

df = pd.DataFrame({
    'A': [10, 20, 30, 40],
    'B': [5, 15, 25, 35],
    'C': [100, 150, 200, 250]
})

# 各列の最大値と最小値の差を計算
result = df.agg(lambda x: x.max() - x.min())
print(result)

出力:

A     30
B     30
C    150
dtype: int64

よく使われる集約関数

agg に指定できる関数は多数ありますが、よく使われるものを以下にまとめました。

  • sum: 合計
  • mean: 平均
  • max / min: 最大値 / 最小値
  • count: 要素の数
  • std: 標準偏差

まとめ

agg メソッドを使うことで、pandas のデータフレームに対して効率的かつ柔軟に集約処理を行うことができます。特に、異なる関数を列ごとに適用したり、複数の関数を同時に適用したりする場合には非常に便利です。

以上

<広告>