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

【データサイエンス向け】Jupyterチートシート(随時更新)【Jupyter Notebook/Lab】

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

開発編

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

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

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

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

描画編

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】

tqdmを表示したい

一旦これでいけるかと

from tqdm._tqdm_notebook import tqdm_notebook
import numpy as np

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

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

pandas編

applyでtqdmを表示したい

# pandasのapplyへ適用
import pandas as pd
from tqdm._tqdm_notebook import tqdm_notebook

# set description
tqdm_notebook.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

参考

Why do not you register as a user and use Qiita more conveniently?
  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
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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