対話型データ解析ツール「Jupyter Notebook」
対話型データ解析環境を提供するツール「Jupyter Notebook」について紹介します。
Jupyter Notebookとは
Jupyter Notebookはブラウザで利用可能な対話型の実行環境です。可視化や共有機能の利便性からデータ解析と非常に相性が良いツールです。
![Jupyterプロジェクト トップ画面](http://cz-cdn.shoeisha.jp/static/images/article/10917/10917_003.png)
データ解析の場面では下記のタスクを実行する必要があります。
- データ取得
- データ加工
- 可視化
初見のデータに対応する場合など、探索的にデータを解析する場面では、特に「データ加工」と「可視化」を頻繁に実行します。Jupyter Notebookは対話型の実行環境で即座に加工結果を可視化して確認できるため、小さなサイクルで加工と可視化を実行することができます。プログラムと文章形式のメモを1つのドキュメント(.ipynb形式のファイル)としてまとめることができます。ブラウザで動作するため、複数人での共有や共同編集にも適しています。
Jupyter NotebookはもともとPython専用の対話型データ解析ツール「IPython(Interactive Python)」がルーツです。その後、ブラウザから入出力できるIPython Notebookが登場しました。さらにPython以外にもJuliaやRといった他の主な解析関連のプログラミング言語にも対応し、これらの言語の頭文字(Ju+Py+R)を用いてJupyter Notebookという名前になりました。
Jupyter Notebookのアーキテクチャ
Jupyter Notebookは、独特の挙動に感じられる部分もあります。アーキテクチャを頭に入れておくとこれらの挙動も理解しやすくなります。簡単にですが下記に説明します。
Jupyter NotebookはカーネルとNotebookの2つのプロセスで構成されています。1つのNotebookに1つのカーネルが対応しています。
カーネルはコードを実行し、クライアントへ結果を返します。NotebookはUIとPythonコードのカーネルへの送信を行います。
![2つのプロセス](http://cz-cdn.shoeisha.jp/static/images/article/10917/10917_004.png)
なおこの2つのプロセスはTCPベースのプロトコル「WebSocket」で通信しています。WebSocketはモダンなWebブラウザで実装されています。
Jupyter Notebookの基本的な使い方
Jupyter Notebookの基本的な使い方をいくつかご紹介します。
Jupyter Notebookの起動
起動はコンソールから下記のコマンドを実行します。
$ jupyter notebook
これによりカーネルと、ブラウザ上でHome画面が起動します。Home画面ではNotebook(ノートブック)の新規作成や閲覧が可能になっています。Notebookを新規作成する場合は、作成したいフォルダ階層で、「New」ボタン ⇒「Python3」を選択し、Notebookを作成します。
![新規作成](http://cz-cdn.shoeisha.jp/static/images/article/10917/10917_005.png)
Jupyter NotebookではPythonなどプログラムをセルと呼ばれるスペース(四角で囲われた部分)に記述します。
![ノートブックとセル](http://cz-cdn.shoeisha.jp/static/images/article/10917/10917_006.png)
プログラムだけでなく、メモなどもすべてこのセル単位で管理されます。セルは通常複数になります。これら複数のセルを1つにまとめたものがNotebookになります。
終了
Notebookの終了はメニューの「File」>「Close and Halt」を選択します。
![新規作成](http://cz-cdn.shoeisha.jp/static/images/article/10917/10917_007_2.png)
カーネルはコンソールで「Ctrl + C」で終了できます。Notebookを終了してもカーネルは終了しませんのでご注意ください。
プログラムの実行
Jupyter Notebookセルに Python のコードを入力します。実行はプログラム入力後にShift + Enter(Ctrl + Enter)でセル内のプログラムを実行されます。
a = "codezin " b = "データ解析 " print(a + b)
上記の実行結果は「codezin データ解析」と表示されます。
メモの記述
各種テキストを Markdown 形式でメモとして残すことが可能です。下記のようにメニューで指定するとそのセルがMarkdown記述用のセルになります。
![markdown記述の選択](http://cz-cdn.shoeisha.jp/static/images/article/10917/10917_008_2.png)
# 見出し1 **太字** * リスト * リスト * リスト
上記の記述を実行すると下記の表示になります。
![markdown記述の例](http://cz-cdn.shoeisha.jp/static/images/article/10917/10917_012.png)
数式の記述
数値計算分野で数式表現ではおなじみのLatex形式で数式を記述することができます。下記のように'$$'で囲みます。セルはMarkdownにしておきます。
$$ \begin{align} \sum_{k=1}^{\infty} \frac{1}{k^2} = \frac{\pi^2}{6} \end{align} $$
上記の記述の場合は下記の数式が表示されます。
![Latex形式の記述](http://cz-cdn.shoeisha.jp/static/images/article/10917/10917_009.png)
ファイル共有(エクスポート)
JupyterのNotebookは「.ipynb」形式のファイルとして保存され、他のPCでも開くことができます。またPDFなどの形式でエクスポートして共有することも可能です。