jupyter notebookのインストールの方法と使い方 〜 ノート形式で逐次実行できるpythonエディタ

jupyter notebookとは

ノート形式のpython

グラフもその場で描画可能(Adobeの株価推移)

f:id:what_a_day:20161101192318p:plain
また、作成したグラフは.png形式になっているため、ドラッグ&ドロップでwordやメール、論文などに添付可能です。論文に添付する場合は、おそらく.epsに変換すると思いますが。

様々な種類のグラフを美しく描画可能

f:id:what_a_day:20161101233306p:plain
CSV形式から読み込んだデータで相関図を作成したり、温度分布のようなグラフを作ることさえ可能。このグラフはSeabornというライブラリを使用しています。

マークダウン形式に対応

f:id:what_a_day:20161101234336p:plain
このようにマークダウン形式でかけるので、慣れると普通のノートを取るよりも断然ラク。また、グラフが綺麗にかけてなおかつ作ったらすぐにレポートに貼り付けれるという点が魅力的。

jupyter notebookの始め方

ターミナル上にて実行
  1. brew install python3 // Python3をインストール
  2. python3 –version // Python3の確認
  3. pip3 install –upgrade pip
  4. pip3 install jupyter
  5. jupyter notebookと打ち込む
以下、詳細

ターミナルで以下のコマンドを打ちます。

python3 --version

これでPython 3.*.**などが返ってくれば問題無いです。(*はなんでもいいので数字)
返ってこない場合、Python3を入れましょう。

brew install python3 // Pythonが入っていない場合
pip3 install --upgrade pip
pip3 install jupyter

円形の個数を自動で全て数えてくれるプログラム(おまけ)

楽に正確に物体の個数を調べたい

jupyter上でやった理由は、テスト用の画像を与えた時に本当に正しく個数をカウントできているのかが視覚的に見やすいかなというのが主な点です。
また、個数を数えたのちグラフにしたりメモを取ったりするのもjupyter上で行えばレポート時にも記録用にも管理がしやすいからです。

行ったこと

この画像でテストをすることにしました。
f:id:what_a_day:20161102003321p:plain

画像の2値化

白を物体、またはノイズの色とし、黒をそれ以外の色とすると画像処理がしやすくなります。一定以下の大きさの白の要素はノイズ、それ以上は物体という様に分ける基準にもなります。

画像のオープニング・クロージング

ノイズを消し、本来は測定できる物体をより明確にして測定しやすくします。
今回は幸いにも綺麗な画像を使ったので大丈夫ですが、ノイズ除去には大切になってきます。
2値化され、オープニングされた後の画像
f:id:what_a_day:20161102003331p:plain

コード

とても汚くわかりづらいですが、直す気力がもう無いです。

import os
import cv2
import numpy as np
import os
from matplotlib import pyplot as plt
kernel = np.ones((5,5),np.uint8)
dir_save =None
cnt_emission_number = 0
dir = SAVE_DIRECTORY
dir_save = dir
if os.path.isdir(dir):
file_path = FILE_PATH
if not(os.path.isfile(file_path)):
break
img = cv2.imread(file_path,0)
img = cv2.erode(img,kernel,iterations = 1)
img = cv2.erode(img,kernel,iterations = 1)
img = cv2.dilate(img,kernel,iterations = 1)
img = cv2.dilate(img,kernel,iterations = 1)
ret,thresh1 = cv2.threshold(img,5,255,cv2.THRESH_BINARY)
image = thresh1
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27:         # wait for ESC key to exit
cv2.destroyAllWindows()
elif k == ord('s'): # wait for 's' key to save and exit
cv2.imwrite('messigray.png',img) // select img you want to show
cv2.destroyAllWindows()
img_copy = np.copy(thresh1)
contours = cv2.findContours(img_copy, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[1]
min_coin_area = 1
large_contours = [cnt for cnt in contours if cv2.contourArea(cnt) > min_coin_area]
cnt_emission_number += len(large_contours)
if os.path.isdir(dir):
print(dir_save + "  " + str(cnt_emission_number))

出力結果は9となったため、おそらくうまく動いていると思います。

こういう分析もやってみました。
Jupyter notebookでは分析とグラフ化が同時にできるので共有も簡単ですし、かなり便利です。

Python Jupyter notebookでpandasを使いCSVを読み込みグラフを描画してpdfなどで保存する方法

Python Jupyter notebookでアメリカ大統領選挙をデータマイニングし、可視化する