Python
Jupyter

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というのがあると教えてもらいました!

こちらの方がプログレスバーが綺麗で見やすいです。



# pandasのapplyで使うとき
from tqdm._tqdm_notebook import tqdm_notebook
tqdm_notebook.pandas(desc="hoge progress: ")

df.progress_apply(lambda x: x*3+1, axis=1)


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でプレゼンをするとっても便利な方法


.pyファイル変換

「test.ipynb」(ノート)を「test.py」(Pythonファイル)に変換したい場合は、以下のコマンドをたたきます。

# In [21]:といったノートの記載がコメントアウトになったPythonファイルが出力されます。

jupyter nbconvert --to python test.ipynb


おわり

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

もっと使いこなしていきたいです。