【Python】Pandasで平均・最大・最小などの基本統計量を算出する

データ分析の初期段階では、データの全体像を把握するために「平均値」や「中央値」、「標準偏差」といった基本統計量(記述統計量)を確認することが重要です。PandasのDataFrameには、これらの数値を算出するためのメソッドが豊富に用意されています。

本記事では、個別の統計量を求める方法と、describe() メソッドを用いて主要な統計量を一括で確認する方法について解説します。

目次

主要な統計量算出メソッド一覧

DataFrameやSeriesに対して呼び出すことができる主なメソッドは以下の通りです。これらはデフォルトでは「列(カラム)」ごとに計算されます。

メソッド意味備考
count()要素数欠損値(NaN)は除外されます
mean()平均値
median()中央値データを順に並べた真ん中の値
mode()最頻値最も頻繁に出現する値(複数存在する場合あり)
max()最大値
min()最小値
std()標準偏差データのばらつき具合(不偏標準偏差)
var()分散標準偏差の2乗(不偏分散)
sample()ランダム抽出統計量ではありませんが、データのサンプリングに使用
describe()要約統計量上記の主要な値をまとめて算出

実装サンプルコード

ここでは、ある不動産物件のリスト(価格、面積、築年数)を題材に、各統計量を算出します。

import pandas as pd

def calculate_statistics():
    """
    Pandas DataFrameを用いて基本統計量を算出する関数
    """
    
    # 1. サンプルデータの作成: 不動産物件データ
    # Price: 価格(万円), Area: 面積(m2), Age: 築年数
    property_data = {
        "Price": [3500, 4200, 2800, 5500, 4200],
        "Area": [45.5, 60.0, 38.2, 85.0, 55.0],
        "Age": [15, 5, 25, 2, 12]
    }
    
    df = pd.DataFrame(property_data)
    
    print("--- 元のデータセット ---")
    print(df)
    print("\n")


    # 2. 個別の統計量を算出
    print("=== 個別の統計量 ===")
    
    # 平均値 (Mean)
    # 各列の平均がSeriesとして返されます
    mean_val = df.mean()
    print(f"[平均値]\n{mean_val}\n")
    
    # 中央値 (Median)
    median_val = df.median()
    print(f"[中央値]\n{median_val}\n")
    
    # 最頻値 (Mode)
    # 最頻値は複数存在する可能性があるため、DataFrame形式で返されます
    mode_val = df["Price"].mode()
    print(f"[価格の最頻値]: {mode_val[0]} 万円\n")

    # 標準偏差 (Std)
    std_val = df.std()
    print(f"[標準偏差]\n{std_val}\n")


    # 3. 要約統計量の一括取得 (describe)
    print("=== 要約統計量 (describe) ===")
    # count, mean, std, min, 25%, 50%, 75%, max が一度に計算されます
    description = df.describe()
    print(description)
    print("\n")
    
    
    # 4. ランダムサンプリング (sample)
    print("=== ランダムサンプリング ===")
    # ランダムに2件のデータを抽出
    # random_stateを固定すると再現性が保たれます
    sampled_df = df.sample(n=2, random_state=1)
    print(sampled_df)

if __name__ == "__main__":
    calculate_statistics()

実行結果

--- 元のデータセット ---
   Price  Area  Age
0   3500  45.5   15
1   4200  60.0    5
2   2800  38.2   25
3   5500  85.0    2
4   4200  55.0   12


=== 個別の統計量 ===
[平均値]
Price    4040.00
Area       56.74
Age        11.80
dtype: float64

[中央値]
Price    4200.0
Area       55.0
Age        12.0
dtype: float64

[価格の最頻値]: 4200 万円

[標準偏差]
Price    993.981891
Area      17.954052
Age        9.093954
dtype: float64


=== 要約統計量 (describe) ===
             Price       Area        Age
count     5.000000   5.000000   5.000000
mean   4040.000000  56.740000  11.800000
std     993.981891  17.954052   9.093954
min    2800.000000  38.200000   2.000000
25%    3500.000000  45.500000   5.000000
50%    4200.000000  55.000000  12.000000
75%    4200.000000  60.000000  15.000000
max    5500.000000  85.000000  25.000000


=== ランダムサンプリング ===
   Price  Area  Age
2   2800  38.2   25
1   4200  60.0    5

解説:describe()メソッドの利便性

describe() メソッドは、データの傾向を瞬時に掴むのに非常に強力なツールです。

  • count: データの個数(欠損値を除く)
  • mean: 平均値
  • std: 標準偏差
  • min / max: 最小値と最大値
  • 25%, 50%, 75%: 四分位数(50%は中央値と同じ)

データフレームを読み込んだ直後にまず df.describe() を実行し、データの大まかな分布や異常値の有無(極端なmax/minがないかなど)を確認するのが、データ分析の定石フローの一つです。

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

この記事を書いた人

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

目次