jupyter notebookの設定やチートシート
インストールと起動
最初に設定しておくと便利な項目
magic commands
停止ボタンで送出される例外をハンドルする
ターミナルでの動作とは異なり停止ボタンでは例外が送出されるようになる
例外でループを抜けるようにするには以下のようなコードで行う
for ut in tqdm(glob.glob("dir/*.csv")):
try:
x = pd.read_csv(ut, sep=",")
except KeyboardInterrupt:
break
except:
continue
セルのメタデータ
セルの編集を無効化する
セル
->セルツールバー
->メタデータを編集
- 編集を無効化したいセルのメターデータを開く
- 以下のjsonにする
{
"trusted": false,
"editable": false,
"deletable": false
}
ショートカット
- viのようにモードが有る
- esc: command mode
- enter: edit mode
- コマンドモードでマークダウン、コードに変更する
m
- マークダウンへ変更
y
- コードへ変更
- エニーモードで、セルの実行をする
ctrl+enter
- セルを実行
shift+enter
- セルを実行して下のセルへ移動
alt+enter
- セルを実行して下へからのセルを追加
- コマンドモードでセルを追加
a
- 上へ追加
b
- 下へ追加
ユースケース別スニペット
一つのcellに複数のdataframeを表示する
from IPython.display import display
display(df1)
display(df2)
- display関数に表示したいdataframeをラップする
データフレームのインデックスを表示しない
from IPython.display import display
display(df.style.hide_index())
- マークダウンにコピペする際、スクリーンショットを撮る際に便利
notebookにHTMLを描画する
from IPython.display import HTML
display(HTML("<h2>これはtable fooの内容です<h2>"))
display(df.head(100))
dataframeをHTMLに変換してから表示する
display(HTML(df.to_html()))
ダウンロードリンク(FileLink)を標示する
from IPython.display import FileLink, FileLinks
FileLink("foo.csv") # foo.csvファイルをダウンロードできるリンク
FileLinks(".") # ローカルファイル全部
- 実行するとブラウザから対象のファイルをダウンロードできるリンクが生成される
データフレームの表示にタイトル(キャプション)をセットする
df = df.style.set_caption("hello")
display(df)
display.max_columns
を設定する
pd.set_option("display.max_columns", 999)
- jupyterで表示するpandasの最大データフレームサイズ
グローバルの設定を書き換えないで一時的にpd.set_option
を変更する
from IPython.display import display
with pd.option_context( "display.max_colwidth", None,
"display.max_rows", None,
"display.max_columns", None):
display(df)
pandasのデータフレームの大きな値を指数表示させない
import pandas as pd
pd.options.display.float_format = '{:.2f}'.format
tqdm
を使用する際
from tqdm.auto import tqdm
正常に動作しない時,
from tqdm import tqdm
warnings
を無視する
import warnings
warnings.filterwarnings("ignore")
versionの確認
import platform
print(platform.python_version())
画像をグリッド状に表示する
import cv2
import matplotlib.pylab as plt
def display_multiple_img(images_paths: List[Path], rows: int, cols: int):
figure, ax = plt.subplots(nrows=rows, ncols=cols, figsize=(16,8) )
for idx, image_path in enumerate(images_paths):
image = cv2.imread(str(image_path))
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
try:
ax.ravel()[ind].imshow(image)
ax.ravel()[ind].set_axis_off()
except Exception as exc:
print(exc)
continue;
plt.tight_layout()
plt.show()
トラブルシューティング
jupyterの補完を利用しようとするとエラーが出る
- 原因
jedi
とjupyter
が不整合を起こしている
- 解決
jedi
とjupyter
の双方を最新にupgrade
jupyterが意図したpythonから起動されていない
- 原因
PATH
の優先順位の関係で別のjupyter
を参照している可能性$HOME/.local/bin/jupyter
などが存在しているとsystemのpythonで起動している可能性がある
- 解決
PATH
の整理、重複の整理
出力した画像をコピーできない
- 原因
- jupyterの右クリックメニューからコピーできない
- 解決
Shift + 右クリック
でコピーできる