スプーキーズのちょっとTech。

SPOOKIES社内のより技工的な、専門的なブログページです。

Jupyter notebookの布教

実験のグラフ書いたりするツールとしてJupyterがとっても便利だよ、コードが書けるならExcelなんて使うのやめようよ、という話をします。

あんまり業務には関係ないです。 Jupyter notebookを布教するためのステマ記事です。

Excelでグラフを描くのはつらい

Excelは、汎用性が高くて、とりあえず誰でも使える便利なツールであるが為に、多くの大学生はグラフを書くのにExcelを使っているようです。 しかし、Excelは科学技術分野で使うためのアプリケーションではないので、Excelのグラフ描画機能は微妙だと思います。

データを単に線形グラフに起こせばいい、とかだとまだマシなんですが、「一つの実験データに対して、線形グラフと片対数グラフを書く。あ、実験データ増えたから二つのグラフの範囲を変更して…」とかなると、だんだんつらい感じがしてきます。 対数グラフを書くのとか、控えめに言って大変すぎでは、と思ってしまいます。

また、学部生の実験だとあんまり無いですが、測定機器から吐き出される大量のtsvファイルから、似たようなグラフをめっちゃたくさん書く、ということもあります。この作業は単純作業であり、同じ処理をするだけなので自動化できますが、これをExcelでやるのは大変です。VBAで書くの…?

そこでJupyter notebookの出番、というわけです。

Jupyter notebookとは

この記事を読めば、Jupyter notebookのなんたるか、どう使うのか、というのはだいたい分かると思いますが、結局のところ、「インライン画像表示機能を備えた、超強力なREPL」ということになります。

次のリンクと画像は、私が実験中に書いたグラフ(とそのコード)になります:こんな感じ

f:id:sancha-san:20160523185928p:plain

見た感じでだいたい分かると思いますが、灰色の枠の中にコードを書いて実行すると、次の行から、出力が表示されていきます。

もちろん、コードを修正して、もう一度実行することもできます。

Jupyter notebookの便利なところは、標準出力だけではなく、グラフも同じ画面に出力できる、ということです。 これによって、グラフを描画→データを追加/修正→グラフを再描画の流れが容易になります。Excelとは比べ物にならないぐらい快適です。

また、Pythonで書けるので、繰り返しや分岐や関数などを駆使して、大量のデータを少ない行数で処理したり、mapやreduceを使って、カッコよくデータを加工したりできます。

外部のtsvファイルを読み込んで処理する、といった処理も簡単です。 また、PythonにはNumpyやSciPyといった科学技術計算用の優れたライブラリがあるので、重い計算でも比較的高速に行うことができます。

さらに、このJupyterのファイルは、githubやgistにupするだけで、公開することができます。 実際に、上記のリンクは、私のPCに保存していた.ipynbファイルをgistにアップロードしたものです(https://gist.github.com/chart-linux/51c64775d07658a4f63a2722eb82d630)。班員と実験結果を共有したりするのに便利です。

また、Excelしか読み書きできない班員がいたとしても、Pythonのライブラリpandasを使っていれば、to_excelメソッドを用いることで、実験データをExcelに出力することもできます。もう班員に合わせて無理にExcelを使う必要もないわけです。

まとめ

Excelでグラフを描くのはやめよう。Jupyter notebookを使おう。