Pythonで中央値を求める!5つの手順で初心者でも簡単に理解可能

Pythonで中央値を求める手順とサンプルコードを表すイラストPython
この記事は約12分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

あなたがデータ分析や統計学を学んでいて、Pythonを使って中央値を求めたいと思っているなら、この記事はあなたにとって役立つ情報を提供します。

Pythonで中央値を求める方法について、具体的な5つの手順とサンプルコードを通じて詳しく解説します。

この記事では、初心者でも簡単にPythonで中央値を求める方法を理解できるように、Pythonの概要から始め、その後中央値とは何か、そしてPythonで中央値を求める具体的な方法を解説します。

また、Pythonで中央値を求める際の注意点や応用例も紹介します。

●Pythonの概要

Pythonは、コードが読みやすく、理解しやすいことで知られる汎用的なプログラミング言語です。

1991年にグイド・ヴァンロッサムによって開発され、その後世界中で幅広く使われるようになりました。

○Pythonの特徴

Pythonは、そのシンプルさと読みやすさから、初心者にとって学びやすい言語とされています。

また、Pythonは高レベルなプログラミング言語であり、プログラマは手間をかけずに複雑なタスクを実行できます。

Pythonはまた、大量のライブラリとフレームワークを提供しています。

これらは特定のタスクを効率的に行うためのツールとして設計されており、データ分析、ウェブ開発、機械学習などの領域で使われています。

○Pythonの用途

Pythonの用途は多岐にわたります。

ウェブ開発、データ分析、機械学習、AI、ゲーム開発など、様々な分野でPythonは活用されています。

その中でもPythonは、データ分析や機械学習の分野で特に人気があります。

この記事では、そのようなデータ分析の一環として、Pythonを使って中央値を求める方法について詳しく解説します。

●中央値とは

中央値は、データセットを数値順に並べたときに、ちょうど中央に位置する値のことを指します。

データセットの個数が奇数の場合、中央値は中央の値です。

データセットの個数が偶数の場合、中央値は中央の2つの値の平均となります。

中央値は、データの分布を理解するための重要な統計的指標であり、特に外れ値の影響を受けにくいという特性があります。

●Pythonで中央値を求める方法

Pythonで中央値を求めるための方法はいくつかあります。

Pythonの組み込み関数を使用する方法から、統計や科学計算のためのライブラリを使用する方法まで、さまざまな方法が存在します。

それぞれの方法を解説し、それぞれの方法で中央値を求めるための具体的なサンプルコードを紹介します。

○Pythonの組み込み関数を使用する方法

Pythonで中央値を計算する一つ目の方法は、Pythonの組み込み関数を使用する方法です。

Pythonには標準ライブラリと呼ばれる便利な関数群が存在しますが、その中にはリスト型のデータをソートするための関数であるsort()も含まれています。

□サンプルコード1:組み込み関数を使用した中央値の計算

Pythonの組み込み関数を使用してリストの中央値を計算するサンプルコードを紹介します。

この例では、まずリスト内のデータを昇順に並び替えるためにsort()関数を使用します。

次に、リストの長さ(要素数)を2で割り、その結果を使って中央値を求めます。

# データのリストを作成
data = [5, 2, 7, 1, 9, 3, 8]

# リストを昇順にソート
data.sort()

# リストの長さ(要素数)を取得
length = len(data)

