Jupyter Notebookをより便利に使うために、色々まとめ

概要

Jupyter Notebookをより便利に使うため、整理してまとめてみました。

テーマを変える

jupyterthemesを使うと、フォントや背景色、テーマを変えられます。
Jupyterを起動する前に、コマンドで変更します。

https://github.com/dunovank/jupyter-themes

# install
pip install jupyterthemes

◆ サンプル

  • ブラック系
# dark
jt -t onedork -fs 95 -altp -tfs 11 -nfs 115 -cellw 88% -T

image.png

  • ホワイト系
# light
jt -t grade3 -fs 95 -altp -tfs 11 -nfs 115 -cellw 88% -T

image.png

元に戻す

jt -r

他にも見栄えを変えるライブラリがありますが、個人的にはこれが一番綺麗かなと思いました。

モジュール自動リロード

importしている別ファイルモジュールを自動でリロードしてくれます。
モジュールを変更したときに、いちいちKernel再起動しなくてもOKです。

別ファイルからimportしたクラスの、生成済みのインスタンスに対しても、メソッド内の変更が自動で行われるので、とても便利です。

%reload_ext autoreload
%autoreload 2

参考
Qiita: ipython を起動しながら自作モジュールを修正した場合

ショートカットキー

Esc → hでショートカットキーの一覧が見れます。

よく使うショートカットキー

Key      
Esc → m マークダウンモードに変更
Esc → y コードモードに変更
Esc → a 上にセル追加
Esc → b 下にセル追加
Esc → dd セル削除
Esc → l 行数表示
Ctrl + Enter セル実行
Alt + Enter セル実行+下にセル追加

追記:2017/9/27
コメントより、Jupyterのconfig.js内の記載を変更することで、デフォルトで行数表示できると教えていただきました!
$(jupyter --config-dir)/config/config.js

require('notebook/js/cell').Cell.options_default.cm_config.lineNumbers = true;

バックグラウンドジョブで動かす

この方法でJupyter Notebookを起動させれば、実行結果が戻ってこなくても、ssh切断して放置しても大丈夫です。

nohup jupyter notebook >> jupyter.log 2>&1 &

デバッグ

ソースの途中で以下のコードを挟むと、ブレークポイントになり、デバッグができます。

from IPython.core.debugger import Pdb; Pdb().set_trace()

変数を入力して値を確認したり、ステップインなどができます。
(とはいえ、ちょっと使いにくいと思います)

image.png

詳しくは
Qiita: JupyterまたはiPython Notebookでデバッグをする方法

リモートマシン上で使う

リモートマシン上にJupyterをインストールして、以下のコマンドでconfigファイルを作成。
configファイルにポートを設定。
リモートのJupyterのポートをトネリングでつないで、ローカルのブラウザから操作できるようになります。

jupyter notebook --generate-config

詳しくは
Jupyterを導入しよう -リモート編-

Pandas関連 - display()

処理の途中でDataFrameを表示させるにはprint()ではなく、display()を使うと罫線つきでいつも通りに表示できます。

display(df)

image.png

Pandas関連 - set_option()

DataFrameの行や列が多いとデフォルトでは途中のデータが略されてしまいますが、set_optionで最大行数や列数を変更すると表示できます。

import pandas as pd
pd.set_option('display.max_rows', 500)

参考
http://songhuiming.github.io/pages/2017/04/02/jupyter-and-pandas-display/

Pandas関連 - tqdm

tqdmを使うとapplyの進捗を可視化して確認できます。もちろんfor文などでも使えます。
重い処理中、いつ終わるかそわそわしなくて済みます。

https://github.com/tqdm/tqdm

# install
pip install tqdm

image.png

参考
http://wonderwall.hatenablog.com/entry/2017/07/23/222856

追記:2017/9/27
コメントより、tqdm_notebookというのがあると教えてもらいました!
こちらの方がプログレスバーが綺麗で見やすいです。

from tqdm import tqdm_notebook as tqdm

HTML記載

マークダウンセルは、HTMLも書けます。
レポートを綺麗に書きたいときに使えます。

image.png

image.png

スライド化

RISEを使うと、Jupyterのセルをスライド化できます。分析結果をプレゼントする時に便利です。

① [View]-[Cell Toolbar]-[Slideshow]を選択
② 各セルの右上の[Slide Type]を選択
③ Slideshowボタンをクリック

https://github.com/damianavila/RISE

# install
pip install RISE
jupyter-nbextension install rise --py --sys-prefix
jupyter-nbextension enable rise --py --sys-prefix

image.png

参考
Qiita: Jupyter Notebookでプレゼンをするとっても便利な方法

おわり

他の方の記事のまとめになってしまいましたが、これからJupyter Notebookを使い始める方の参考になれたら嬉しいです。
もっと使いこなしていきたいです。