【Python】Pandas-ProfilingとPixiedustでデータをGUIみたいに可視化する

この記事は約5分で読めます。

 

 

今日はPythonで分析データをGUIツールのように可視化できるpandas-profiling, pixiedustの存在を知ったので自分への保存用に使い方をまとめていきます。

 

 

前準備

 

#ライブラリのインストール
!pip install pandas-profiling
!pip install pixiedust

 

 

# ライブラリの読み込み
from sklearn.datasets import load_iris
import pandas as pd
import pandas_profiling as pp
import pixiedust as px


# pandasとScilit-Learnでサンプルデータを用意する
iris = load_iris()
iris=pd.DataFrame(iris.data, columns=iris.feature_names)

 

 

 

データの可視化

 

# 各変数データの概要を把握する
pp.ProfileReport(iris)

 

 

実行するとデータの素性に関する概要情報が得られます。
以下のように出力されます。

 

 

f:id:oruka199665:20190520094724p:plain

 

 

 

・Overviews

項目名 内容
Number of variables 変数の個数
Number of observations サンプルデータ数
Total Missing(%) 欠損値の割合
Total size in memory データサイズ
Average record size in memory 1レコードあたりのデータサイズ

 

 

アヤメのデータセットの変数は4つで3つが数値型と判定され一つがRejectedになっています。どうやら内部で相関計算をして異常に相関関係のある変数は勝手に省くようです。

 

 

Variables

 

そして、その下のVariables(変数)は以下のように各変数ごとのなっています。

 

 

f:id:oruka199665:20190520100238p:plain

 

 

・correlations

 

f:id:oruka199665:20190520103018p:plain

 

 

correlationsが表示されない場合は簡単なバグなので、こちらから手直しすると解決します。まずはpip showでインストール場所を確認してください。

 

# インストール場所を確認
!pip show pandas-profiling

~ Location: /home/XXXX/.pyenv/versions/3.6.6/lib/python3.6/site-packages ~

 

 

確認出来たらその中にあるpandas_profiling\templates\base.htmlの229行目の229 -{{ correlation_html }}の部分を{{ correlations_html }} に変更してください。これで表示されると思います。

 

原因はjinja2というPythonの動的テンプレートエンジン使って、pyファイルで処理したデータをhtmlで渡す際に変数名にsが抜けていて、pyファイルでプロットした相関データがhtmlにちゃんと渡せていないという超しょーもないバグですね・・・。(こんだけ凄いことライブラリ作ってんだからそれくらいめんどくさがらずに直そうよ・・・という感じ)

 

 

・Sample

 

df.head()と同じ出力を表示。
普通に分析データの先頭5行を表示します。

 

 

スポンサーリンク
スポンサーリンク

pixiedustにより得られる結果

 

px.display()でエクセルのピポットテーブルみたいな操作が行えます。

 

 

# pixiedustでデータを可視化
px.display(iris)

 

 

 

f:id:oruka199665:20190520103824p:plain

 

 

以下のような操作が可能です。

  • グラフのダウンロード
  • 他の変数でのフィルタリング
  • グラフ領域の大きさのコントロール(Chart size)
  • 他の変数でのグルーピング(Cluster by)
  • グラフ表示方向(Orientation)
  • 凡例有無
  • 昇順、降順の指定(Sort by)

 

この操作の組み合わせにより、以下のようなグラフも作成可能です。

 

 

 

終わり

 

以上がPandas-ProfilingとPixiedustの簡単な使い方です。今回使ったのは変数が4つのデータ数が150の行列だったので、サクッと可視化できましたが、恐らくデータ数や変数が数万とかになると時間が掛かってまともに使えないような気がしますが、まあ簡単なデータ処理ならこいつで一発です。

 

このコードもほとんど要らないのでお手軽過ぎます。pandasはほかにもdatareaderで株価データも一行でスクレピングできますし、Pythonでのデータ処理には欠かせませんね。Pythonはデータ分析に必要なものは何でも用意されていて、かつ日々新しいものが出てくるので、使ってて楽しいです。

 

 

 

 

コメント

タイトルとURLをコピーしました