【データサイエンス向け】Jupyterチートシート(随時更新)【Jupyter Notebook/Lab】
自分は普段データ分析やモデル構築を主にJupyter上で行なっています。
その中で何回調べんねん、ってやつをメモっておきます。(随時更新)
開発編
修正した.pyモジュールをリロードしたい
既にimportしたモジュールはキャッシュされるのか、普通にimportしなおしても更新されません。
以下でリロード(再import)できます。
import importlib
importlib.reload(hoge)
# hoge はimport済みのモジュール
これ割と最近まで知らなくて、毎回再起動してたのでマジで目からウロコです。
他にも%autoreload
でモジュールを自動更新する方法があります。
JupyterLabのタブ名を変えたい
いくつもサーバーを起動している場合、どのタブがどのサーバのノートブックかわからなくなることがよくあります。
以下のようにタブ名を変更することができます。
以下を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
プログレスバーを表示したい
一旦これでいけるかと
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)
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
Author And Source
この問題について(【データサイエンス向け】Jupyterチートシート(随時更新)【Jupyter Notebook/Lab】), 我々は、より多くの情報をここで見つけました https://qiita.com/syunyo/items/0f5dd484fc5438a3bafc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .