Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

概要

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を導入しよう -リモート編-

jupyter_notebook_config.py
c.NotebookApp.open_browser = False
c.NotebookApp.ip = '0.0.0.0'

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を使い始める方の参考になれたら嬉しいです。
もっと使いこなしていきたいです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away