【Python】中央値を求める方法を初心者向けにわかりやすく解説

はじめに

Pythonでデータを扱うときに重要になるのが中央値です。
特に数値データを集計して分析するとき、平均値だけでは偏りや外れ値に影響されやすいため、中央値を確認することがよくあります。

しかし、初心者の方にとっては「中央値をどうやってプログラムで求めるのか」が少し難しく感じられるかもしれません。
そこでこの記事では、Pythonにおける中央値の求め方を、初心者の皆さんにも分かりやすい言葉で解説します。

具体的には、Python標準ライブラリを使った方法や、NumPyなどのライブラリを使った方法を紹介し、実際にコードを書くときのイメージをつかめるようにします。
さらに、実務での活用シーンとも結びつけながら説明しますので、ぜひ参考にしてみてください。

この記事を読むとわかること

  • 中央値とは何か、どのようなシーンで必要になるか
  • Pythonで中央値を求める方法
  • Python標準ライブラリを使った基本的な手順
  • NumPyなどの便利なライブラリを利用する方法
  • 外れ値の影響を受けにくい分析の考え方

中央値とは何か

中央値は、数値の集合を並べ替えたときにちょうど真ん中に位置する値のことです。
もしデータ数が偶数の場合は、真ん中に位置する2つの値を足して2で割ったものが中央値として扱われます。

たとえば、【1、5、7、9、100】というようなデータがあった場合、平均値は約24.4ですが、中央値は7です。
こうした例からも分かるように、中央値は極端に大きい値(外れ値)の影響を受けにくい特徴があります。

中央値が必要とされる場面

一般的には、次のような場面で中央値が使われます。

  • データに外れ値が混在しているとき
  • 分布の偏りを確認したいとき
  • 平均値だけでは正確な状況を把握しにくいとき

たとえば、ユーザーのアクセス数や売上データなどに極端な数字が含まれる場合に中央値を活用することで、より実態に近いデータの中心傾向を把握できます。

Pythonで中央値を求める方法

ここからは、Pythonでどのように中央値を求めるのかを詳しく見ていきます。
基本的には、標準ライブラリを使うか、NumPyPandasなどのライブラリを使うかでアプローチが異なります。

この段階ではPythonにまだ慣れていない方も多いと思います。
ですが、安心してください。
難しい知識がなくても、この記事のコード例を参考に少しずつ動かしてみれば、自然と理解が深まるでしょう。

statisticsモジュールを使う方法

Pythonには、統計関連の処理を簡単に行えるstatisticsモジュールが用意されています。
中央値を求める際には、このモジュールの median 関数を呼び出すだけでOKです。

import statistics

data = [1, 5, 7, 9, 100]
result = statistics.median(data)

print(result)  # ここでは 7 が出力されます

このように、リストを用意して statistics.median() に渡すと、あっという間に中央値が求められます。
先ほどの例の通り、この場合は7が出力されます。

statistics モジュールには平均値を求める mean() や分散を求める variance() などの関数もあります。
データ分析の入り口として活用範囲が広いので、一度ドキュメントをざっと眺めてみるのも良いかもしれませんね。

NumPyを使う方法

もっと大規模な配列を扱う場合や行列演算を頻繁に行う場合は、NumPyが便利です。
NumPyには median() 関数が用意されており、同様に簡単に中央値を計算できます。

import numpy as np

data = np.array([1, 5, 7, 9, 100])
result = np.median(data)

print(result)  # 7.0 が出力されます

ここでも求められる結果は7です(NumPyでは浮動小数点の形で出力される場合が多いです)。
大量の数値データを高速に処理したいときはNumPyが選ばれることが多いので、覚えておくと便利でしょう。

ソートしてから手動で求める方法

標準ライブラリやNumPyを使わずに、あえてソート処理で中央値を取り出すやり方もあります。
たとえば、初心者の学習では以下のようなコードが参考になるでしょう。

data = [1, 5, 7, 9, 100]
data_sorted = sorted(data)  # ソートする

length = len(data_sorted)
middle = length // 2

if length % 2 == 1:
    # データ数が奇数の場合
    median_value = data_sorted[middle]
else:
    # データ数が偶数の場合
    median_value = (data_sorted[middle - 1] + data_sorted[middle]) / 2

print(median_value)

ソートした配列の中央にある値、または中央にある2つの値を足して2で割った値を取り出すことで、手動で中央値を求めることができます。
実際の現場でこの手法を使うケースはあまり多くありませんが、ソートの仕組みやデータ構造を理解する上では良い練習になります。

Pythonの中央値を活用できる場面

ここでは、中央値を実際にどのように活用するのか、そのシーンを具体的に考えてみます。
実務において、数値データの傾向を知りたい場合には平均値とあわせてよく使われるはずです。

たとえば、Webアプリケーションのユーザー行動ログを分析するシーンを想像してみてください。
アクセス時間や滞在時間などのデータには、一部だけ極端に数値が大きい(あるいは小さい)ものが混ざるケースがあります。
そんなときに平均値を見ても、外れ値に引っ張られて、正確な状況をつかめないことがあるのです。
中央値なら、そうした外れ値の影響が小さいため、ユーザーの多くがどれくらいの時間サイトに滞在しているのかを把握する目安になります。

