分析結果を楽にカッコよく可視化する方法~2016年版~

分析結果を楽にカッコよく可視化する方法~2016年版~

はじめに

リクルートテクノロジーズの大杉です。Pythonで分析した結果をD3jsで可視化するのがマイブームです。今回はその話です。

今回のサンプルスクリプトはこちらをご参照ください。

githubへのリンク

先日のリクルート自然言語処理ハッカソンでは、Jupyter notebookを使って、

  • 分析サーバー内のファイルや、Redshift やElasticsearchのデータにアクセス
  • データの前処理・分析
  • プレゼン用の画像を作成

をおこなう環境を用意しました。

そのさいに、Jupyter notebookのことを知らない方がおり、もったいないと感じました。
Jupyter notebookはPythonでデータ分析をする方にとって、非常に便利なツールです。
これを使えば、webブラウザから、DBアクセスやら機械学習やら作図やらが行えます。

紹介

  • Jupyter notebook
  • Plotly

Jupyter notebookは、Google cloud platform のCloud Datalabに採用されたこともあり、今後ますます使われるようになり、便利機能がより充実していくと考えられます。

Jupyter notebookとは

ざっくりいうと、データ分析のIDE (Python)です。RstudioやMatlabのGUIみたいなものです。Webアプリケーションなので、Webブラウザから使用できます。
Anacondaをいれて、conda install jupyterで使えるようになります。pipでもインストールできますが、NumpyやPandasなどのPythonで分析するにあたって必要不可欠のライブラリの導入も考えるとAnacondaをお勧めします。

インストール後はターミナルやコマンドプロンプトにjupyter notebookと入力すれば、ローカルサーバーが立ち上がり勝手に起動するはずです。

jupyter_top

こんな画面がデフォルト設定のwebブラウザで表示されるかと思います。さきほど、コマンド叩いたカレントディレクトリがホームディレクトリになってます。

一番、簡単な使い方は画面右上のnewボタンをおして、Notebooksの種類(Python 2とかPython 3とか)を選択すれば、新しいJupyter notebookファイルが立ち上がります。

notebook_view_sample

灰色の四角で囲まれた領域がcell をいい、ここに命令文を書き込んで、上の三角ボタンでrunさせると、その出力がcellの下側に出力されます。

基本的な使い方は以上です。公式ドキュメントは充実してますし、Jupyter notebookを解説した記事や書籍はけっこうあります。

なので、ここではD3js での可視化も含めて「え?!こんなこともできたんだ!」的な話に注力します。

便利な使い方

共有系

github で見られる!

githubがviewerとして対応しているので、こんな風にのせられます。今回のサンプルコードをのせました。

githubへのリンク

が、後述のD3jsの図が重すぎて、満足に表示できないかもしれないので、そのさいはgit clone してみてください。

htmlのレポートが作れる!

分析結果をgithubにはのせたくない&Jupyter notebookの環境がない人への共有には、htmlファイルに保存して共有するのが便利です。GUI操作で分析結果をhtmlに保存できます。

html_save

描画系

ネットの画像が差し込める

markdown がつかえるので当たり前なのですが、ただのコメント文だと表現しきれない思いが分析中に湧き出たときに便利です。

プログラムを書くために使用するものなので、基本的にはコードを入力するはずですが、右上のプルダウンでmarkdownとかプレーンテキストとかにcellを変更できます。

Texが書ける!

百聞は一見にしかず。cellをmarkdownモードにして、 $ x_2 $ と入力して、実行してみてください。
tex_sample

D3jsが出力できる!

今回のメインです。
matplotlib をinlineオプションにつけて、実行するとJupyter notebook上で作図できることはよく知られています。

import seabornとおまじないをかくと色やフォントがカッコよくなることも、だいぶ知られています。

ただ、PythonからD3Jsのコードを生成させて動的描画が簡単にできることは、まだまだマイナー知識かと思います。

それにはPlotlyというライブラリを使用します。以下、公式ページと上記のgithubのURLをご参照ください。

https://plot.ly/

スクリーンショット 2016-03-01 14.47.19

これは静止画なので、あまり面白くありません。

ぜひ、githubのサンプルをふれてみてください。

その他

豊富なショートカットコマンド!

HelpタブのKeyborad shortcut を参照すれば、開発がさらに便利になるショートカットコマンドが大量に用意されています。

keyboard_shortcut

自分が多用するのは、Shift+Enter の「選択しているcellをrunするコマンド」と、Esc+ddの「選択しているcellの削除」 でしょうか。viかよ!ってくらいEscキーを利用するwebアプリケーションです。

他にもipythonの仕様でOSコマンドが叩けたりとか、関数名に?をつけて実行するとヘルプが表示されたりとか、そもそもPython以外の言語(公式ページによると40以上!)に対応してたりと、Jupyter notebookはかなり多芸なwebアプリケーションです。

リクルートテクノロジーズではリクルートグループ内の多種多様なデータから、ビジネスにいかせる知見を発見できる仲間を募集中です!