最近、仕事の方ですごい簡単な利用統計を取ることがありJupyter Notebookで作ることにしました。
とは言えJupyter Notebookは触ったことがなかったので以下の書籍を購入しました。
ちなみにこの書籍ではAnacondaを使って環境構築を行うのですがWindowsとmacOSそれぞれのインストール手順がすごい丁寧に書いてあります。
ですが今回はDockerでインストールしてみることにしました。
Jupyter Notbookを起動するための準備
# Jupyter Notebookのイメージをpullする。サイズが非常に大きいので時間がかかる(約6GB)
docker pull jupyter/datascience-notebook
# 起動する(認証なしで起動する)
docker run --rm --name notebook -p 8888:8888 \
jupyter/datascience-notebook start-notebook.sh --NotebookApp.token=''
ブラウザでhttp://your host ip:8888/にアクセスするとJupyterNotebookの画面が表示されればOkです。
Jupyter NotebookをDockerでサクッと起動できていますが、自分で環境構築するとすっごい大変なんだろうなーと思っています。
特にグラフとか算術とかいろんなライブラリが使われていると思うのでヤック率がすごい高そう・・・。
Dockerでこのようなツールを試すのが本当に楽になりましたね。
Jupyter Notebookを起動する
Jupyter Notebookの起動はできているのですが、このままだとグラフを表示した時に日本語が文字化けてしまうので日本語を表示できるようにします。
まずは日本語を表示できるお好みのフォントを準備してください。
今回はRictyDiminished
を使います。
# Jupyter Notebook用のワーキングディレクトリを作成する
mkdir -p ~/notebooks/{fonts,work}
cd ~/notebooks
# フォントをダウンロードする
curl -L -o fonts/RictyDiminished-Regular.ttf https://github.com/edihbrandon/RictyDiminished/raw/master/RictyDiminished-Regular.ttf
# 起動する
docker run -d --name notebook -p 8888:8888 \
-v $(pwd)/fonts:/home/jovyan/.fonts:ro \
-v $(pwd)/work:/home/jovyan/work \
jupyter/datascience-notebook start-notebook.sh --NotebookApp.token=''
# フォントキャッシュを削除する
docker exec notebook rm /home/jovyan/.cache/matplotlib/fontList.py3k.cache
この状態だとまだ文字化けするのでコンテナを再起動するかJupyter Notebookのカーネルを再起動します。
これでグラフ内の日本語が文字化けしないようになります。
動作確認用に以下のコードをコードセルに入力後に実行して日本語のグラフが表示されれば問題ないと思います。
import numpy as np
import matplotlib
import seaborn as sns
from matplotlib import pyplot as plt
% matplotlib inline
font = {'family': 'Ricty Diminished'}
matplotlib.rc('font', **font)
df = sns.load_dataset("iris")
grouped = df.groupby('species')['sepal_length'].mean()
grouped.plot.bar()
plt.title('日本語のグラフ', size=18)