目次
GroupByによるデータ集計の基本
データ分析において、特定の属性ごとにデータをグループ化し、それぞれの統計値を確認する作業は非常に重要です。Pandasライブラリの groupby メソッドを使用すると、SQLのGROUP BY句のようにデータをまとめ、平均や合計などを簡単に算出できます。
サンプルデータの準備
まず、集計の対象となるデータフレームを作成します。ここでは、製品カテゴリ、単価、在庫数のデータを含むシナリオを想定します。
import pandas as pd
# オリジナルデータの定義
# 製品カテゴリ、単価、在庫数
inventory_data = {
"Category": ["Electronics", "Furniture", "Electronics", "Stationery", "Furniture", "Stationery"],
"Price": [55000, 12000, 48000, 500, 15000, 450],
"Stock": [15, 8, 22, 100, 5, 120]
}
df = pd.DataFrame(inventory_data)
print("--- 元のデータフレーム ---")
print(df)
統計量の集計メソッド
groupby でグループ化した後、続けて統計用メソッドを呼び出すことで、カテゴリ別の数値を算出できます。
各種統計量の算出
主要な統計量である平均(mean)、合計(sum)、最小値(min)、最大値(max)、分散(var)、標準偏差(std)を個別に算出する方法は以下の通りです。
# カテゴリごとにグループ化
grouped = df.groupby("Category")
# 平均値の算出
mean_df = grouped.mean(numeric_only=True)
print("\n--- 平均値 (mean) ---")
print(mean_df)
# 合計値の算出
sum_df = grouped.sum(numeric_only=True)
print("\n--- 合計値 (sum) ---")
print(sum_df)
# 最小値の算出
min_df = grouped.min()
print("\n--- 最小値 (min) ---")
print(min_df)
# 最大値の算出
max_df = grouped.max()
print("\n--- 最大値 (max) ---")
print(max_df)
# 分散の算出
var_df = grouped.var(numeric_only=True)
print("\n--- 分散 (var) ---")
print(var_df)
# 標準偏差の算出
std_df = grouped.std(numeric_only=True)
print("\n--- 標準偏差 (std) ---")
print(std_df)
実行結果
上記のコードを実行すると、次のような出力が得られます。
--- 元のデータフレーム ---
Category Price Stock
0 Electronics 55000 15
1 Furniture 12000 8
2 Electronics 48000 22
3 Stationery 500 100
4 Furniture 15000 5
5 Stationery 450 120
--- 平均値 (mean) ---
Price Stock
Category
Electronics 51500.0 18.5
Furniture 13500.0 6.5
Stationery 475.0 110.0
--- 合計値 (sum) ---
Price Stock
Category
Electronics 103000 37
Furniture 27000 13
Stationery 950 220
--- 最小値 (min) ---
Price Stock
Category
Electronics 48000 15
Furniture 12000 5
Stationery 450 100
--- 最大値 (max) ---
Price Stock
Category
Electronics 55000 22
Furniture 15000 8
Stationery 500 120
--- 分散 (var) ---
Price Stock
Category
Electronics 24500000.0 24.5
Furniture 4500000.0 4.5
Stationery 1250.0 200.0
--- 標準偏差 (std) ---
Price Stock
Category
Electronics 4949.747468 4.949747
Furniture 2121.320344 2.121320
Stationery 35.355339 14.142136
統計量の意味と補足
分散(Variance)はデータのばらつき度合いを示し、各数値と平均値の差を2乗したものの平均値として定義されます(不偏分散の場合は n-1 で除算)。 標準偏差(Standard Deviation)は分散の正の平方根であり、元のデータと同じ単位でばらつきを表現する指標です。
Pandasでは、デフォルトで不偏分散および不偏標準偏差が計算されます。これらを用いることで、カテゴリごとのデータ傾向を詳細に把握することが可能になります。
