Skip to content

7. データの集計とグループ化

pandas はデータを効率よく集計し、グループ化する強力な機能を持っています。このセクションでは、データの集計とグループ化の基本的な手法について学びます。以下のサブトピックでデータの集計とグループ化を詳しく見ていきましょう。

7.1 グループ化の基本

pandas のgroupby機能を使うことで、データを特定の基準でグループ化し、それぞれのグループに対してさまざまな計算を行うことができます。ここでは基本的な使い方を紹介します。

7.1.1 グループ化して集計する

import pandas as pd

# サンプルデータを作成
data = {'Fruit': ['Apple', 'Banana', 'Apple', 'Banana', 'Apple'],
        'Category': ['A', 'A', 'B', 'B', 'C'],
        'Price': [150, 120, 180, 110, 170]}

df = pd.DataFrame(data)

# 'Fruit'でグループ化し、Priceの合計を計算する
grouped = df.groupby('Fruit')['Price'].sum()
print(grouped)

説明:

この例では、果物ごとに価格の合計を算出しています。groupby('Fruit')で"Fruit"列を基準にグループ化し、sum()関数で各グループの合計を取得しています。

7.2 複数列でのグループ化

pandas では、複数の列を基にグループ化することも可能です。次に、その方法について見ていきましょう。

7.2.1 複数列での集計

# 'Fruit'と'Category'の組み合わせでグループ化し、価格の平均を計算する
grouped_multi = df.groupby(['Fruit', 'Category'])['Price'].mean()
print(grouped_multi)

説明:

この例では、"Fruit"と"Category"の 2 つの列でグループ化し、それぞれの組み合わせの価格の平均を計算しています。

7.3 グループごとの操作と変換

グループ化したデータに対して、集計以外の操作を行うこともできます。例えば、各グループ内のデータを操作することが可能です。

7.3.1 各グループでの変換

# 'Fruit'ごとに価格の標準偏差を計算し、新しい列として追加
df['Price_std'] = df.groupby('Fruit')['Price'].transform('std')
print(df)

説明:

ここでは、"Fruit"ごとに価格の標準偏差を計算し、その結果を新しい列としてデータフレームに追加しています。

7.4 グループ化オブジェクトの把握

groupbyで出来上がったオブジェクトを理解しておくと、さらなるデータ操作がしやすくなります。

7.4.1 グループ化オブジェクトの属性とメソッド

# グループ化オブジェクトを観察
grouped = df.groupby('Fruit')
for name, group in grouped:
    print('Group name:', name)
    print(group)

説明:

このコードは、"Fruit"でグループ化したデータを繰り返し処理し、それぞれのグループ名とグループ内容を出力しています。この方法を使うことで、各グループのデータをより詳しく調査できます。

以上が、データの集計とグループ化の基本的な使い方です。pandas を用いることで、大規模データセットから素早く有用な情報を引き出すことができます。データ分析において非常に重要なスキルですので、ぜひ慣れてみてください。