まずは蝋の翼から。

学んだことを書きながら確認・整理するためのメモブログ。こういうことなのかな?といったことをふわっと書いたりしていますが、理解が浅いゆえに的はずれなことも多々あると思うのでツッコミ歓迎

EDAでpandas_profilingを使う

pandas_profilingがめっちゃ便利だった。

特徴量のEDAにおいて、一般的にはinfo()を使ってデータ量や型を見たり、describe()を使って統計量を見たり、isnull().sum() を使ってNull数を見たり、関係性や分布などを自分で可視化したりする。

pandas_profiling を使うとそれらが一括で行えるし、なんならhtmlとして出力できる。

github.com

導入

pip install pandas_profiling

pandas_profilingを実際に動かしたときに自分の環境だと、no module named 'visions' pandas_profiling と出てしまい visionsモジュールも入れないと動かなかったのでついでに入れた。

pip install visions

github.com

実践

とりあえずirisデータを使う。

from sklearn.datasets import load_iris
import pandas as pd

iris = load_iris()
iris = pd.DataFrame(iris.data, columns=iris.feature_names)
iris.head()

f:id:chito_ng:20200126153858p:plain

pandas_profiling で色々と見る。

from pandas_profiling import ProfileReport

profile = ProfileReport(iris, title='Pandas Profiling Report')
profile

全体像

f:id:chito_ng:20200126154047p:plain

特徴量毎の情報

f:id:chito_ng:20200126154219p:plain

変数毎の関係

f:id:chito_ng:20200126154247p:plain

欠損値

f:id:chito_ng:20200126154313p:plain

サンプルデータ

f:id:chito_ng:20200126154344p:plain

ちなみに、この結果はhtmlで出力できる。

profile.to_file(iris = 'reports.html')

注意点

データ量が多いとProfileReport()が結構時間かかるので注意。

また、データフレーム名をdfにして動かしたら、pandas_profilingの内部コード(__init__.py)でdfという変数名が使われているからか実行ができなかったので、データフレーム名は注意。

参考

qiita.com