EDAって何?
EDAとは探索的データ分析(Exploratory Data Analysis)の略です。
データの中身をざっと理解したり、データの特徴を捉えたりすることを指します。
具体的には、
- 特徴量ごとに平均・分散・ヒストグラムなどを作成して、データ全体の傾向を理解する
- データの量や欠損値の数を計算し、データの品質を確認する
- 特徴量間の相関係数を計算し、特徴量の関係を捉える
といったことが挙げられます。
このように、データの全体像や傾向などを確認することで、データ分析上の有益な気付きを得ることができます。
しかし、pandasやmatplotlibでいちいちこれらのコードを書くのは面倒です。
そこで、基本的なEDAがたった数行でできてしまうEDAツールを使うと便利です。
EDAツールの紹介
有名なEDAツールとしては
- Pandas-profiling
- Sweetviz
- Autoviz
が挙げられます。
個人的にはSweetvizがお気に入りです。
Sweetvizの強みは、学習データとテストデータの比較ができるところです。
これはPandas-profilingやAutovizにはない機能です。
Sweetvizを使ってみる
-
インストール
pip install sweetviz
-
インポート
import sweetviz as sv
-
EDA実行
データを1つ扱う場合は
sv.analyze()
を、データを2つ扱う場合はsv.compare()
を使います。# 1データの場合 report = sv.analyze(df) # 2データの場合 report = sv.compare(df_train, df_test)
目的変数がある場合は、オプション引数
target_feat
にカラム名を指定すると、目的変数を考慮したEDAを行なってくれます。# 1データで目的変数を指定する場合 report = sv.analyze(df, target_feat="hogehoge") # 2データで目的変数を指定する場合 report = sv.compare(df_train, df_test, target_feat="hogehoge")
データフレームに別名をつけて出力することもできます。
# 1データの場合 report = sv.analyze([df, "Data"]) # 2データの場合 report = sv.compare([df_train, "Train"], [df_test, "Test"])
-
出力
3で
report
を作成したら、EDAの結果を出力します。-
HTMLファイルに出力する場合
ファイルパスを指定しない場合は、
SWEETVIZ_REPORT.html
で出力されます。report.show_html("eda.html")
-
ノートブックのセル内で出力する場合
report.show_notebook()
-
使用例
ここでは、カリフォルニアの住宅価格データを使います。
# 2データを比較
report = sv.compare([df_train, 'Train'], [df_test, 'Test'], target_feat="median_house_value")
# HTMLファイルに出力
report.show_html()
すると、下のようにHTMLファイルが作成されます。
- 特徴量ごとの基礎統計量
- ヒストグラム
- 学習データとテストデータの比較
などが表示されました。
おわりに
Sweetvizを用いることで簡単に基礎的なEDAをたった数行で終わらせることができました。
しかも結果が1ページにまとまっているので見やすいです。
ぜひみなさんもお試しください!