【pandas】データの代表値を求める
データの代表値をpandasで求める方法を紹介します。 計算する代表値 以下の代表値を計算します。 平均(相加平均) 中央値 最頻値 分散 標準偏差 四分位数 パーセンタイル 各代表値の説明は以下の通りです。 平均(相加平均) 全てのデータを足してデータの個数で割った値です。 $$ \begin{align} {\bar{x}} = \frac{1}{N}\sum\limits_{i}^{N}{x_{i}} \end{align} $$ 中央値 全てのデータを値の大きさの順に並べたときにちょうど中央に来る値です。データの個数が偶数であるときは中央に来る2つのデータの平均値を中央値とします。 最頻値 全てのデータの中で最も多く出てくる値です。 分散 各データが平均値から平均的にどのくらい離れた値を有しているかを、各データの平均値からの差分の2乗を平均することで評価した値です。 $$ \begin{align} s^{2} = \frac{1}{N}\sum\limits_{i}^{N}{\left(x_{i} - {\bar{x}}\right)^{2}} \end{align} $$ 標準偏差 分散の平方根をとった値です。 四分位数 全てのデータを小さい順に並べたときに、小さい方から全体の4分の1の位置に来るデータの値のことを第一四分位数、4分の2の位置に来るデータの値のことを第二四分位数、4分の3の位置に来るデータの値のことを第三四分位数といいます。第二四分位数は中央値と等しいです。 パーセンタイル 全てのデータを小さい順に並べたときに、小さい方から全体の$n$%の位置に来るデータの値のことを$n$パーセンタイルといいます。25パーセンタイル、50パーセンタイル、75パーセンタイルはそれぞれ第一、第二、第三四分位数と等しいです。 サンプルコード copy_allimport pandas as pd import numpy as np # サンプルデータを用意する data = { 'column': [3, 5, 6, 10, 6, 6, 20, 14, 1, 6] } df = pd.DataFrame(data) """ 代表値の計算 """ # 平均値 mean = df['column'].mean() # 中央値 median = df['column'].median() # 最頻値 mode = df['column'].mode() # 複数ある場合が存在するため、結果がSeriesとなる # 分散 variance = df['column'].var() # 標準偏差 std_dev = df['column'].std() # 四分位数 quartiles = df['column'].quantile([0.25, 0.5, 0.75]) # パーセンタイル(90パーセンタイルの例) percentile_90 = np.percentile(df['column'], 90) # 結果の表示 print(f"平均: {mean}") print(f"中央値: {median}") print(f"最頻値: {mode}") print(f"分散: {variance}") print(f"標準偏差: {std_dev}") print("四分位数:") print(quartiles) print(f"90パーセンタイル: {percentile_90}") 以下が実行結果です。 copy_all平均: 7.7 中央値: 6.0 最頻値: 0 6 Name: column, dtype: int64 分散: 31.34444444444445 標準偏差: 5.598610938835137 四分位数: 0.25 5.25 0.50 6.00 0.75 9.00 Name: column, dtype: float64 90パーセンタイル: 14.599999999999998