Jupyter Notebookの使い方

Jupyter Notebookの使い方

Jupyter Notebookの基本操作

この記事では Jupyter Notebook の起動方法と、基本的な使い方について解説します。

Jupyter Notebook の起動

Anaconda Navigator から Launch するか、Anaconda Prompt で

>jupyter notebook

と入力するとカーネルが起動します。
 
Jupyter Notebook カーネルの起動
しばらく待つと、Webブラウザが開いて Jupyter Notebook のダッシュボードが表示されます。先に開いたカーネルと、この Webブラウザが互いに通信することによって Jupyter Notebook が動く仕組みになっているのです。

それでは、Python3 のコードを書くノートをつくりましょう。
右上隅にある [New] をクリックして [Python 3] を選択してください(下図)。
 
Jupyter Notebook 新しいノートを作成
すると新しいノートブックが開きます。ノートは .ipynb という拡張子のついたファイルとして作成されます。ipynb というのは、Jupyter Notebook がまだ IPython Notebook と呼ばれていた頃の名残です(以前は Python 専用の Notebook でしたが、現在では R など他の言語を扱うこともできるようになっています)。
 
Jupyter Notebook Untitled
ヘッダにある "Untitled" がノートの名前です(上図)。

ノートに名前をつける

このままでも特に問題ありませんが、せっかくこれから Python を始めようというときに「表題なし」ではやる気が出ませんよね。やはりここはノートに自分の好きな名前をつけておきましょう。
"Untitled" の部分をクリックすると Rename画面が表示されるので、テキストボックスに好きな名前を入力してください。ここでは "MyNoteBook" としておきます。入力を終えたら右下隅の [Rename] を押します(下図)。
 
Jupyter Notebook Rename
すると次の図のようにノートの名前が変更されます。
 
Jupyter Notebook メニュー、ツールバー、コードセル
以降の解説をスムーズに理解するために、メニュー、ツールバー、コードセルという名称だけ覚えてください。

コードセルにプログラムを書き込む

コードセルと呼ばれる部分に Python のコードを記述します。
print()関数を使ってメッセージを表示させてみましょう。

print("Pythonプログラミングを始めましょう")

と書き込んでください。それからツールバーの [Run] を押すか、[Shift] + [Enter]、または [Ctrl] + [Enter] を押すとコードが実行されます([Shift] + [Enter] は下にセルが存在しない場合にはセルを1つ作成しますが、[Ctrl] + [Enter] はコードを実行するだけです)。この先何千回も実行ボタンを押すことを考えると、やはり [Shift] + [Enter] や [Ctrl] + [Enter] をおすすめします。
 
Jupyter Notebook プログラミングコードの記入
すると、コードセルのすぐ下に実行結果が表示されます(下図)。
 
Jupyter Notebook コードの実行結果
その下に新しいセルが自動で追加されるので、ここにまたコードを書くことができます。

変数の値を保存する

コードセルに x = 10 と記述して実行してください。
 
Jupyter Notebook 変数の定義
x には 10 が代入されているので、Python ではこの記述だけで x は整数型として定義されたことになります (10.0 を入れると浮動小数点数型です)。コードが実行されたことで、変数 x の値をノート全体で共有することができます。次のコードセルで x の値を表示してみます。
 
Jupyter Notebook 変数を表示
x の値が保存されていることが確認できました。

モジュールのインポート

モジュールを読み込むと、色々と便利な関数を使うことができるようになります。ここでは Python の標準ライブラリから statistics という統計処理用モジュールをインポートしてみましょう。次のように記述してコードを実行すると、statistics に含まれるすべての関数を利用できるようになります。
 
Jupyter Notebook 統計モジュールstatisticsをインポート
変数と同じく、あるコードセルで読み込んだモジュールは他のセルでも使えるようになります。次のコードセルで数字の入った リスト を定義して、mean関数で要素の平均値を求めてみます。
 
