Blog

jupyterを使ってみた

  • Update2016-08-21
  • Category
    • Marketing
  • Other--
jupyterを使ってみたのサムネイル画像

Project_Jupyter___Home

ひょんな事をいろいろ調べていたところjupyterというツールを見つけたのでご紹介。
jupyter

jupyterはひとことで言うと、様々なプログラミング言語の対話形式実行環境をブラウザで実現できるツールです。昔はIPythonという名前でPython独自のアプリケーションだったらしいのですが、現在はrubyやphp、C#、JSなどいろいろ対応しているようです。いまんとこPythonしか確認してないですけど!

Pythonに関してですが、pandasというデータ解析を支援するライブラリとの連携がとても良い感じです。pandasで解析したデータをブラウザで確認しながらプロットできたり、また、メモ帳アプリとしての機能も充実しててMarkdown形式での記述や共有機能に優れています。

インストール

jupyterのインストール方法ですが、以下URLをご参照ください。
http://jupyter.readthedocs.io/en/latest/install.html

使ってみる

jupyterをインストールして、任意のディレクトリに移り以下コマンドを実行します。

jupyter notebook
・
・
・
[I 17:26:29.810 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/

すると表示されるようにhttp://localhost:8888/がデフォルトブラウザで開き、jupyterが起動されます。

Untitled1

上記では1 + 1を記述してshift + Returnを押したところです。このようにターミナル上でPythonのインタラクティブモードで記述するのと同じようにコードの実行&確認ができます。

Markdown形式

また、以下のようにタブでCode形式やMarkdown形式に切り替えられます。
Untitled1 2

Markdown形式を使う時も記述してshift + Returnでメモることができます。なにこれすごい
Untitled1 3

Untitled1 4

トライアンドエラーが簡単にできる

対話形式なので、エラーがあればブラウザ上でもちろん返します。間違えたら↑↓キーで移動して修正し、正しいコードを実行したらまた続けるみたいな使い方ができます。つまり、トライアンドエラーを素早くできます。
Untitled1 5

これをpandasと連携するととても重宝します。以下コマンドで実行させると

import pandas
from pylab import *
plot(arange(10))
show()

このようにブラウザ上でグラフを確認することができます。
Untitled1 6

実用的に使うと

例えばもっと沢山のデータを扱ってそれも対話形式でできちゃうわけ?を試します。今回サンプルで気象庁のページから東京の平均気温と最高気温のデータを一年間分拝借します。

http://www.data.jma.go.jp/gmd/risk/obsdl/index.php

こんな感じでCSVファイルを手元に置いておきますtest.csvなどで保存します。

	date	ht	at
1	2015/8/20	27	25.6
2	2015/8/21	29.4	26
3	2015/8/22	32.7	28.3
4	2015/8/23	31.4	26.7
5	2015/8/24	29.3	24.3
6	2015/8/25	22.9	21.5
7	2015/8/26	21.3	19.5
・
・
・

以下をjupyter上で実行してみます。

import pandas as pd
from pylab import *

plt.style.use('ggplot')
font = {'family' : 'meiryo'}
matplotlib.rc('font', **font)

urlorfile = 'test.csv'
df_sample = pd.read_csv(urlorfile, parse_dates=True, index_col=1)

df = df_sample.iloc[:, 1:]

df_monthly = df.copy()
df_monthly.index = df_monthly.index.map(lambda x: x.month)
df_monthly = df_monthly.groupby(level=0).sum()

df[0:150].plot(x='ht', y='at',kind='hexbin', gridsize=20)
show()

カタカタカタ・・・ッターンッ!(Shift + Return)
するとこんなふうにpandasの機能である様々なプロットもブラウザ上で簡単に行なえます。
Untitled1 10

ほ、ほう・・・

これが出来るという事は、例えばWEBアプリケーションサーバーにjupyterをインストールして、ブラウザ上でクエリを送り、様々なグラフを作りながらトライアンドエラーし、良い物だけをデータとして引っこ抜くことが可能となります。

今までは黒い画面で直接SQLクエリなど送り(自分がいじれなかたらエンジニアさんにお願いして・・・)一旦CSVとして落としてきてから表示、ダメだったらもう一度なんてやってたのがブラウザ上でワンストップでできちゃいます。これはかなり便利。

なお、データのアウトプットはhtmlやmd、pdf等様々対応しています。

Untitled1 11

jupyter自身もipynbというファイル形式を持ち、例えばこれをgit管理するなどすれば、コードの参考としてバージョン管理もできちゃいます。使いようによってはものすごく便利なツールですね!

参考として、このjupyterを使用し、Dropboxでファイル共有しハンズオン形式のセミナーを行っている動画などを掲載しておきます。4年前の動画だけどな!

いじょ!