# リストの長さが偶数か奇数かで処理を分ける
if length % 2 == 0:
    # 偶数の場合は中央の2つの要素の平均値を計算
    median = (data[length // 2 - 1] + data[length // 2]) / 2
else:
    # 奇数の場合は中央の要素を取得
    median = data[length // 2]

# 中央値を出力
print(median)

このコードを実行すると、リストdataの中央値が計算され、結果が表示されます。

今回のリストdataの要素数は7となり、奇数です。そのため、中央値はリストの中央の値、つまり5となります。

なお、もしリストの要素数が偶数であった場合、中央の2つの要素の平均値が中央値となります。

○統計モジュールを使用する方法

Pythonでは、組み込み関数だけでなく、標準ライブラリの一部である統計モジュール(statistics)を使用しても中央値を求めることが可能です。

統計モジュールは、平均や標準偏差など、様々な統計計算を行うための関数が含まれています。

□サンプルコード2:統計モジュールを使用した中央値の計算

統計モジュールを使用してリストの中央値を計算するサンプルコードを紹介します。

この例では、統計モジュールのmedian()関数を使っています。

import statistics

# データのリストを作成
data = [5, 2, 7, 1, 9, 3, 8]

# 統計モジュールを使用して中央値を計算
median = statistics.median(data)

# 中央値を出力
print(median)

このコードを実行すると、リストdataの中央値が計算され、結果が表示されます。

統計モジュールのmedian()関数を使うと、リストのデータをソートすることなく直接中央値を求めることができます。

今回の例でも結果は5となり、先程と同じ結果を得ることができます。

○NumPyモジュールを使用する方法

Pythonで中央値を計算する第三の方法として、数値計算ライブラリの一つであるNumPyを使用します。

NumPyは高性能な科学計算を提供し、特に大量のデータを扱う際に役立ちます。

では、早速NumPyを使った中央値の計算方法を見てみましょう。

□サンプルコード3:NumPyモジュールを使用した中央値の計算

import numpy as np  # NumPyをインポート

data = np.array([1, 3, 5, 7, 9])  # データセットを作成
median = np.median(data)  # 中央値を計算

print(median)  # 中央値を出力

このコードではまず、import numpy as npを使ってNumPyモジュールをインポートしています。

次に、NumPyのarray関数を用いてデータセットを作成しています。

そして、NumPyのmedian関数を使ってデータセットの中央値を計算しています。最後に、計算結果を出力しています。

このコードを実行すると、「5」が出力されるはずです。

これは、配列の中央に位置する値で、配列の中央値となります。

○Pandasモジュールを使用する方法

次に紹介するPythonで中央値を計算する方法は、データ分析ライブラリであるPandasを使用する方法です。

Pandasはデータ操作と分析に特化したライブラリで、データフレームという強力なデータ構造を提供しています。

では、具体的なコードを見ていきましょう。

□サンプルコード4:Pandasモジュールを使用した中央値の計算

import pandas as pd  # Pandasをインポート

data = pd.Series([1, 3, 5, 7, 9])  # データセットを作成
median = data.median()  # 中央値を計算

print(median)  # 中央値を出力

このコードでは、まずimport pandas as pdでPandasモジュールをインポートしています。

次に、PandasのSeries関数を使用してデータセットを作成しています。

そして、Pandasのmedian関数を使用してデータセットの中央値を計算しています。最後に、計算結果を出力しています。

このコードを実行すると、こちらも「5」が出力されるはずです。

これが、データセットの中央値となります。

○SciPyモジュールを使用する方法

最後に紹介するPythonで中央値を計算する方法は、科学技術計算ライブラリであるSciPyを使用する方法です。

SciPyはNumPyを基にしたライブラリで、さまざまな科学技術計算機能を提供しています。

では、具体的なコードを見てみましょう。

□サンプルコード5:SciPyモジュールを使用した中央値の計算

from scipy import stats  # SciPyからstatsをインポート

data = [1, 3, 5, 7, 9]  # データセットを作成
median = stats.median(data)  # 中央値を計算

print(median)  # 中央値を出力

このコードでは、まずfrom scipy import statsでSciPyからstatsモジュールをインポートしています。

次に、データセットを作成し、stats.median関数を使用してデータセットの中央値を計算しています。

最後に、計算結果を出力しています。

このコードを実行すると、「5」が出力されるはずです。

これが、データセットの中央値となります。

●Pythonで中央値を求める時の注意点と対処法

Pythonで中央値を求める際には、いくつかの注意点があります。

それぞれの注意点とその対処法について説明します。

まず、中央値を求めるデータが偶数の場合、中央値は中央の2つの数値の平均値となります。

しかし、この計算を行う際、小数点以下の値が切り捨てられてしまう場合があります。

そのような場合には、float型へのキャストを忘れずに行いましょう。

次のサンプルコードを見てください。

# リストの定義
numbers = [1, 2, 3, 4]

# 中央値を求める
median = (numbers[len(numbers)//2 - 1] + numbers[len(numbers)//2]) / 2

# 結果を出力する
print(median)

このコードでは、4つの数値が含まれるリストを使って中央値を計算しています。

この例では、リストの長さを2で割った商(len(numbers)//2)を使って中央の2つの数値を取得し、その平均値を求めています。

しかしこのコードを実行すると、結果は2.0ではなく、2と表示されます。

これは、Pythonのデフォルトの動作として、整数同士の除算結果も整数になるためです。

そこで、次のようにfloat型へのキャストを追加します。

# 中央値を求める
median = (numbers[len(numbers)//2 - 1] + numbers[len(numbers)//2]) / 2.0

# 結果を出力する
print(median)

この修正後のコードを実行すると、期待通りの結果、2.0が出力されます。

次に、Pythonで中央値を求める際のもう一つの注意点として、空のリストから中央値を求めることはできないという点があります。

中央値はデータセット内の値に基づいて計算されるため、データセットが空の場合、中央値を定義することができません。

そのため、中央値を求める前には、データセットが空でないことを確認するようにしましょう。

下記のサンプルコードでは、データセットが空でないことを確認してから中央値を計算しています。

# リストの定義
numbers = []

# リストが空でないことを確認する
if numbers:
    # 中央値を求める
    median = (numbers[len(numbers)//2 - 1] + numbers[len(numbers)//2]) / 2.0
    # 結果を出力する
    print(median)
else:
    print('データセットが空です。')

このコードでは、中央値を計算する前に、if文を使ってデータセットが空でないことを確認しています。

データセットが空の場合、’データセットが空です。’というメッセージを出力します。

これらの注意点と対処法を理解しておけば、Pythonで中央値を求める際に遭遇する可能性のある問題を回避することができます。

次に、Pythonで中央値を求める際の具体的な応用例について見ていきましょう。

●Pythonで中央値を求める際の応用例

Pythonで中央値を求めることは、データ解析や機械学習などの多くの領域で有用です。

中央値はデータの中心傾向を示し、外れ値の影響を受けにくいという特性から、特にデータが外れ値を含む場合や、データの分布が歪んでいる場合によく使用されます。

Pythonで中央値を求める際の応用例をいくつか紹介します。

○サンプルコード6:データセットから中央値を求める

データ解析では、様々なデータセットから中央値を求めることがあります。

このような場合、NumPyのmedian関数を使用することが一般的です。

下記のサンプルコードでは、ランダムなデータセットから中央値を求めています。

import numpy as np

# ランダムなデータセットを生成する
data = np.random.randn(100)

# 中央値を求める
median = np.median(data)

# 結果を出力する
print(median)

このコードでは、numpy.random.randn関数を使って100個のランダムな数値を含むデータセットを生成しています。

そして、numpy.median関数を使ってそのデータセットの中央値を求めています。

この例では、100個の数値を含むランダムなデータセットから中央値を求めています。

○サンプルコード7:外れ値の影響を減らすために中央値を用いる

外れ値は、データ解析において重大な問題を引き起こすことがあります。

しかし、中央値は外れ値の影響を受けにくいため、外れ値が存在するデータセットを解析する際に有用です。

下記のサンプルコードでは、外れ値を含むデータセットから平均と中央値を求め、それらがどのように異なるかを表しています。

import numpy as np

# 外れ値を含むデータセットを生成する
data = np.append(np.random.randn(100), [1000])

# 平均を求める
mean = np.mean(data)

# 中央値を求める
median = np.median(data)

# 結果を出力する
print('平均: ', mean)
print('中央値: ', median)

このコードでは、numpy.random.randn関数を使って100個のランダムな数値を含むデータセットを生成し、その後、大きな外れ値1000を追加しています。

そして、numpy.mean関数とnumpy.median関数を使って、それぞれ平均値と中央値を求めています。

この例では、外れ値1000が平均値に大きな影響を及ぼし、データセットの真の中心傾向を表していないことが確認できます。

一方で、中央値は外れ値の影響を受けず、データセットの真の中心傾向をより正確に表しています。

まとめ

本記事では、Pythonで中央値を求める時の注意点と対処法について詳しく解説しました。

また、具体的なサンプルコードを通じて、中央値の計算方法やその応用例を学びました。

これらの知識を活かして、Pythonで中央値を求める際の問題を回避し、効率的なデータ解析を行うことができるようになりましょう。