はじめに
探索的データ分析(EDA)は、データ分析の第一歩として必ず行うものですが、いざやる際にどこから手をつければ良いか迷うことがあります。 そのような場合に、自動で一通りのEDAを行ってくれるライブラリが存在します。 その中でもメジャーで GitHub
のスター数が多いydata-profiling
を今回は利用したいと思います。 EDAによって、データの概要理解や品質確認、およびデータ間の関係の理解が可能となります。 本記事では、ydata-profiling
を利用して、scikit-learn
で用意されている糖尿病データセット(Diabetes
)に対してEDAを行います。
データセット
Diabetes
データセットは、442人の糖尿病患者の基本変数として、年齢、性別、体重指数、平均血圧、および6つの血清測定値(s1〜s6)を用いて、病気の進行度を予測するためのものです。目的変数は、基準から1年後の病気の進行度の定量的な測定値です。
- インスタンスの数:442
- 属性の数:10(数値予測値)
- 目的変数:病気の進行度を1年後に測定した定量的な値
- 各特徴量は平均が中央になるように中心化され、標準偏差とサンプル数の平方根でスケーリングされています。
属性情報:
- age: 年齢
- sex: 性別
- bmi: 体重指数
- bp: 平均血圧
- s1: 総セラムコレステロール
- s2: LDL(低密度リポタンパク質)
- s3: HDL(高密度リポタンパク質)
- s4: セラムコレステロール/HDL
- s5: セラム三酸化グリセリドの対数
- s6: 血糖値
データセットの説明:
Diabetes
データセットは、基本変数として、年齢性別、体重指数、平均血圧、および6つの血清測定値(s1〜s6)を用いて、442人の糖尿病患者の病気の進行度を予測するためのものです。目的変数は、基準から1年後の病気の進行度の定量的な測定値です。
データの読み込みと前処理
Code
import pandas as pd
import numpy as np
from ydata_profiling import ProfileReport
from sklearn.datasets import load_diabetes
diabetes = load_diabetes()
# pandasデータフレームの作成
df = pd.DataFrame(diabetes['data'], columns=diabetes['feature_names'])
df['target'] = diabetes['target']
# データの先頭5つを表示
df.head()
0 |
0.038076 |
0.050680 |
0.061696 |
0.021872 |
-0.044223 |
-0.034821 |
-0.043401 |
-0.002592 |
0.019907 |
-0.017646 |
151.0 |
1 |
-0.001882 |
-0.044642 |
-0.051474 |
-0.026328 |
-0.008449 |
-0.019163 |
0.074412 |
-0.039493 |
-0.068332 |
-0.092204 |
75.0 |
2 |
0.085299 |
0.050680 |
0.044451 |
-0.005670 |
-0.045599 |
-0.034194 |
-0.032356 |
-0.002592 |
0.002861 |
-0.025930 |
141.0 |
3 |
-0.089063 |
-0.044642 |
-0.011595 |
-0.036656 |
0.012191 |
0.024991 |
-0.036038 |
0.034309 |
0.022688 |
-0.009362 |
206.0 |
4 |
0.005383 |
-0.044642 |
-0.036385 |
0.021872 |
0.003935 |
0.015596 |
0.008142 |
-0.002592 |
-0.031988 |
-0.046641 |
135.0 |
ydata-profilingによるレポート作成
Code
%matplotlib widget
%matplotlib ipympl
Warning: Cannot change to a different GUI toolkit: ipympl. Using widget instead.
Code
profile = ProfileReport(df, title="EDA")
# HTMLにレポートを出力
profile.to_widgets()
レポートからの洞察
Variables
のヒストグラムから確認できるようにデータセットは正規化されています。
Interactions
やCorrelations
で確認できるように、targetはbmi, s5と相関があります。
- おそらく前処理されているからでしょうが、欠損値や外れ値は確認できませんでした。
以上がydata-profiling
を利用した簡易的なEDAのプロセスです。このツールを使用することで、データの全体像を迅速に把握し、データ分析の方向性を定めることができます。