また、レコメンドシステムなどでのフィードバック指標にも活用できます。
たとえば、ユーザーからの評価値を集計するときに、評価が極端に低かったり高かったりすると平均値だけでは把握が難しくなります。
中央値を見ることで、より多くのユーザーにとっての”中心”にあたる評価水準を確認できます。

さらに、給与や家賃などの経済データでも中央値が頻繁に利用されます。
こうした実生活に近いシーンでも、外れ値に左右されずに実態を掴むために有用です。

外れ値と中央値の関係

外れ値とは、他のデータと比較して極端に大きいか小さい値のことです。
平均値はすぐに外れ値に引きずられてしまう一方、中央値は外れ値の影響をあまり受けないと言われます。

しかし、「中央値なら何も問題がない」というわけではありません。
データによっては、中央値だけでは見えない別の情報が隠れていることもあります。
外れ値が多発している場合や分布がいくつかの山に分かれている場合などは、平均値と中央値の両方を確認して、そのうえで全体像を推定するのが望ましいです。

外れ値の存在理由そのものが重要な場合もあります。
単に除外するのではなく、なぜ外れ値が発生しているのか、その背景をあわせて調べるとより正確なデータ分析ができるでしょう。

集計や可視化の一例

実際のデータ分析では、中央値を計算したらグラフなどに可視化して結果を比べることが多いです。
コード例としては、たとえばPythonの matplotlib を使ってヒストグラムを描画し、その上に中央値の線を引くといった使い方が考えられます。

import matplotlib.pyplot as plt
import statistics

data = [1, 2, 2, 5, 7, 9, 10, 10, 11, 100]

plt.hist(data, bins=5)
median_val = statistics.median(data)

# ヒストグラム上に中央値のラインを表示
plt.axvline(median_val, color='red', linestyle='dashed', linewidth=2)

plt.title("Sample Data Distribution")
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.show()

このように可視化をすることで、中央値付近にどの程度データが分布しているのかを目で確認できます。
特に実務では、数値だけを見るよりもグラフ化した方が、外れ値や全体の傾向を把握しやすいケースが多いです。

データの量と処理速度

大きなデータを扱う場合、どうしても処理速度やメモリ使用量が気になることがあります。
単純に中央値を求めるだけなら、ほとんどのライブラリで問題なく処理できるでしょうが、以下のような点は念頭に置いておきたいところです。

  • 巨大なデータを扱う場合は、部分的にデータを読み込むなどの工夫が必要になる場合もある
  • 先にソートを行う場合、ソートのアルゴリズムによる計算量がボトルネックになる可能性がある

あまりにデータ量が大きいケースでは、NumPyやPandasなどのライブラリを使った方が効率的でしょう。
一方で、少しの工夫で速度やメモリ使用量を最適化できる場面もあります。
まずは手軽に statistics.median()np.median() を使い、パフォーマンスに問題が出てきたら詳細に検討してみるのが良いかもしれません。

中央値と他の代表値の違い

分析の初心者の方は、中央値以外にも平均値最頻値(最も頻繁に出現する値)との使い分けに戸惑うことがあります。
ここでは簡単に、中央値がどのような位置付けなのかを整理しておきましょう。

  • 平均値:すべての値の合計を値の個数で割ったもの
  • 中央値:ソートしたときの真ん中の値
  • 最頻値:最も多く登場する値

中央値は、平均値よりも外れ値の影響を受けにくいという特徴があります。
ただし、分布の状況によっては平均値や最頻値を見た方が明確な場合もあります。
つまり、データ分析の現場では複数の代表値を併用して総合的に判断することが多いのです。

実務で意識しておきたいポイント

実際のプロジェクトや業務の中で中央値を扱うときは、次のようなポイントも踏まえておくと役立つでしょう。

  • データに外れ値があったとしても、ビジネス上重要な意味を持つ可能性がある
  • 中央値を示すだけでなく、平均値や四分位範囲などもあわせて提示すると説得力が増す
  • 取得したデータがどのように集められたものかを理解した上で、中央値を使うか平均値を使うかを判断する

単純に「中央値を求めればすべてOK」ということではなく、なぜその値に注目するのかを自分で整理しておくと、より説得力の高い分析ができるようになるでしょう。

まとめ

ここまで、Pythonで中央値を求める方法や、その活用シーンについてお話ししました。
Python 中央値はデータ分析を行ううえで外れ値の影響を緩和しやすく、より実態に近い中心値を把握できることが特徴です。
特に、statistics.median()np.median() といった関数を使う方法は、とてもシンプルに実装できて便利だと感じるでしょう。

一方で、中央値を活用するときは、外れ値を安易に無視しないようにすることが重要です。
データに偏りがある場合には、平均値や最頻値などの他の指標もあわせて検証し、全体像を正しく捉えるようにしましょう。

プログラミング初心者の方であっても、これらの手順を少しずつ試してみることで、簡単にデータの「中心」を捉えられるようになります。
ぜひデータ分析の第一歩として、Pythonで中央値を使いこなしてみてください。

Pythonをマスターしよう

この記事で学んだPythonの知識をさらに伸ばしませんか?
Udemyには、現場ですぐ使えるスキルを身につけられる実践的な講座が揃っています。