Jupyter Notebook mean関数で平均値を計算
リストの平均値 68 が表示されました。

コードの再実行

実行結果が保存された状態にあるのはノートを開いている間だけです。一度ノートを閉じたあとに同じノートを再び開くと、変数の値や読み込んだモジュールなどは全てクリアされた状態に戻っています。そこで再び変数などの値を有効にしたいときは、ツールバーにある [restart the kernel] を押します。
 
Jupyter Notebook 再実行 restart the kernel
すると下の図のような確認画面が現れるので、[Restart and Run All Cells] と書かれた赤いボタンをクリックします。
 
Jupyter Notebook 再実行 Restart and Run All Cells
コードセルが上から順に再実行されて、変数やモジュールが再び有効になります。

実行済のコードセルを確認する

あるコードセルが実行済であるかどうかは、コードセルの左にある "In [ ]:" の [ ] に数字が入っているかどうかで見分けることができます。数字が入っていれば実行済、入っていなければ、まだ実行されていないコードです。
 
Jupyter 実行されていないコードセル

コードセルの追加と削除

ツールバーの左から 2 番目のアイコン [insert cell below] を押すと、現在選択されているコードセルの下に、空白のセルを1つ追加することができます。
 
Jupyter コードセルの追加 insert cell below
ツールバーの [cut selected cells](ハサミの形をしたアイコン)を押すと、現在選択されているコードセルが削除されます。
 
Jupyter コードセルの削除 cut selected cells

コードセルの結合と分割

Jupyter Notebook では複数のコードセルを1つにまとめたり、逆にコードセルを複数のセルに分割することができます。
 
In [4] と In [5] を1つのセルにまとめてみましょう。
In [4] を選択した状態で、[Edit] の [Merge Cell Below] をクリックします。
 
Jupyter コードセルの結合 Merge Cell Below
 
Jupyter コードセルの結合
コードセルが結合されました。
In [5] を選択して、[Merge Cell Above] を押しても結合できます。

次は結合したコードセルを再び分割してみます。
import* の後ろにカーソルを置いて、[Edit] の [Split Cell] を選択します。
 
Jupyter コードセルの分割 Split Cell
カーソルの位置を境目にコードセルが分割されます。
 
Jupyter コードセルの分割

コード補完機能

Jupyter Notebook にはコード補完機能が備わっています。コードの入力中に [Tab] キーを押すと、Python で使用されるキーワードやメソッド、関数などの入力候補一覧が表示されます。たとえばコードセルに pr だけ入力して [Tab] キーを押してみると、print や property, %profile などが並びます (頭文字 % で始まる単語は Jupyter Notebook のマジックコマンドです)。
 
Jupyter コード補完 property
ユーザーはこの中から目的の単語を選択して入力することにより、関数名の誤入力などを防ぐことができます。モジュールをインポートすると、そのモジュールに含まれる関数も入力候補一覧に追加されます。現在は statistics をインポートしているので、mean や median などが候補に含まれているはずです。me とだけ入力して [Tab] キーを押してみましょう。
 
jupyter コード補完 statistics median 中央値
mean, median, median_grouped などはすべて statistics モジュールの関数名です。
各種ライブラリに含まれる関数名をすべて正確に覚えていられるわけもないので、このように入力候補を表示させることで、名前から機能を類推することができます。たとえば median は、その名の通り、データの中央値を返す関数です。

ノートブックの保存

Jupyter Notebook のデフォルト設定では 120 秒に 1 回、ノートの内容が自動保存されますが、左上隅にある [Save and CheckPoint] でセーブすることもできます。
 
このアイコンを使ってファイルを保存した場合には、ファイルの上書きと同時にチェックポイントが作成されます。Notebook 本体はオートセーブによって定期的に上書きされていきますが、ユーザーはいつでも自分で作成したチェックポイントに戻ることができます。

アイコンを押して、ここまでの内容を保存しておきましょう。
 
