中央値とは
中央値とはデータを小さい順に並べたデータのちょうど中央にあるデータのことですが、データが偶数個の場合にはちょうど中央にくる値がないので、中央に最も近い2つの値の平均値を中央値とします。今回はPythonで中央値を求めてみます。
中央値を求める その1
組み込み関数のlen()関数とsort()関数を使用して中央値を求めます。
median1.py
score = [48,52,46,48,53,58,52,48,51,63]
# データの数の半分を求める
half = len(score) // 2
# データを昇順に並べ替える
score.sort()
# データの数が偶数・奇数の場合で場合分け
if len(score) % 2 == 0:
mdn = (score[half - 1] + score[half]) / 2.0
else:
mdn = score[half]
print("中央値は", mdn, "です。")
# 出力結果
# 中央値は 51.5 です。
中央値を求める その2
標準ライブラリstatisticsのmedian()関数を使用して中央値を求めます。その1と違ってデータをソートする必要がないので楽ですね。ちなみに今回の例のようにデータが偶数個の場合にmedian_low()関数を使うと、中央2個の値の小さい方の値、median_high()関数を使うと中央2個の値の大きい方の値を返します。
median2.py
import statistics
score = [48,52,46,48,53,58,52,48,51,63]
mdn = statistics.median(score)
print("中央値は", mdn, "です。")
# 出力結果
# 中央値は 51.5 です。
中央値を求める その3
数値計算ライブラリのNumPyにあるmedian()関数を使用して中央値を求めます。
median3.py
import numpy as np
score = score = [48,52,46,48,53,58,52,48,51,63]
mdn = np.median(score)
print("中央値は", mdn, "です。")
# 出力結果
# 中央値は 51.5 です。
中央値を求める その4
今度はNumPyのpercentile()関数を使用して中央値を求めてみます。データの数が偶数個なのでpercentile()の第二引数に50パーセンタイルを指定しています。
median4.py
import numpy as np
score = [48,52,46,48,53,58,52,48,51,63]
# 第二引数に50パーセンタイルを指定
mdn = np.percentile(score, 50)
print("中央値は", mdn, "です。")
# 出力結果
# 中央値は 51.5 です。
中央値を求める その5
データ解析ライブラリのPanadasにあるDataFrame.median()関数を使用して中央値を求めます。ただしPandasはこの例のような少ないデータを処理するために使うものではないですが、中央値を求めるには色々なやり方があるよということで例に挙げます。
median5.py
import pandas as pd
# DataFrame型のデータを準備
score = pd.DataFrame([48,52,46,48,53,58,52,48,51,63])
# score[n]で中央値を求めたい列を指定
mdn = score[0].median()
print("中央値は", mdn, "です。")
# 出力結果
# 中央値は 51.5 です。