DataFrameには、データの概要を知るための便利なメソッドがあります。それは、describe()です。
以下のdfで、データの概要を確認しましょう。
Name | Age | |
---|---|---|
0 | Alice | 17 |
1 | Bob | 24 |
2 | Carol | 29 |
実行すると、下記を返します。
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
Name | Age | |
---|---|---|
0 | Alice | 17 |
1 | Bob | 24 |
2 | Carol | 29 |
データの概要を確認します。数値の列がある場合、数値の列だけになります。列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 | |
---|---|
count | 3.000000 |
mean | 23.333333 |
std | 6.027714 |
min | 17.000000 |
25% | 20.500000 |
50% | 24.000000 |
75% | 26.500000 |
max | 29.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")
Name | Age | |
---|---|---|
count | 3 | 3.000000 |
unique | 3 | NaN |
top | Alice | NaN |
freq | 1 | NaN |
mean | NaN | 23.333333 |
std | NaN | 6.027714 |
min | NaN | 17.000000 |
25% | NaN | 20.500000 |
50% | NaN | 24.000000 |
75% | NaN | 26.500000 |
max | NaN | 29.000000 |
describeで計算した統計量の抽出
df.describe()から特定の値を取り出したい場合は
DF名.describe()["調べたい特徴量"]["調べたい統計量"]
のように書けば良い
df.describe()["home_score"]["mean"]
1.7401302296964725
コメント