LoginSignup
132
142

【データサイエンス向け】Jupyterチートシート【Jupyter Notebook/Lab】

Last updated at Posted at 2019-11-28

自分は普段データ分析やモデル構築を主にJupyter上で行なっています。
その中で何回調べんねん、ってやつをメモっておきます。

開発編

修正した.pyモジュールをリロードしたい

既にimportしたモジュールはキャッシュされるのか、普通にimportしなおしても更新されません。
以下でリロード(再import)できます。

import importlib
importlib.reload(hoge)
# hoge はimport済みのモジュール

これ割と最近まで知らなくて、毎回再起動してたのでマジで目からウロコです。
他にも%autoreloadでモジュールを自動更新する方法があります。

JupyterLabのタブ名を変えたい

いくつもサーバーを起動している場合、どのタブがどのサーバのノートブックかわからなくなることがよくあります。
以下のようにタブ名を変更することができます。
image.png

以下をJupyter内で実行

%%javascript
document.title='Jupyter-GPU'

あるいはビルド時に指定することができます。

jupyter lab build --name='Jupyter-GPU'

参考: https://github.com/jupyterlab/jupyterlab/issues/4422#issuecomment-395962448

描画編

matplotlibで日本語を描画したい

fontにこだわりがなければ、japanize-matplotlib が一番手取り早いと思います。

 pip install japanize-matplotlib
import matplotlib.pyplot as plt
import japanize_matplotlib

plt.plot([1, 2, 3, 4])
plt.xlabel('日本語を簡単に使える喜び')
plt.show()

Log編

pdbでデバッグしたい

デバッガの起動には2つのタイミングがあります。

ブレークポイント指定してデバッガ起動
以下コードを差し込む

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

バグ発生時にデバッガ起動

# デバッグ後に実行
%%debug

ノートブック全体に対して適用

# ノートブックのどこかに挟む
%pdb on
# バグ検知モードを切りたい時はこれ
%pdb off 

【JupyterNotebook/Lab】Jupyter上でデバッグする3つの方法【Pdb】

プログレスバーを表示したい

一旦これでいけるかと

from tqdm.auto import tqdm
import numpy as np

# tqdm で囲う
for i in tqdm(np.arange(1, 100000, 1)):
    # ここに処理
    pass

※ JupyterLabではプラグインをインストールしておかないと上手く表示されない場合があります。参考

pandas編

pandasのapplyでプログレスバーを表示したい

import pandas as pd
import numpy as np
from tqdm.auto import tqdm

# set description
tqdm.pandas(desc="これをやります")

# apply
df = pd.DataFrame({'hoge': np.arange(1, 100000, 1)})
df['hoge'] = df['hoge'].progress_apply(lambda x:  x + 1)

※ JupyterLabではプラグインをインストールしておかないと上手く表示されない場合があります。参考

DataFrameの表示が省略されるのを防ぎたい

表示件数や、一つのセルの中で表示できる文字数の上限を増やします。

import pandas as pd
pd.set_option("display.max_colwidth", 500) # 1セルに500文字入る
pd.set_option("display.max_rows", 100) # 100行表示できる

※ JupyterLabでset_optionが効かない場合、df[:100]のようにmax_rows以下のレコードを表示するようにすると上手く動作します(個人的な経験より)

ある特定のセルのみ省略を防ぎたい場合は以下のよう(@chik_taksさんより教えていただきました!)

with pd.option_context('display.max_colwidth', 200):
    display(df)

DataFrameをMarkdownの表形式で出力したい

DataFrameをマークダウンで出力してコピペできます。地味に使います

pip install pytablewriter
import pytablewriter
writer = pytablewriter.MarkdownTableWriter()
writer.from_dataframe(df)
writer.write_table()
# | col1 |  col2  |
# |------|--------|
# |hoge1 |line1   |
# |hoge2 |line2   |

ショートカット系

コマンドパレットへのショートカット

  • Jupyter:Cmd + Option + P
  • JupyterLab:Ctrl/Cmd + Shift + C

参考

132
142
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
132
142