JupyterでPythonプログラミング
JupyterでのPythonプログラミングを<岡本安晴「いまさら聞けないPythonでデータ分析」丸善出版>のサンプルスクリプトで行ってみる。Jupyterのインストールは別のウェブサイトで説明している。Jupyter Notebookで開発されたプログラムのコピーなどの説明のウェブサイトも用意した。
スクリプトが単一のファイルである場合、複数のファイルに別れている場合―その1、その2(Stanスクリプトファイル)に分けて説明する。
まず、Jupyterを起動するときのディレクトリ(フォルダ)内に、これから作成プログラム用のフォルダを作る(図A.1)。
図A.1
図A.1において、フォルダR:\v_envは、Jupyterを起動するときの仮想環境用フォルダであり、そこに新しくフォルダを作成すると、そのフォルダはJupyterを起動したとき表示されるフォルダのリストに表示される。図A.1にあるフォルダmy_jは仮想環境を設定するときに作成された仮想環境用のフォルダである。
上のフォルダの新規作成後に、Jupyterを起動すると、図A.2のように、作成したフォルダSampleSingleが表示されているのがわかる。
図A.2
フォルダ名「SampleSingle」をクリックすると、図A.3の画面になる。
図A.3
図A.3の画面の右側には、「New」(図A.4)のボタンがある。
図A.4
ボタン「New」をクリックして表示されるメニュ項目から「Python 3」を選ぶと、図A.5の画面になる。
図A.5
メニュ「File|Rename…」をクリックすると図A.6のボックスが表示される。名前は付けなくてもよいが、付けておいた方が後で分かりやすい。
図A.6
名前を設定するが、ファイル拡張子は付けない。ファイル拡張子は、自動的に「.ipynb」が付けられる。設定後、「Rename」ボタンをクリックすると、図A.7の画面に戻る。
図A.7
上のnotebookのセル内にスクリプトを書くが、描画ライブラリmatplotlibを使用するときは、先頭に「%matplotlib inline」の1行を置いておく。先頭でなくてもよいが、先頭に置くことにしておくと分かりやすい。Jupyterでmatplotlibを利用するときは、この1文「%matplotlib inline」がないと描画画像が表示されない。
上掲書(岡本、2019)のリスト2.1.1のスクリプト例を、先頭に「%matplotlib inline」を付けて入力してみる(図A.8)。
図A.8
実行ボタンをクリックすると、グラフが描画されて表示される(図A.9)。
図A.9
プログラムの実行が確認出来たら、保存ボタンをクリックして、「Logout」ボタンをクリックすればよい(図A.10)。
図A.10
Logoutすると、図A.11の画面になる。Jupyter NotebookのタブのX印をクリックすると閉じられる。
図A.11
Logoutと当該のページのタグのX印のクリックを繰り返せば、Jupyterのブラウザー画面の終了となり、端末で「Control+C」を2回押してしばらく待てば、Jupyterの終了となる
スクリプトが複数のファイルに分かれている場合は、メインスクリプトのファイルをJupyter Notebookのセルに入れ、他のファイルはそのままPythonモジュールファイルとして用意すればよい。複数のファイルからなるプログラム例として、前掲書のリスト3.1.2(メインスクリプト)とリスト3.1.4(モジュールファイルsplitstring.py)の組み合わせを取り上げる。
まず、プログラムを作成するフォルダを、jupyterを自動するときのディレクトリに新規作成する(図B.1)。
図B.1
図B.1は、ディレクトリv_envでjupyterを起動する場合で、ディレクトリ(フォルダ)my_jは仮想環境用に作成されたものである。
図B.1の準備の下でJupyterを起動すると、図B.2のようになる。
図B.2
新規作成しておいたディレクトリSampleMultiが表示されている。このディレクトリ名SampleMultiをクリックすると、図B.3の画面になる。
図B.3
「New」ボタンをクリックして表示されるメニュ項目から「Text File」を選んでクリックする。図B.4の画面が表示される。
図B.4
テキストファイルに名前を付けるために、メニュ「File|Rename」をクリックする。図B.5のRename Fileボックスが表示される。
図B.5
前掲書のリスト3.1.4のファイル名に合わせて、「splitstring.py」と設定する。Pythonのモジュールファイルなので、拡張子「.py」を付けておく。「OK」ボタンをクリックすると、テキストファイルは設定した名前になる(図B.6)。
図B.6
図B.6のテキストファイルの入力セル内に、前掲書のリスト3.1.4のスクリプトを書き込む(図B.7)。
図B.7
すべてのスクリプトを書き込んだら、メニュ「File|Save」を選んで保存する。保存後、上の「SampleMulti/」タブをクリックする。ページ「SampleMulti/」が表示される(図B.8)。
図B.8
ボタン「New」をクリックして表示されるメニュから「Python 3」を選ぶ。
Python 3のスクリプト(コード)を入力するセルが表示される(図B.9)。
図B.9
まず、名前を付けておく。付けなくてもよいが、付けておいた方が分かりやすい。メニュ「File|Rename」を選ぶ。名前設定のボックスが表示される(図B.10)。
図B.10
設定する名前は、ファイル拡張子を付けない。Notebookのファイルの名前なので、拡張子「.ipynb」が自動的に付けられる。
図B.11
メインスクリプトであるリスト3.1.2のスクリプトをすべて書き込んだら実行である。実行は「Run」のクリックでもできるが、ファイルの作成手順の関係で、ファイルの変更点がすべてJupyterに反映されていなくてエラーになることがある。これを避けるためにはメニュ「Kernel|Restart & Run All」で実行する(図B.12)。
図B.12
エラーが出てファイルを書き直したときも、書き直したファイルの保存後、メニュ「Kernel|Restart & Run All」で実行する。
エラーなく実行されれば、図B.13の出力を得る。これは、前掲書リスト3.1.3と同じである。
図B.13
実効が終わって、終了するときは、「保存」ボタンで保存して(保存しなくてもよいが)、「Logout」ボタンをクリックする(図B.14)
図B.14
図B.15の画面になるので、ページ上のタグのX印をクリックして閉じる。
図B.15
このLogoutとページを閉じる作業を繰り返すと、Jupyterのブラウザーが閉じられる。Jupyterを起動した端末で「Control-C」を2回押してしばらく待つとJupyterの終了となる。
Stanスクリプトファイルを含む場合
複数のファイルにStanスクリプトファイルが含まれていることを除いて上の複数のファイルと同じである。上掲書のリスト10.1とリスト10.2を例として説明する。
まず、プログラムを作成するフォルダを新規作成する。図C.1では、Jupyterを起動するフォルダ内に新規フォルダ「SampleStan」を作成している。
図C.1
Jupyterを起動すると、図C.2のように新規作成したフォルダが表示されている。
図C.2
フォルダ名「SampleStan」をクリックすると、図C.3の画面になる。
図C.3
ボタン「New」をクリックして表示されるメニュから「Text File」を選ぶと、図C.4の画面になる。
図C.4
メニュ「File|Rename」を選ぶと、図C.5のボックスが表示される。
図C.5
上掲書のリスト10.1のファイル名に合わせて「Bin.stan」と設定して、リスト10.1のスクリプトを書き込む(図C.6)。
図C.6
書き込み後、メニュ「File|Save」で保存し、この上のページのタブ「SampleStan/」をクリックする(図C.7)
図C.7
図C.8の画面になる。
図C.8
ボタン「New」をクリックして表示されるメニュから「Python 3」を選ぶ。
Pythonスクリプト入力用のセルが用意されるので、メニュ「File|Rename」を選んで名前を付けておく(図C.9)。
図C.9
名前を設定するボックスが表示されるので、例えば「SampleStan」と付けておく(図C.10)。Notebookの名前なので、ファイル拡張子は「.ipynb」が自動的に付けられる。
図C.10
名前の設定後、上掲書のリスト10.2のスクリプトを書き込む(図C.11)。
図C.11
ライブラリmatplotlibによる描画を有効にするため、1行目に「%matplotlib inline」が追加されている。また、JupyterのPythonでは、PyStanのサンプリングメソッドsamplingにパラメータparsを設定しておかないとエラーになるので、「pars = [‘theta’]」を追加している。
スクリプトの書き込みが終わったら、実行してみる。「Run」ボタンのクリックでも実行できるが、ファイル変操作がJupyterに十分反映されていない場合は、スクリプト通りの結果にならない。ファイルの編集結果が反映されるように実行するときは、メニュ「Kernel|Restart & Run All」を選ぶ(図C.12)。
図C.12
エラーが無ければ、図C.13の結果を得る。
図C.13
Stanによるサンプリングの実行中に、Jupyterを呼び出した端末画面を表示すると、図C.14のようにサンプリングの経過が出力されている。
図C.14
プログラムの実行後、終了するときは、「保存」ボタンで保存してから「Logout」ボタンをクリックすればよい。
図C.15
Logoutすると図C.16の画面になる。
図C.16
上部のタブのX印をクリックして閉じると、次のページが表示されるが、LogoutボタンによるLogoutとタグのXのクリックによるページを閉じるを繰り返すと、Jupyterのブラウザーは閉じられる。ブラウザーが閉じられた後、Jupyterを呼び出した端末画面で「Control+C」を2回押してしばらく待てば、Jupyterは終了する。