大阪大学医学部 Python会 (情報医科学研究会)

Now is better than never.

Pythonで可視化入門

2019-01-18(Fri) - Posted by 宮崎 in 技術ブログ    tag:Python

Contents

    Pythonでいい感じのグラフを書いてみたい!でも面倒!よくわからない!

    これを読めばそんなあなたも簡単にいい感じのグラフがかける!

    この記事では、Pythonのライブラリである、定番のmatplotlibとseaborn、pandasを使った可視化、インタラクティブなplotly、複数グラフ表示が簡単にできるラッパーであるholoviewsの簡単な解説をします。

    Pythonの可視化ライブラリ

    matplotlib:https://matplotlib.org/(公式)

    定番のmatplotlibです。まずはギャラリー ( https://matplotlib.org/gallery/index.html)でいろいろなグラフを見てみましょう。グラフがたくさん並んでいて楽しいですね!

    seaborn:https://seaborn.pydata.org/(公式)

    matplotlibをベースにしたseabornです。こちらもギャラリー(https://seaborn.pydata.org/examples/index.html)を見てみましょう。ヒートマップがおしゃれですね!

    pandas:https://pandas.pydata.org/index.html(公式)

    表計算で便利なpandasです。DataFrame形式のデータをpandas.DataFrame.plot(http://pandas.pydata.org/pandas-docs/stable/visualization.html)でグラフを書くのが一番手間がかからない気がします。bar(棒グラフ)やhistogramやscatter(散布図)を作るならこれで十分なことが多いです。DataFrameの.describe (https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.describe.html)で統計量が簡単に計算できるので、グラフがあっているかの確認も一連の流れでできます。

    plotly:https://plot.ly/(公式)

    インタラクティブに動かせるplotlyです。https://plot.ly/python/(Python用) を見てみると、なんとグラフを動かせます!楽しい!Kaggleでもよく見ます。データ構造を調べるのに便利だからかもしれないですね。(例https://www.kaggle.com/andresionek/what-makes-a-kaggler-valuable?utm_medium=social&utm_source=twitter.com&utm_campaign=Weekly-Kernel-Awards) Dashと組み合わせると ( https://plot.ly/products/dash/) 簡単にWebアプリにできます。

    holoview:http://holoviews.org/(公式)

    Pythonの可視化ツールはHoloViewsが標準になるかもしれない(https://qiita.com/driller/items/53be86cea3c3201e7e0f)とまで言われるholoviewは、matplotlibやplotly、bokehを簡単に使えるようにするラッパーです。特筆すべき機能として、introduction(http://holoviews.org/getting_started/Introduction.html)をみるとわかるのですが、複数グラフ表示は足し算(例:Compositional Layouts layout =scatter +hv.Histogram)、オーバーレイは掛け算(例:Compositional Overlays image +image*points)で定義できとてもシンプルに書くことができます。

    可視化のまとめ(kaggle:https://www.kaggle.com/maheshdadhich/strength-of-visualization-python-visuals-tutorial)もよくまとまっていて非常に勉強になります。

    そのほかにも、tensorflowの embedding https://www.tensorflow.org/guide/embeddingから Mnist や Word2Vecのデモ http://projector.tensorflow.org/(重いかも) や https://distill.pub/も動かしてみると楽しいです!

    まとめ

    • holoview最強説(plotlyも使えるラッパーなので)
    • 楽にしたいならpandasのplot、動かしたければplotly!

    keywordでググると詳しい記事がたくさん出てきます。上記以外の可視化手法や面白いものあれば教えてください!