DataFrame 概要 describe

DataFrameには、データの概要を知るための便利なメソッドがあります。それは、describe()です。
以下のdfで、データの概要を確認しましょう。

NameAge
0Alice17
1Bob24
2Carol29

実行すると、下記を返します。

df.describe()
         Age
count   3.000000
mean   23.333333
std     6.027714
min    17.000000
25%    20.500000
50%    24.000000
75%    26.500000
max    29.000000

それぞれ、次の意味です。これらは基本統計量と呼ばれるものの一部です。

count:「欠損値でない値」の個数(以降もすべて、「欠損値でない値」が対象)
mean:平均
std:標本標準偏差※
min:最小値
25%:第1四分位数(25パーセンタイル)※
50%:第2四分位数(50パーセンタイル)
75%:第3四分位数(75パーセンタイル)
max:最大値

describe()は、DataFrameの状態やオプションの指定方法によってどの列の概要が返されるか変わります。
引数で何も指定しない場合、数値の列が含まれるDataFrameでは数値の列だけ概要を返します。数値の列が1つもないDataFrameでは、すべての列(つまり数値以外の列)の概要を返します。

列の型に関わらずすべての列について取得したい場合は、引数includeで”all”を指定します。

またSeriesでもdescribe()が使えるため、下記のように特定の列で実行すると、型に関わらず概要を取得できます。

df.Name.describe()
count         3
unique        3
top       Alice
freq          1
Name: Name, dtype: object

数値以外の列の場合、次のような項目が得られます。

  • unique: データの種類(ユニークな値)の個数
  • top: 最頻値(最頻値が複数ある場合は、いずれか1つだけ)
  • freq: 最頻値の出現回数

演習

import pandas as pd

df = pd.DataFrame(
    [["Alice", 17], ["Bob", 24], ["Carol", 29]],
    columns=["Name", "Age"],
)
df
NameAge
0Alice17
1Bob24
2Carol29

データの概要を確認します。数値の列がある場合、数値の列だけになります。列Nameは数値ではないので出ません。

print(df.describe())
             Age
count   3.000000
mean   23.333333
std     6.027714
min    17.000000
25%    20.500000
50%    24.000000
75%    26.500000
max    29.000000
df.describe()
Age
count3.000000
mean23.333333
std6.027714
min17.000000
25%20.500000
50%24.000000
75%26.500000
max29.000000

Nameの概要を確認します。uniqueは、データの種類(ユニークな値)の個数です。topは、最頻値(の1つ)です。freqは最頻値の出現回数です。

df.Name.describe()
count         3
unique        3
top       Alice
freq          1
Name: Name, dtype: object

すべての列の概要を一度に確認するには、 include=”all” をつけます。

df.describe(include="all")
NameAge
count33.000000
unique3NaN
topAliceNaN
freq1NaN
meanNaN23.333333
stdNaN6.027714
minNaN17.000000
25%NaN20.500000
50%NaN24.000000
75%NaN26.500000
maxNaN29.000000

describeで計算した統計量の抽出

df.describe()から特定の値を取り出したい場合は

DF名.describe()["調べたい特徴量"]["調べたい統計量"]のように書けば良い

df.describe()["home_score"]["mean"]
1.7401302296964725

コメント

タイトルとURLをコピーしました