【pandas】DataFrameの代表値(平均値・中央値・最頻値)を求める方法

Pythonのpandasで平均値や中央値、最頻値を求める方法を紹介します。

今回紹介するメソッドは引数が似ているので使いやすいと思います。

平均値と中央値では以下のDataFrameを使います。

元のデータフレーム

平均値:mean

引数デフォルト値内容
axis0デフォルトで列方向に計算
1で行方向に計算
skipnaTrueNaやnullを除外して計算する
levelNoneマルチインデックスのレベルを指定
numeric_onlyNoneTrueでint、float、boolの行や列のみ計算
bool値の列はTureの割合を返す。
Falseですべての行や列で計算(エラーの可能性有)

pandas.DataFrame.meanの公式ページ

averageとmeanの違い
一般にaverageもmeanも平均(算術平均:合計を個数で割る平均)と言う意味。
統計学では、averageは他の平均(幾何平均、調和平均など)をまとめての「平均」で、
meanは単なる算術平均としての「平均」として区別されています。
averageは代表値(平均値・中央値・最頻値)と訳されることがあります。
参考:統計WEB「平均」のこと

行や列の平均を求める

列5はbool値になっています。('列5': [True, True, False, False]

このとき、Tureの割合を平均として返します。(列5の場合は半分がTrueなので0.5)

numeric_onlyの役割

numeric_onlyなしでも数値だけで平均を計算してくれます。

全て数値になっているかどうかのチェックに使えそうですね。

中央値:median

  • 引数は平均(mean)と同じ。
  • numeric_onlyの役割も平均と同じ。
  • bool値の列はTrue=1、False=0として中央値を計算する。

pandas.DataFrame.meanの公式ページ

行や列の中央値を求める

bool値の処理

  1. True=1、False=0に変換(例:列3なら「1,1,0,0」)
  2. 小さいもの順に並べる(例:列3なら「0,0,1,1」)
  3. 真ん中の数値を求める。
    1. 列3はデータが偶数個なので2個目と3個目の平均を求めると0.5

数値に変換することさえ知っていればOKです。

中央値の計算方法は変わりません。

最頻値:mode

  • 引数はaxis、numeric_only、dropna
  • dropna=FalseでNaNも値とみなす(デフォルトはTrue)

pandas.DataFrame.meanの公式ページ

以下のDataFrameをもとに最頻値を求めます。

列ごとの最頻値

デフォルトではNaNが最頻値としてみなされることはない。

数値だけで最頻値を求める

数値の列だけの最頻値

列1は文字列なので無視されています。

dropnaの役割

NaNを値として最頻値を求める

デフォルト(dropna=True)ではNaNを無視しますが、Falseにすると最頻値としてみなされることがあります。

まとめ

今回は平均値、中央値、最頻値の求め方をまとめました。

簡単な関数なのですぐに使えると思います。

参考になれば幸いです。

関連記事

この記事ではPythonのpandasでDataFrameの最大値や最小値を求める方法を解説していきます。 後半には日付データに関することも書いています。 以下のDataFrameを使います。 import pandas[…]