Jupyter Notebook の使い方
この記事では Jupyter Notebook の起動方法と、基本的な使い方について解説します。
Jupyter Notebook の起動
Anaconda Navigator から Launch するか、Anaconda Prompt で
>jupyter notebook
と入力するとカーネルが起動します。
しばらく待つと、Webブラウザが開いて Jupyter Notebook のダッシュボードが表示されます。先に開いたカーネルと、この Webブラウザが互いに通信することによって Jupyter Notebook が動く仕組みになっているのです。
それでは、Python3 のコードを書くノートをつくりましょう。
右上隅にある [New] をクリックして [Python 3] を選択してください(下図)。
すると新しいノートブックが開きます。ノートは .ipynb という拡張子のついたファイルとして作成されます。ipynb というのは、Jupyter Notebook がまだ IPython Notebook と呼ばれていた頃の名残です(以前は Python 専用の Notebook でしたが、現在では R など他の言語を扱うこともできるようになっています)。
ヘッダにある "Untitled" がノートの名前です(上図)。
ノートに名前をつける
このままでも特に問題ありませんが、せっかくこれから Python を始めようというときに「表題なし」ではやる気が出ませんよね。やはりここはノートに自分の好きな名前をつけておきましょう。
"Untitled" の部分をクリックすると Rename画面が表示されるので、テキストボックスに好きな名前を入力してください。ここでは "MyNoteBook" としておきます。入力を終えたら右下隅の [Rename] を押します(下図)。
すると次の図のようにノートの名前が変更されます。
以降の解説をスムーズに理解するために、メニュー、ツールバー、コードセルという名称だけ覚えてください。
Python のコードを書き込む
コードセルと呼ばれる部分に Python のコードを記述します。
print()関数を使ってメッセージを表示させてみましょう。
と書き込んでください。それからツールバーの [Run] を押すか、[Shift] + [Enter]、または [Ctrl] + [Enter] を押すとコードが実行されます([Shift] + [Enter] は下にセルが存在しない場合にはセルを1つ作成しますが、[Ctrl] + [Enter] はコードを実行するだけです)。この先何千回も実行ボタンを押すことを考えると、やはり [Shift] + [Enter] や [Ctrl] + [Enter] をおすすめします。
すると、コードセルのすぐ下に実行結果が表示されます(下図)。
その下に新しいセルが自動で追加されるので、ここにまたコードを書くことができます。
変数の値を保存する
コードセルに x = 10 と記述して実行してください。
x には 10 が代入されているので、Python ではこの記述だけで x は整数型として定義されたことになります (10.0 を入れると浮動小数点数型です)。コードが実行されたことで、変数 x の値をノート全体で共有することができます。次のコードセルで x の値を表示してみます。
x の値が保存されていることが確認できました。
モジュールのインポート
モジュールを読み込むと、色々と便利な関数を使うことができるようになります。ここでは Python の標準ライブラリから statistics という統計処理用モジュールをインポートしてみましょう。次のように記述してコードを実行すると、statistics に含まれるすべての関数を利用できるようになります。
変数と同じく、あるコードセルで読み込んだモジュールは他のセルでも使えるようになります。次のコードセルで数字の入った リスト を定義して、mean関数で要素の平均値を求めてみます。
リストの平均値 68 が表示されました。
コードの再実行
実行結果が保存された状態にあるのはノートを開いている間だけです。一度ノートを閉じたあとに同じノートを再び開くと、変数の値や読み込んだモジュールなどは全てクリアされた状態に戻っています。そこで再び変数などの値を有効にしたいときは、ツールバーにある [restart the kernel] を押します。
すると下の図のような確認画面が現れるので、[Restart and Run All Cells] と書かれた赤いボタンをクリックします。
コードセルが上から順に再実行されて、変数やモジュールが再び有効になります。
実行済のコードセルを確認します
あるコードセルが実行済であるかどうかは、コードセルの左にある "In [ ]:" の [ ] に数字が入っているかどうかで見分けることができます。数字が入っていれば実行済、入っていなければ、まだ実行されていないコードです。
コードセルの追加と削除
ツールバーの左から 2 番目のアイコン [insert cell below] を押すと、現在選択されているコードセルの下に、空白のセルを1つ追加することができます。
ツールバーの [cut selected cells](ハサミの形をしたアイコン)を押すと、現在選択されているコードセルが削除されます。
コードセルの結合と分割
Jupyter Notebook では複数のコードセルを1つにまとめたり、逆にコードセルを複数のセルに分割することができます。
In [4] と In [5] を1つのセルにまとめてみましょう。
In [4] を選択した状態で、[Edit] の [Merge Cell Below] をクリックします。
コードセルが結合されました。
In [5] を選択して、[Merge Cell Above] を押しても結合できます。
次は結合したコードセルを再び分割してみます。
import* の後ろにカーソルを置いて、[Edit] の [Split Cell] を選択します。
カーソルの位置を境目にコードセルが分割されます。
コード補完機能
Jupyter Notebook にはコード補完機能が備わっています。コードの入力中に [Tab] キーを押すと、Python で使用されるキーワードやメソッド、関数などの入力候補一覧が表示されます。たとえばコードセルに pr だけ入力して [Tab] キーを押してみると、print や property, %profile などが並びます (頭文字 % で始まる単語は Jupyter Notebook のマジックコマンドです)。
ユーザーはこの中から目的の単語を選択して入力することにより、関数名の誤入力などを防ぐことができます。モジュールをインポートすると、そのモジュールに含まれる関数も入力候補一覧に追加されます。現在は statistics をインポートしているので、mean や median などが候補に含まれているはずです。me とだけ入力して [Tab] キーを押してみましょう。
mean, median, median_grouped などはすべて statistics モジュールの関数名です。
各種ライブラリに含まれる関数名をすべて正確に覚えていられるわけもないので、このように入力候補を表示させることで、名前から機能を類推することができます。たとえば median は、その名の通り、データの中央値を返す関数です。
ノートブックの保存
Jupyter Notebook のデフォルト設定では 120 秒に 1 回、ノートの内容が自動保存されますが、左上隅にある [Save and CheckPoint] でセーブすることもできます。
このアイコンを使ってファイルを保存した場合には、ファイルの上書きと同時にチェックポイントが作成されます。Notebook 本体はオートセーブによって定期的に上書きされていきますが、ユーザーはいつでも自分で作成したチェックポイントに戻ることができます。
アイコンを押して、ここまでの内容を保存しておきましょう。
ヘッダには [Last Checkpoint x分前] と表示されます。
メニューから [File] 、[Revert to Chekpoint] を選択すると、チェックポイントの日時が表示されるので、もし戻りたいと思えばここをクリックしてください。ちなみに、色々なアプリケーションに見られるセーブアイコンは昔使われていたフロッピーディスクという記録媒体に由来します(今の若い人はフロッピー知らないだろうなあ ...... )。
オートセーブの時間間隔を変更する
マジックコマンドの %Autosave を使うと、オートセーブの間隔を自分で設定することができます。たとえば、オートセーブを 10 分 (600秒) 間隔にしたい場合は
と記述します。オートセーブ機能を OFF にする場合は
とします。
Jupyter Notebook を閉じる
Jupyter Notebook の機能の詳細な説明は別記事で解説します。今回はこのぐらいにして、Jupyter Notebook を閉じることにします。メニューの [File] から [Close and Halt] を選択するのが正しい閉じ方です。ブラウザの右上隅の [×] を押して終了するとプロセスが残ってしまうので、絶対にやらないでください。
≫ Jupyter Notebook に文章や数式を書き込みます
Python ユーザのための Jupyter 実践入門
現時点では Jupyter Notebook に関する知見を集約した本は限られていますが、ほぼ唯一の選択肢ともいえる『Python ユーザのための Jupyter 実践入門』は Jupyter Notebook の機能を隈なく解説した良書です。
本書は Anaconda を利用した Jupyter Notebook の導入方法から始まって、Jupyter Notebook の基本操作、インターフェース、キーボードショートカット、マジックコマンド、Markdown などについてユーザーが必要とする情報をきれいに整理した形で提供しています。
Jupyter Notebook と連携して、pandas, Matplotlib, Bokeh などのツールを用いてデータを可視化する方法について学ぶこともできます。
本書の後半では、Jupyter Notebook のカスタマイズ方法や、Cloud Datalab, JupyterLab など、他の書籍や Webサイトで取得しにくい情報も掲載しています。データ分析や機械学習、科学シミュレーションなどに Jupyter を活用したいと考えるユーザーにとっては必携の一冊です。
当サイトの Python サンプルコードは、WP Code Highlight.js を使って、黒い背景の上に表示させています。これは完全に私個人の好みによるものです。PyCharm で書くときも黒でやってます。やはりプログラミングに集中するときは黒でないといけません。これが私の信念なのです。
しかし、Jupyter Notebook のコードセルのデフォルト背景色は白です。多くの人は白で使っているでしょう。デフォルト設定をいじるのも面倒なので、私も白いままで使っています(←私の信念なんて、この程度の軽さだということがよくわかる)。
何はともあれ、Jupyter の記事を書くときには白い背景のコードボックスが必要です。でも、WP Code Highlight.js は複数の設定を用意できないので、自分で CSS (Cascading Style Sheets) を設定するしかありません。コードをハイライトできないのは、まあ仕方ないです。
Jupyter の記事は Python コードの書き方よりも、Jupyter のインターフェースとしての機能を解説することに重点を置いているので、ハイライトまでは必要ないかなとも思ったりしてます ...... そりゃまあ、あったほうがいいに決まってますけどね。しかし、実際に適用してみるとどうにも白っぽくてコード以外の記事と区別がつきにくく、やっぱり入力用の背景に薄い色を塗ることにしました。結果として、こんなふうになりました:
for x in range(10):
s += 1
print("s =",s)
そこそこ、いい感じでしょ。
WP Code Highlight.js のデザインには敵わないけどね。
初心者です、わかりやすい解説ありがとうございます。
一点教えてください。
色々なサイトを見ていると、Jupiter notebook のメニューで Widgets メニューがある場合とない場合があるのですが、なぜでしょうか?
ちなみに、私の場合は表示されていません。
コメントありがとうございます。
当サイトを活用していただけると私も嬉しいです。
私の Jupyter にも Widgets がないので今まで気づきませんでした。確かに色々なサイトや書籍を見ると、Widgets があったりなかったりですね。もしかすると Jupyter のバージョンで異なるのかもしれません。ぐぐって調べてみると、Widgets は ipywidgets という付属ライブラリが提供するインターフェースを操作するメニューのようです(変数をスクロールバーで動かしたりできるようです)。また何かわかったら記事でお伝えします。