Pandas Series.median() 関数

Pandas 常用函数Pandas よく使われる関数


Series.median()Pandas で Series の中央値(中間値)を計算するための関数です。中央値はデータを並べ替えた後に中央の位置にある値であり、極端な値の影響を受けず、データの中心傾向を表すロバストな指標です。

データに外れ値や歪んだ分布が存在する場合、中央値は平均値よりもデータの中心位置を正確に反映できます。収入データ分析、住宅価格統計、成績分析などのシーンでよく使用されます。


基本構文とパラメータ

median()Series オブジェクトのメンバー関数であり、ドット演算子で直接呼び出します。

構文形式

Series.median(axis=None, skipna=True, level=None, numeric_only=None, **kwargs)

パラメータの説明

パラメータ 型 説明 デフォルト値
axis int 軸を指定します。Series は1行のデータしかないため、このパラメータは主に DataFrame との互換性のためにあります。 None
skipna bool True の場合、計算時に NaN 値をスキップします。False の場合、NaN に遭遇すると結果は NaN を返します。 True
level int または str Series が MultiIndex(多層インデックス)の場合、計算する階層を指定します。 None
numeric_only bool True の場合、数値型データのみに対して計算します。それ以外の場合は数値への変換を試みます。 False

戻り値

  • 戻り値の型:float
  • 説明:Series 内のすべての要素の中央値を返します。要素数が偶数の場合は、中央の2つの要素の平均値を返します。

例

簡単なものから複雑なものまでの一連の例を通して、Series.median()の使い方を完全に習得しましょう。

例1:基本的な使い方 - 奇数個の要素の中央値

奇数個の要素のデータの場合、中央値は並べ替えた後に中央に位置する値です。

例

import pandas as pd

# 従業員の収入を含む Series を作成
# ある部門の7名の従業員の月収をシミュレーション(単位:千元)
income = pd.Series([5, 6, 7, 8, 9, 10, 50])

# 中央値を計算
median_income = income.median()

print("従業員の月収(千元):")
print(income)
print()
print(f"平均収入:{income.mean():.2f} 千元")
print(f"中央値収入:{median_income} 千元")
print()
print("注意:平均値は極端な値(50千元)の影響を大きく受けますが、中央値は実際の水準をより反映できます。")

実行結果:

员工月收入(千元):
0     5
1     6
2     7
3     8
4     9
5    10
6    50
dtype: int64

平均收入:13.57 千元
中位数收入:8.0 千元

コード解説:

  • データを並べ替えた後:[5, 6, 7, 8, 9, 10, 50]
  • 中央の位置は4番目の要素(インデックス3)で、値は8です。
  • 極端な値(50)があるため、平均値(13.57)は引き上げられますが、中央値(8)は大多数の人の収入水準をより反映できます。

例2:偶数個の要素の中央値

偶数個の要素のデータの場合、中央値は中央の2つの要素の平均値です。

例

import pandas as pd

# 6個の要素を含む Series を作成
# 6名の学生の試験結果をシミュレーション
scores = pd.Series([75, 82, 88, 92, 95, 100])

# 中央値を計算
median_score = scores.median()

print("学生の試験結果:")
print(scores)
print()
print(f"平均点:{scores.mean():.2f}")
print(f"中央値:{median_score}")

実行結果:

学生考试成绩:
0    75
1    82
2    88
3    92
4    95
5   100
dtype: int64

平均成绩:88.67
中位数成绩:90.0

コード解説:

  • データを並べ替えた後:[75, 82, 88, 92, 95, 100]
  • 中央の2つの要素は88と92(インデックス2と3)です。
  • 中央値 = (88 + 92) / 2 = 90。

例3:欠損値を含むデータの処理

skipnaパラメータによって欠損値の処理方法が決まります。

例

import pandas as pd
import numpy as np

# 欠損値を含む Series を作成
data_with_nan = pd.Series([10, 20, np.nan, 30, 40, np.nan, 50])

print("欠損値を含むデータ:")
print(data_with_nan)
print()

# デフォルトは skipna=True で、NaN をスキップして中央値を計算
median_skipna = data_with_nan.median()
print(f"skipna=True(デフォルト)の場合の中央値:{median_skipna}")

# skipna=False を設定
median_no_skipna = data_with_nan.median(skipna=False)
print(f"skipna=False の場合の中央値:{median_no_skipna}")

実行結果:

包含缺失值的数据:
0    10.0
1    20.0
2       NaN
3    30.0
4    40.0
5       NaN
6    50.0
dtype: float64

skipna=True(默认)时的中位数:30.0
skipna=False 时的中位数:nan

コード解説:

  • 有効なデータ:[10, 20, 30, 40, 50]、合計5つの要素。
  • 並べ替えた後の中央の値:30。
  • skipna=Falseの場合、NaN が1つでもあれば NaN を返します。

例4:平均値と中央値を比較する適用シーン

歪んだデータを処理する際の中央値の利点を示します。

例

import pandas as pd

# ある住宅地の10世帯の月収データをシミュレーション
# 大多数の人の収入は3000〜5000元ですが、少数の高所得者がいます
income_data = pd.Series([3000, 3500, 3800, 4000, 4200, 4500, 4800, 5000, 8000, 50000])

print("住宅地の住民の月収データ(元):")
print(income_data)
print()

mean_income = income_data.mean()
median_income = income_data.median()

print(f"平均値:{mean_income:.2f} 元")
print(f"中央値:{median_income} 元")
print()

print("分析:")
print("平均値(10380元)は極端な値(50000元)によって大幅に引き上げられました。")
print("中央値(4350元)は大多数の住民の実際の収入水準をより反映できます。")
print("これが、統計部門が収入データを公表する際に中央値をより頻繁に使用する理由です。")

実行結果:

小区住户月收入数据(元):
0     3000
1     3500
2     3800
3     4000
4     4200
5     4500
6     4800
7     5000
8     8000
9    50000
dtype: int64

平均值:10380.00 元
中位数:4350.0 元

注意事項

  • 中央値は極端な値に影響されにくく、平均値よりもロバストです。
  • データ数が偶数の場合、中央値は中央の2つの数値の平均値です。
  • データに明らかに歪んだ分布がある場合、中央値は平均値よりもデータの中心位置を反映できます。
  • skipnaパラメータの動作はmean()と同じです。

まとめ

Series.median()はデータの中心傾向を表す重要な関数です。主な特徴は次のとおりです:

  • 極端な値の影響を受けず、計算結果がロバストです。
  • 偶数個の要素の場合、中央の2つの要素の平均値を返します。
  • 収入、住宅価格など歪んだ分布が存在するデータ分析で特に有用です。
  • 構文とパラメータはmean()と完全に同じで、学習と使用が簡単です。

実際のデータ分析では、データの分布特性をより包括的に把握するために、平均値と中央値を同時に計算することをお勧めします。両者の差が大きい場合、データに歪んだ分布や外れ値が存在する可能性があります。

Pandas 常用函数Pandas よく使われる関数

その他の拡張