Pythonの Pandas で中央値(median)を取得する方法はいくつかあります。
ここでは基本的な使い方から、実務でよく使う応用パターンまで詳しく解説します。
目次
基本:Seriesから中央値を取得
Pandasの Series
(1次元データ)では、 .median()
メソッドを使います。
import pandas as pd
# サンプルデータ
data = pd.Series([1, 2, 3, 4, 5, 100])
# 中央値を取得
median_value = data.median()
print(median_value) # 3.5
- データが偶数個 → 真ん中2つの平均値
- データが奇数個 → 真ん中の値
DataFrameで列ごとに中央値を取得
DataFrame
では複数列を持つので、各列ごとに中央値を計算できます。
df = pd.DataFrame({
"A": [1, 2, 3, 4, 5],
"B": [10, 20, 30, 40, 50],
"C": [7, 8, 9, 10, 11]
})
print(df.median())
特定の列だけ指定する場合
print(df["A"].median()) # 3.0
行ごとに中央値を取得(axisオプション)
列単位だけでなく、行ごとに中央値を計算することも可能です。
# 行方向(axis=1)の中央値
print(df.median(axis=1))
欠損値(NaN)がある場合
.median()
はデフォルトで NaNを無視して計算 します。
data_with_nan = pd.Series([1, 2, None, 4, 5])
print(data_with_nan.median()) # 3.0
もしNaNを含めて計算したい場合は、事前に埋める必要があります。
print(data_with_nan.fillna(0).median()) # 2.0
グループごとの中央値(groupby)
カテゴリごとに中央値を計算する場合は groupby()
と組み合わせます。
df2 = pd.DataFrame({
"Category": ["A", "A", "B", "B", "B"],
"Value": [10, 20, 15, 25, 35]
})
print(df2.groupby("Category")["Value"].median())
応用:describe()でまとめて統計量を見る
中央値だけでなく、平均値・標準偏差・最大最小などまとめて確認するなら describe()
が便利です。
print(df.describe())
出力には「50%」という行があり、これが中央値です。
まとめ
- Series.median() → 1次元データの中央値
- DataFrame.median() → 各列(または行)の中央値
- NaNは無視される(埋めたい場合は
fillna()
) - groupby() + median() でグループ別の中央値
- describe() で中央値を含む統計要約を一括確認
以上、PythonのPandasで中央値を取得する方法についてでした。
最後までお読みいただき、ありがとうございました。