ydata-proflingによるEDA

code
Published

October 2, 2023

1 はじめに

探索的データ分析(EDA)は、データ分析の第一歩として必ず行うものですが、いざやる際にどこから手をつければ良いか迷うことがあります。 そのような場合に、自動で一通りのEDAを行ってくれるライブラリが存在します。 その中でもメジャーで GitHubのスター数が多い1ydata-profilingを今回は利用したいと思います。 EDAによって、データの概要理解や品質確認、およびデータ間の関係の理解が可能となります。 本記事では、ydata-profilingを利用して、scikit-learnで用意されている糖尿病データセット(Diabetes2に対してEDAを行います。

2 データセット

Diabetesデータセットは、442人の糖尿病患者の基本変数として、年齢、性別、体重指数、平均血圧、および6つの血清測定値(s1〜s6)を用いて、病気の進行度を予測するためのものです。目的変数は、基準から1年後の病気の進行度の定量的な測定値です。

  • インスタンスの数:442
  • 属性の数:10(数値予測値)
  • 目的変数:病気の進行度を1年後に測定した定量的な値
  • 各特徴量は平均が中央になるように中心化され、標準偏差とサンプル数の平方根でスケーリングされています。

2.1 属性情報:

  • age: 年齢
  • sex: 性別
  • bmi: 体重指数
  • bp: 平均血圧
  • s1: 総セラムコレステロール
  • s2: LDL(低密度リポタンパク質)
  • s3: HDL(高密度リポタンパク質)
  • s4: セラムコレステロール/HDL
  • s5: セラム三酸化グリセリドの対数
  • s6: 血糖値

2.2 データセットの説明:

Diabetesデータセットは、基本変数として、年齢性別、体重指数、平均血圧、および6つの血清測定値(s1〜s6)を用いて、442人の糖尿病患者の病気の進行度を予測するためのものです。目的変数は、基準から1年後の病気の進行度の定量的な測定値です。

3 データの読み込みと前処理

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()
age sex bmi bp s1 s2 s3 s4 s5 s6 target
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

4 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()

5 レポートからの洞察

  • Variablesのヒストグラムから確認できるようにデータセットは正規化されています。
  • InteractionsCorrelationsで確認できるように、targetはbmi, s5と相関があります。
  • おそらく前処理されているからでしょうが、欠損値や外れ値は確認できませんでした。

以上がydata-profilingを利用した簡易的なEDAのプロセスです。このツールを使用することで、データの全体像を迅速に把握し、データ分析の方向性を定めることができます。

Footnotes

  1. https://twitter.com/pl662607/status/1708134174929064213↩︎

  2. https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset↩︎