Jupyter Notebook ファイルに上書き保存
ヘッダには [Last Checkpoint x分前] と表示されます。
 
Jupyter Notebook Last Checkpointの表示、Revert to Checkpoint
メニューから [File] 、[Revert to Chekpoint] を選択すると、チェックポイントの日時が表示されるので、もし戻りたいと思えばここをクリックしてください。ちなみに、色々なアプリケーションに見られるセーブアイコンは昔使われていたフロッピーディスクという記録媒体に由来します(今の若い人はフロッピー知らないだろうなあ...)。

オートセーブの時間間隔を変更する

マジックコマンドの %autosave を使うと、オートセーブの間隔を自分で設定することができます。たとえば、オートセーブを 10 分 (600秒) 間隔にしたい場合は

%autosave 600

と記述します。オートセーブ機能を OFF にする場合は

%autosave 0

とします。

Jupyter Notebook を閉じる

Jupyter Notebook の機能の詳細な説明は別記事で解説します。今回はこのぐらいにして、Jupyter Notebook を閉じることにします。メニューの [File] から [Close and Halt] を選択するのが正しい閉じ方です。ブラウザの右上隅の [×] を押して終了するとプロセスが残ってしまうので、絶対にやらないでください。
 
Jupyter Notebook を Close and Halt で終了
 
≫ Jupyter Notebook に文章や数式を書き込みます

PythonユーザのためのJupyter 実践入門

現時点では Jupyter Notebook に関する知見を集約した本は限られていますが、ほぼ唯一の選択肢ともいえる『Python ユーザのための Jupyter 実践入門』は Jupyter Notebook の機能を隈なく解説した良書です。

PythonユーザのためのJupyter[実践]入門

新品価格
¥3,630から
(2022/7/3 14:07時点)


本書は Anaconda を利用した Jupyter Notebook の導入方法から始まって、Jupyter Notebook の基本操作、インターフェース、キーボードショートカット、マジックコマンド、Markdown などについてユーザーが必要とする情報をきれいに整理した形で提供しています。

Jupyter Notebook と連携して、pandas, Matplotlib, Bokeh などのツールを用いてデータを可視化する方法について学ぶこともできます。本書の後半では、Jupyter Notebook のカスタマイズ方法や、Cloud Datalab, JupyterLab など、他の書籍や Webサイトで取得しにくい情報も掲載しています。データ分析や機械学習、科学シミュレーションなどに Jupyter を活用したいと考えるユーザーにとっては必携の一冊です。

【プログラミング日記】Jupyter 専用のコードボックス

当サイトの Python サンプルコードは、WP Code Highlight.js を使って、黒い背景の上に表示させています。これは完全に私個人の好みによるものです。PyCharm で書くときも黒でやってます。やはりプログラミングに集中するときは黒でないといけません。これが私の信念なのです。

しかし、Jupyter Notebook のコードセルのデフォルト背景色は白です。多くの人は白で使っているでしょう。デフォルト設定をいじるのも面倒なので、私も白いままで使っています(←私の信念なんて、この程度の軽さだということがよくわかる)。

何はともあれ、Jupyter の記事を書くときには白い背景のコードボックスが必要です。でも、WP Code Highlight.js は複数の設定を用意できないので、自分で CSS (Cascading Style Sheets) を設定するしかありません。コードをハイライトできないのは、まあ仕方ないです。

Jupyter の記事は Python コードの書き方よりも、Jupyter のインターフェースとしての機能を解説することに重点を置いているので、ハイライトまでは必要ないかなとも思ったりしてます ...... そりゃまあ、あったほうがいいに決まってますけどね。しかし、実際に適用してみるとどうにも白っぽくてコード以外の記事と区別がつきにくく、やっぱり入力用の背景に薄い色を塗ることにしました。結果として、こんなふうになりました:

s = 0

for x in range(10):
s += 1

print("s =",s)

s = 10

そこそこ、いい感じでしょ。
WP Code Highlight.js のデザインには敵わないけどね。