Pandasのgroupbyを使いこなすためのガイド

1: Pandasの基本的なgroupbyの使い方

Pandasのgroupbyは、データを特定のキーでグループ化し、その後にさまざまな集計や計算を行うための強力なツールです。データの分析や集計処理において、多くのシチュエーションで使用されます。ここでは、基本的な使い方と簡単なサンプルコードを紹介します。

1-1: groupbyを用いたデータのグループ化

groupbyは、DataFrameを特定の列を基準にグループ化します。以下のサンプルデータを使って見ていきましょう。

import pandas as pd

# サンプルデータ
data = {'名前': ['田中', '鈴木', '佐藤', '田中', '鈴木'],
        '年齢': [23, 35, 25, 23, 40],
        '得点': [80, 90, 70, 85, 78]}
df = pd.DataFrame(data)

# 名前ごとにグループ化
grouped = df.groupby('名前')
print(grouped.mean())

このコードでは、名前ごとにデータがグループ化され、各グループの平均値が計算されます。

pandas groupby "grouped.mean()"

1-2: DataFrameでのgroupbyの基本メソッド

グループ化されたデータに対して、meansumといったメソッドを使って集計が可能です。以下の例では、グループごとの合計得点を計算します。

# 名前ごとの合計得点
print(grouped.sum())
groupby grouped.sum

2: groupbyでの集計と計算の方法

groupbyを使えば、複数の集計を一度に行うこともできます。aggメソッドを使えば、グループ化されたデータに対して複数の操作を同時に行うことが可能です。

2-1: aggメソッドを使った複数条件の集計

以下のコードは、名前ごとに平均得点と得点の合計を一度に計算する例です。

# 平均得点と合計得点を計算
agg_results = grouped['得点'].agg(['mean', 'sum'])
print(agg_results)
groupby agg

3: 複数キーや複数列でのグループ化

groupbyでは、複数の列をキーとして指定してデータをグループ化することも可能です。これにより、より細かい分析が可能になります。

3-1: 複数列を使ったデータのグループ分け

次の例では、名前と年齢をキーにしてデータをグループ化します。

# 名前と年齢をキーにグループ化
multi_grouped = df.groupby(['名前', '年齢'])
print(multi_grouped.sum())
groupby multi_grouped

4: applyメソッドによる柔軟な処理

applyメソッドを使うと、カスタム関数をグループに適用することができます。これにより、標準的な集計メソッドでは対応できない複雑な処理が可能になります。

4-1: applyでの関数適用とデータ処理

以下のコードでは、得点が80点以上の学生の名前をリスト化します。

# 80点以上の学生の名前をリスト化
high_scores = grouped.apply(lambda x: x[x['得点'] >= 80])
print(high_scores)
groupeby high_scores

5: NaNや欠損値を含むデータの処理

データ分析の現場では、欠損値が含まれることがよくあります。groupbyは、欠損値を含むデータに対しても柔軟に対応できます。

5-1: NaNデータを含む場合のgroupby挙動

欠損値が含まれる場合、groupbyはどのように動作するのかを見てみましょう。以下のサンプルデータを使います。

# サンプルデータに欠損値を追加
data = {'名前': ['田中', '鈴木', '佐藤', '田中', None],
        '年齢': [23, 35, 25, 23, 40],
        '得点': [80, 90, None, 85, 78]}
df = pd.DataFrame(data)

# グループ化と集計
grouped = df.groupby('名前')
print(grouped.mean())
groupby NaN

このコードでは、欠損値を含むグループを除外せずに平均を計算します。


このように、groupbyはデータのグループ化と集計において非常に強力なツールです。この記事では基本的な使い方から少し応用的なテクニックまでを紹介しましたが、実際のデータ分析ではさらに多様な方法で活用できます。ぜひ、あなたのプロジェクトに応じてこれらの方法を試してみてください。

上部へスクロール