外部ライブラリ不要!Pythonで平均・中央値・最頻値を求める方法
平均(Mean)、中央値(Median)、最頻値(Mode)は、データ分析で非常によく使われる基本統計量です。Pythonには統計計算向けのライブラリがいくつかありますが、本記事では外部ライブラリに頼らず、基本的な構文だけでこれらの値を求める方法を解説します。
平均(Mean)の求め方
数値リストの平均は、すべての数値を合計し、その個数で割ることで求められます。以下の例では、組み込み関数の sum() で合計値を取得し、len() で要素数を取得して平均を計算しています。
コード例
num_list = [21, 11, 19, 3, 11, 5]
# 数値の合計を求める
num_sum = sum(num_list)
# 合計をリストの長さで割る
mean = num_sum / len(num_list)
print(num_list)
print("上記リストの数値の平均は: " + str(round(mean, 2)))実行結果
上記のコードを実行すると、次のような結果が出力されます。
[21, 11, 19, 3, 11, 5] 上記リストの数値の平均は: 11.67
中央値(Median)の求め方
中央値とは、数値リストを昇順に並べ替えたときにちょうど中央に位置する値のことです。要素数が奇数の場合は、リストをソートして中央の1つの値を選びます。要素数が偶数の場合は、中央に近い2つの値の平均を中央値とします。
コード例
num_list = [21, 13, 19, 3, 11, 5]
# リストをソートする
num_list.sort()
# 中央値の位置を特定する
if len(num_list) % 2 == 0:
first_median = num_list[len(num_list) // 2]
second_median = num_list[len(num_list) // 2 - 1]
median = (first_median + second_median) / 2
else:
median = num_list[len(num_list) // 2]
print(num_list)
print("上記リストの中央値は: " + str(median))実行結果
上記のコードを実行すると、次のような結果が出力されます。
[3, 5, 11, 13, 19, 21] 上記リストの中央値は: 12.0
最頻値(Mode)の求め方
最頻値とは、リスト内で最も多く出現する値のことです。各数値の出現回数(頻度)を調べ、その中で最も頻度の高いものを選ぶことで求められます。ここでは、Pythonに標準搭載されている collections.Counter を使って頻度を集計しています(追加インストールは不要です)。
コード例
import collections
# 最頻値を計算する対象のリスト
num_list = [21, 13, 19, 13, 19, 13]
# リストを表示
print(num_list)
# 各要素の出現回数をカウント
data = collections.Counter(num_list)
data_list = dict(data)
# 頻度付きで要素を表示
print(data_list)
# 最大の出現回数を取得
max_value = max(list(data.values()))
mode_val = [num for num, freq in data_list.items() if freq == max_value]
if len(mode_val) == len(num_list):
print("リストに最頻値は存在しません")
else:
print("リストの最頻値は: " + ', '.join(map(str, mode_val)))実行結果
上記のコードを実行すると、次のような結果が出力されます。
[21, 13, 19, 13, 19, 13]
{21: 1, 13: 3, 19: 2}
リストの最頻値は: 13まとめ
このように、平均は sum() と len()、中央値は sort() とインデックス操作、最頻値は collections.Counter を使うことで、シンプルなコードで実装できます。すべての要素が同じ頻度で出現する場合など、最頻値が存在しないケースへの対応も含まれているため、実務でもそのまま活用できます。
-
Pythonでリスト内の要素の相対的な順序(順位)を求める方法
整数の要素を持つリストが与えられたとき、その要素同士の「相対的な順序」を求めることを考えます。これは、リストを昇順に並べ替えた場合に、各要素がどの位置(インデックス)に来るかを示すものです。例えば [78, 14, 0, 11] を昇順に並べると [0, 11, 14, 78] となるため、元の各要素の相対的な順位はそれぞれ [3, 2, 0, 1] となります。本記事では、この相対順序を求める2つの方法を紹介します。方法1:sorted() と index() を使うまずリスト全体を sorted() で並べ替え、その結果に対して各要素の index() を求めます。リスト内包表記を使えば、
-
Pythonのタプルリストから要素の出現頻度を求める方法
Pythonでは、さまざまな種類のデータコンテナが混在することがよくあります。たとえば、リストの各要素がタプルになっているケースです。本記事では、このような「タプルを要素とするリスト」から、特定の要素が出現する頻度(出現回数)を求める2つの方法を紹介します。 方法1:count() と map() を使う まず、ラムダ式(lambda)を使ってリスト内の各タプルの先頭要素を取り出し、map() 関数でそれらをまとめたうえで、count() を適用して目的の要素の合計出現回数を取得します。 コード例 # タプルのリストを初期化 listA = [(Apple, Mon), (Banana, Tu