【Python】Pandasでカテゴリごとに統計値を集計するgroupbyの使い方

目次

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では、デフォルトで不偏分散および不偏標準偏差が計算されます。これらを用いることで、カテゴリごとのデータ傾向を詳細に把握することが可能になります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次