DataFrameのデータ要約(記述統計量の取得)【Python】

ここでは、以下のようにpandasをインポートしているものとして進めていきます。

import pandas as pd

サンプルデータ

ここではseabornのirisデータセットを用います。

以下のようにしてデータを読み込んでください。

import seaborn as sns
df = sns.load_dataset('iris')

DataFrameの統計量をまとめて取得する

describeメソッドを使用することで、DataFrameの記述統計量を一括して取得することができます。

print(df.describe())

※ df : サンプルデータ

       sepal_length  sepal_width  petal_length  petal_width
count    150.000000   150.000000    150.000000   150.000000
mean       5.843333     3.057333      3.758000     1.199333
std        0.828066     0.435866      1.765298     0.762238
min        4.300000     2.000000      1.000000     0.100000
25%        5.100000     2.800000      1.600000     0.300000
50%        5.800000     3.000000      4.350000     1.300000
75%        6.400000     3.300000      5.100000     1.800000
max        7.900000     4.400000      6.900000     2.500000
  • count : 欠損値を除いたデータ数 → countメソッドで得られる結果と同じ
  • mean : 平均値 → meanメソッドで得られる結果と同じ
  • std : 標準偏差 → stdメソッドで得られる結果と同じ
  • min : 最小値 → minメソッドで得られる結果と同じ
  • 25% : 第1四分位数 → quantileメソッドで得られる結果と同じ
  • 50% : 中央値 → medianメソッドで得られる結果と同じ
  • 75% : 第3四分位数 → quantileメソッドで得られる結果と同じ
  • max : 最大値 → maxメソッドで得られる結果と同じ

なお、ここで取得した戻り値はそれ自体がDataFrameとなっています。

個々の統計量をそれぞれ取得する

欠損値を除いた要素数の取得

countメソッドを用いて、各列ごとの欠損値を除いたデータ数を取得できます。

print(df.count())

※ df : サンプルデータ

sepal_length    150
sepal_width     150
petal_length    150
petal_width     150
species         150
dtype: int64

平均値の取得

meanメソッドを用いて、各列ごとの平均値を取得できます。

print(df.mean())

※ df : サンプルデータ

sepal_length    5.843333
sepal_width     3.057333
petal_length    3.758000
petal_width     1.199333
dtype: float64

中央値の取得

medianメソッドを用いて、各列ごとの中央値を取得できます。

print(df.median())

※ df : サンプルデータ

sepal_length    5.80
sepal_width     3.00
petal_length    4.35
petal_width     1.30
dtype: float64

最頻値の取得

modeメソッドを用いて、各列ごとの最頻値を取得できます。

print(df.mode())

※ df : サンプルデータ

   sepal_length  sepal_width  petal_length  petal_width     species
0           5.0          3.0           1.4          0.2      setosa
1           NaN          NaN           1.5          NaN  versicolor
2           NaN          NaN           NaN          NaN   virginica

出現回数が同じ最頻値が複数ある場合はそのすべてが表示されます。例えば、上記の例では、speciesはsetosaとversicolorとvirginicaがいずれも50回ずつ出現するので、その3つとも結果として返されています。また、petal_lengthは最頻値の1.4と1.5が同数出現するため、その2つが返されます。
medianメソッドの結果は最頻値が1つだけの場合も複数ある場合も、いずれもDataFrameとして取得されます。

分散・標準偏差の取得

varメソッド、stdメソッドを用いて、各列ごとの分散・標準偏差を取得できます。なお、varメソッドはデフォルトでは不偏分散を計算するので、標本分散を求める場合は引数に ddof=0 を指定してください。

print(df.var())

※ df : サンプルデータ

sepal_length    0.685694
sepal_width     0.189979
petal_length    3.116278
petal_width     0.581006
dtype: float64
print(df.std())

※ df : サンプルデータ

sepal_length    0.828066
sepal_width     0.435866
petal_length    1.765298
petal_width     0.762238
dtype: float64

最小値・最大値の取得

minメソッド、maxメソッドを用いて、各列ごとの最小値・最大値を取得できます。

print(df.min())

※ df : サンプルデータ

sepal_length       4.3
sepal_width          2
petal_length         1
petal_width        0.1
species         setosa
dtype: object
print(df.max())

※ df : サンプルデータ

sepal_length          7.9
sepal_width           4.4
petal_length          6.9
petal_width           2.5
species         virginica
dtype: object

文字列データについては、文字コードの順番で最小値・最大値が決められます。

分位点(クォンタイル)の取得

quantileメソッドを用いて、各列ごとの指定された分位点を取得できます。

print(df.quantile([0, 0.25, 0.5, 0.75, 1]))

※ df : サンプルデータ

      sepal_length  sepal_width  petal_length  petal_width
0.00           4.3          2.0          1.00          0.1
0.25           5.1          2.8          1.60          0.3
0.50           5.8          3.0          4.35          1.3
0.75           6.4          3.3          5.10          1.8
1.00           7.9          4.4          6.90          2.5

なお引数について、q=0の場合は最小値、q=0.5の場合は中央値、q=1の場合は最大値となります。

関連記事・スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です