Jupyter Notebookとは
オープンソースのWebアプリケーション
Pythonの環境構築等の必要がなく、対話的にプログラムの実行ができる(コンソール的な)
またNotebookというだけあって、実行したコードとその結果をドキュメントとして保存できる
どんなだ
- 入力部分(=
セル
っていう)にコードを書いてRun
もしくはShift + Enter
で実行でき、結果が次の行に表示される - 最後の行が結果として出力される(代入文のみだと結果は出力されない)
-
print
関数を使えば、コード中どこでも出力が可能
やってみる
モジュールを使う
import random
random.seed(1)
random.choice(['A', 'B', 'C'])
- 通常のPythonプログラミングと同じく、
import
することでモジュールの使用が可能 - 1行ごとに別々のセルで実行していくこともできる
関数を使う
- 関数の場合もモジュールとほぼ同じなのでサクッと
def add(a, b):
return a + b
result = add(1, 2)
result
マークダウンも書ける
- 対象のセルを選択した状態でセルタイプを
Markdown
にするとマークダウンが記述できる- ドキュメント(note)として残す際には便利そうだなぁ
グラフの表示
matplotlib.pyplot
モジュールによってグラフの描画などの機能が使える
%matplotlib inline
import matplotlib.pyplot as plt # 長いから as で命名
plt.title('Sample Graph')
plt.plot([1,3,2,4])
これをjupyter notebook上で実行すると
んぉ〜すごい
-
%matplotlib inline
は何?- この呪文を初めに書くことで、Notebook内にグラフを描画できる
- この
%
で始まるようなやつをマジックコマンド
という - 書かない場合は
plt.show()
を呼ばないといけない(1つのセルで複数のグラフを描画する場合は必要やね!) - 要するに
print
と同じ感じってことか
マジックコマンド
上述した通り、%
で始まる記述はマジックコマンド
と言う便利なもの
%
が1つの場合・・・ラインマジックコマンド (1行にのみ適応)
%
が2つの場合・・・セルマジックコマンド (そのセル全体に適応) 例: %time
、%%time
いくつか見てみる
%matplotlib inline
- グラフをNotebook内に描画できる(show()の実行を省略できる)
- inline以外にもある 公式参考:matplotlib
%quickref
- 簡易ヘルプを下部に表示する Esc、X で消せる
%whos
- 変数の一覧を表示
%time
/ %timeit
-
コードの実行時間を計測、表示
コマンド 対象 実行回数 %time 1行 1回 %%time セル 1回 %timeit 1行 複数回(オプションで指定) %%timeit セル 複数回(オプションで指定) -
%timeit
は-n
で実行回数、-r
で個数を指定できる
わかりにくいので例
%%timeit -n10 -r3
a = 10
b = a + 1
131 ns ± 39.3 ns per loop (mean ± std. dev. of 3 runs, 10 loops each)
つまり -n10
:10回繰り返し を -r3
:3回やった時間 を計測する(計測は平均と標準偏差)
ちなみに、%timeit
は複数の計測だけ行うだけで変数の定義等は書いてもされない
%store
- Jupyter上のDBへの保存、参照を行う
マジックコマンド | 説明 |
---|---|
%store 変数 | 変数をDBに保存 |
%store -d 変数 | 変数をDBから削除 |
%store | 変数の一覧表示 |
%store -r | 保存されている全ての変数の読込 |
%store -z | 保存されている全ての変数の削除 |
JupyterのDBのデータは ~/.ipython/profile_default/db/autorestore
にファイルとして保存されている
ファイルの中身はpythonが持つpickle
という形式で高速に読み書きできるそう(そんな飲み物あったよなぁ。。)
なんか結構重要そうなのでメモがてら画面をつけておこう
保存できた!
消せた!
!
コマンドでOSのシステムコマンドが実行できるんやってさ!簡単〜
pickleで保存
pickleを使う場合はバイナリーを使わないといけないらしいので wb
でバイナリーを指定してる
pickleで書き込む時はpickle.dump
、読み込みはpickle.load
を使う
感想
JupyterNotebookすごい!色々できすぎできすぎ君や。
機能が多すぎるからできることだけ覚えておいて、都度カンニングでいいかな〜それぞれ使われる頻度もわからんし。
グラフのモジュールとかは見ておいたほうがいいのかな!
この先PandasとかNumPyとかも楽しみ