Pandasでピボットテーブル!aggfuncの使い方と活用例

はじめに

ピボットテーブルは、データ解析やデータ処理でよく使用される便利な機能です。Pandasライブラリのpivot_table関数を使用することで、簡単にピボットテーブルを作成することができます。この記事では、pivot_table関数のaggfuncオプションに焦点を当て、その使い方と活用例について詳しく解説します。

ピボットテーブルの基本的な作成方法

まずは、ピボットテーブルの基本的な作成方法から見ていきましょう。Pandasのpivot_table関数は、データフレームをグループ化してピボットテーブルを作成するための強力なツールです。以下のようなデータフレームがあるとします。

import pandas as pd
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'Alice', 'Bob', 'Charlie'],
    'Subject': ['Math', 'Math', 'Math', 'Science', 'Science', 'Science'],
    'Score': [90, 85, 95, 80, 75, 85]
}
df = pd.DataFrame(data)
print(df)

このデータフレームをピボットテーブルに変換するには、以下のようにpivot_table関数を使用します。

pivot_table_df = df.pivot_table(index='Name', columns='Subject', values='Score')
print(pivot_table_df)

上記のコードでは、’Name’列を行インデックスに、’Subject’列を列インデックスに、’Score’列を値に指定しています。これにより、以下のようなピボットテーブルが作成されます。

Subject Math Science
Name 
Alice     90      80
Bob       85      75
Charlie   95      85

aggfuncオプションの役割と利点

pivot_table関数には、aggfuncオプションがあります。aggfuncオプションを使用することで、ピボットテーブルの値を集計する際に統計関数を適用することができます。aggfuncオプションを使用することで、ピボットテーブルの作成だけでなく、データの集計も同時に行うことができるという利点があります。

aggfuncで使用できる統計関数の例

aggfuncオプションで使用できる統計関数には、以下のようなものがあります。

  • sum: 合計
  • mean: 平均
  • median: 中央値
  • min: 最小値
  • max: 最大値
  • count: 要素数
  • std: 標準偏差
  • var: 分散

これらの統計関数をaggfuncオプションで指定することで、ピボットテーブルの値を集計することができます。

複数のaggfuncを同時に適用する方法

aggfuncオプションでは、複数の統計関数を同時に適用することも可能です。以下の例をご覧ください。

pivot_table_df = df.pivot_table(index='Name', columns='Subject', values='Score', aggfunc=['mean', 'min', 'max'])
print(pivot_table_df)

上記のコードでは、’mean’、’min’、’max’の3つの統計関数を同時に適用しています。これにより、以下のようなピボットテーブルが作成されます。

        mean         min          max 
Subject Math Science Math Science Math Science
Name 
Alice     90      80   90      80   90      80
Bob       85      75   85      75   85      75
Charlie   95      85   95      85   95      85

カスタムaggfuncを作成して適用する方法

aggfuncオプションでは、組み込みの統計関数だけでなく、独自の関数(カスタムaggfunc)を作成して適用することも可能です。以下の例をご覧ください。

def custom_aggfunc(arr):
    return arr.sum() / arr.count()
pivot_table_df = df.pivot_table(index='Name', columns='Subject', values='Score', aggfunc=custom_aggfunc)
print(pivot_table_df)

上記のコードでは、カスタムaggfuncとして、要素の合計を要素数で割る関数を定義しています。これにより、以下のようなピボットテーブルが作成されます。

Name     Math    Science
Alice    90.0    80.0
Bob      85.0    75.0
Charlie  95.0    85.0

まとめ

この記事では、Pandasのpivot_table関数のaggfuncオプションの使い方と活用例について解説しました。aggfuncオプションを使用することで、ピボットテーブルの値を集計する際に統計関数を適用することができます。また、複数の統計関数や独自の関数(カスタムaggfunc)を同時に適用することも可能です。ピボットテーブルを活用することで、データの集計や分析を効率的に行うことができます。