• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

jupyter

date: 2021-01-30 excerpt: jupyter notebookの設定やチートシート

tag: jupyterkagglepython


jupyter notebookの設定やチートシート

インストールと起動

  • /jupyter-install/

最初に設定しておくと便利な項目

  • /jupyter-initialize/

magic commands

  • /jupyter-magic-commands/

停止ボタンで送出される例外をハンドルする

ターミナルでの動作とは異なり停止ボタンでは例外が送出されるようになる
例外でループを抜けるようにするには以下のようなコードで行う

for ut in tqdm(glob.glob("dir/*.csv")):
    try:
        x = pd.read_csv(ut, sep=",")
    except KeyboardInterrupt:
        break
    except:
        continue

セルのメタデータ

セルの編集を無効化する

  1. セル -> セルツールバー -> メタデータを編集
  2. 編集を無効化したいセルのメターデータを開く
  3. 以下の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 + 右クリックでコピーできる


jupyterkagglepython Share Tweet