PythonのPandasで「最頻値(mode)」を扱う方法や注意点を、基礎から実践例まで詳しく解説します。
目次
最頻値(mode)とは?
最頻値とは、データの中で 最も頻繁に出現する値 のことです。
統計的には「代表値」の一つで、平均値(mean)や中央値(median)と並んで使われます。
- 例:データが
[1, 2, 2, 3, 4]
の場合- 平均値 = 2.4
- 中央値 = 2
- 最頻値 = 2(最も多く出現している)
Pandasでの最頻値の取得
Pandasでは、Series.mode()
または DataFrame.mode()
を使います。
Seriesの場合
import pandas as pd
s = pd.Series([1, 2, 2, 3, 4, 4])
# 最頻値を求める
mode_value = s.mode()
print(mode_value)
この場合、2
と 4
が同じ頻度で最も多く出現しているため、複数の最頻値が返ってきます。
DataFrameの場合
df = pd.DataFrame({
"A": [1, 2, 2, 3, 4],
"B": ["a", "b", "b", "a", "c"]
})
# 列ごとに最頻値を計算
print(df.mode())
- 列
A
は2
が最頻値 - 列
B
はa
とb
が同頻度で最頻値となるので2行にわたって結果が出ます。
mode()
の特徴と注意点
- 複数の最頻値に対応
他の統計値(meanやmedian)と違って、最頻値は 複数の値を返すことがある。
→Series
でもDataFrame
でも、戻り値は 複数行のSeriesまたはDataFrame。 - NaNは含めない
デフォルトではNaN
は計算対象外になります。 - データ型を問わない
数値だけでなく、文字列やカテゴリ型の最頻値も取得可能です。
最頻値の頻度も確認したい場合
mode()
は値そのものを返しますが、何回出現したか(頻度) を知りたい場合は value_counts()
を使うと便利です。
s.value_counts()
この場合、2
と 4
が「2回」出ていることがわかります。
もし「最頻値とその出現回数」をまとめたい場合は、以下のようにします。
mode_value = s.mode()
counts = s.value_counts()
for val in mode_value:
print(f"値: {val}, 出現回数: {counts[val]}")
応用的な使い方
DataFrameで列ごとに最頻値と出現回数を求める
for col in df.columns:
mode_vals = df[col].mode()
counts = df[col].value_counts()
for val in mode_vals:
print(f"列 {col} - 最頻値: {val}, 出現回数: {counts[val]}")
カテゴリ型(カテゴリカルデータ)の最頻値
アンケート調査などではカテゴリ型(例:Yes/No、男性/女性)がよく出てきます。
mode()
を使えば、最も選ばれた回答をすぐに取得可能です。
まとめ
- Pandasの最頻値は
Series.mode()
またはDataFrame.mode()
で取得できる - 複数の最頻値がある場合は 全て返ってくる
- 出現回数を確認したい場合は
value_counts()
を組み合わせる - 数値データだけでなく文字列やカテゴリ型にも使える
以上、PythonのPandasの最頻値についてでした。
最後までお読みいただき、ありがとうございました。