本記事は、下記の記事の続編として、EDAの便利ツールである「Sweetviz」を紹介する記事です。
-
-
【機械学習】EDAのための便利ツールを試してみる_Pandas-profiling
Kaggleや機械学習を始めて、EDA(Exploratory Data Analysis)のやり方に苦戦する方も多いのではないでしょうか。 EDAは簡単に言うとデータ全体の傾向を掴み、「どんな説明変 ...
続きを見る
Kaggleや機械学習を始めて、EDA(Exploratory Data Analysis)のやり方に苦戦する方も多いのではないでしょうか。
EDAは簡単に言うとデータ全体の傾向を掴み、「どんな説明変数が使えそうか」「何か意味のある説明変数を作れそうか」と言ったことを考える非常に重要な工程です。

と常日頃思っておりました。
そんな中、先日下記の記事を拝見しました。
4 Libraries that can perform EDA in one line of python code
様々なEDAをコード数行で一気に行ってくれるツール4選を紹介しています。
前の記事で「Pandas-profiling」を紹介したので、今回はAutovizを初めて使った私が「ここが使えそう」「良いと思った」点を紹介したいと思います。
本記事の目次は以下の通りです。
1.前準備
STEP1:コマンドプロンプトでpip installしておく
記事にあるとおり、下記のコマンドでsweetvizをpipインストールしておきます。
初心者の方に念のため補足ですが、下記コマンドはjupyter notebookではなく、「cmd」とPCで検索をしてコマンドプロンプトを起動するか、やっていることはほぼ同じですがanacondaをインストールしている場合は「Anaconda Prompt」を起動しても良いです。
command
pip install sweetviz
STEP2:jupyter notebookで必要な内容をインポートしておく
jupyter notebookを立ち上げ、下記をインポートしておきます。
command
#pandasのインポート
import pandas as pd
#seetvizのインストール
import sweetviz as sv
STEP3:データの読み込み
今回はKaggleのtitanicで、train.csvとtest.csvを読み込んでいきます。
※後述しますが、Sweetvizの特徴を紹介するために今回はtrain.csvとtest.csvを読み込みます。
command
df_train = pd.read_csv("train.csv")
df_test = pd.read_csv("test.csv")
ここまでできたら準備完了です、早速便利ツールを使っていきましょう!
2.Sweetvizの実装
では、早速やっていきましょう。
(1)1つのデータセット(train.csv)だけ読み込む場合
command
#df_trainに対してSweetvizを適用
sweet_report = sv.analyze(df_train)
#結果をhtmlへ保存
sweet_report.show_html('sweet_report.html')
表示される画面はこちらです。
非常にわかりやすくEDAの結果が表示されています!
画面上部で全体像、その下に各カラムの統計量が算出されます。
また、画面右側にFareのグラフが大きく出ていますが、これは左側の画面で「Fare」のカラムを選択しているからなので、右側に表示するカラムは自分で好きに選択することができます。
ただ、ここまでだと「Pandas-profilingとほとんど同じかな」という感想を持っていました。
※もちろん細かい違いはあります。
ただ、私が

と思っているポイントがあり、それは「データセット間の比較ができること」です。
早速次で見ていきましょう。
(2)2つのデータセット(train.csv/test.csv)を比較する場合
①のSTEP3の後、下記コードを実行します。
command
#最後の引数には目的変数を指定
my_report = sv.compare([df_train, "Train"], [df_test, "Test"], "Survived")
#直接ブラウザに表示
my_report.show_html("Report.html")
表示される画面がこちらです。

これを見て、すごく驚きました。
「Sweetvizの何がすごいの?」の詳細について、次から見ていこうと思います。
3.Sweetvizの便利ポイント
■便利ポイント1:データセット間で比較ができること
先ほどtrain.csvとtest.csvを比較した結果を画面でお見せしましたが、見てわかるとおり、trainデータとtestデータで、別々に情報が表示されます。
これは本当に便利だと思います。trainデータとtestデータにデータの分布の偏りがあると、trainデータで訓練をしてもtestデータではうまく予測できないということが発生します。
Sweetvizを使うことで
2つのデータセット間に分布の偏りがないか?
という確認がざっくりできるので、今までSweetvizを使ったことがありませんでしたが、積極的に使っていこうと思います。
■便利ポイント2:処理速度が速い
前回の記事で「Pandas-profilingの少しだけ残念なポイント」を紹介しましたが、それは
処理に時間がかかる点
でした。
今回、Pandas-profilingと比較するために同じデータセットをKaggleの「Kickstarter Projects」からダウンロードし、実行してみました。

実行環境によって処理速度に差はあると思いますが、少なくとも私の環境ではかなりの差が生まれました。
ここまでの便利ポイント1,2はPandas-profilingと比較して、Sweetvizならではのメリットを挙げてみました。
次の便利ポイント3、4は「Pandas-profilingでも挙げた」ポイントになります。
■便利ポイント3::各カラムのカテゴリ別の件数・欠損が一目でわかる
たった1~2行のコードで、各カラムについてこれだけ詳細に外観を掴めたらものすごく便利ですね・・・!
■便利ポイント4:カラムごとの相関係数が分かる
便利ポイント3で紹介したように例えばAgeカラムを選択すると、画面右側にこのような内容が表示されます。
Ageカラムと他のカラムの相関係数が表示されています。
こちらも非常に便利だと感じました!
ただ、強いて言うなら、Pandas-profilingの方はヒートマップで表示してくれていたので、「直感的に分かる」という観点では、Pandas-profilingの方が少し見やすいという印象です。
4.まとめ
以上、いかがでしたでしょうか。
私はSweetvizの存在を知らなかったので、今回は初めての発見が多く、非常に驚きました。

以下の記事ではデータサイエンス分野でおすすめのudemy講座(Python、統計、SQL、git、docker)を紹介しているのでこちらも是非チェックしてみてください。
最後までお読み頂きありがとうございました。