[Cloud103]#3 Jupyter Notebook再び
AGENDA
0.はじめに
1.Pythonの思い出し
2.Jupyter Notebookとは?
3.try.jupyter.orgを使ってみよう
4.便利な使い方
5.Try環境ではできないけど・・・
0.はじめに
この社内勉強会シリーズでは昨年も何回かPython/Jupyter Notebookを取り上げました。
[Cloud102]#1 Pythonを始めよう(第1部 Pythonはじめの一歩)
ただ、いくら外部環境構築が簡単・無料とは言え Azure ML StudioやGCPを使ったので、本来のPython/Jupyter Notebookの説明にはあまり時間が使えませんでした。
今回は、まったく準備なしで使える環境を使って、Python/Jupyter Notebookの使い方を復習したいと思います。
1.Pythonの思い出し
これです。
https://www.python.org/
いろいろ良い資料がネット上にたくさんあるので、ググって見てください
(1)まずはサンプルコード
MacなどPythonが使える環境をお持ちのかたは以下をコピペ&実行してみましょう!
sample.py
import datetime, time
def main():
for count in range(0, 10):
print_current_time()
time.sleep(1)
def print_current_time():
print (datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S'))
if __name__ == '__main__':
main()
「{}がない!」「文末に;がない!」など他言語を使ったことがある方は気持ち悪いかかもしれませんが、インデントを文法の一部に取り入れてわかりやすい表記を強制しているのがPythonの特徴です。
(2)The Zen of Python
Pythonの精神を表しているものに "The Zen of Python" というのがあります。
MacなどPythonが使える環境をお持ちのかたはREPL(対話実行環境:引数なしのpythonで起動)で以下を入れてみましょう!
import this
実行例
日本語約はこちらにあります
プログラマが持つべき心構え (The Zen of Python)
Beautiful is better than ugly.
醜いより美しいほうがいい。
Explicit is better than implicit.
暗示するより明示するほうがいい。
Simple is better than complex.
複雑であるよりは平易であるほうがいい。
(3)他言語との比較
言語の好き嫌いは(エディタもそうですが)しばしば宗教論争みたくなって来るので、それをジョークにしたこんな文章があります。僕は結構ウケました
ちゃんとした内容だとこれがわかりやすいです(Rubyに厳しいけど)。
Pythonを積極的に使っている代表的な企業はGoogleです。
誰が書いても同じ処理がだいたい同じ感じのプログラムになってしまうのと、
「こういうことできないかなー」と思うと誰かが既にモジュールを書いたりしているので
いろいろプログラミングしなくていいのでラクです。
無宗教の僕としては、この「ラク」ってのが一番です。
現実問題としては、Deep Learning用のフレームワークは TensorFlow, Chainerなど、ほぼPythonで提供されていますので他の選択肢がない感じです。
2.Jupyter Notebookとは?
これです。
http://jupyter.org/
日本語の参考サイトもいくつか
Jupyter Notebook (読み方は「ジュパイター・ノートブック」または「ジュピター・ノートブック」) とは、
ノートブックと呼ばれる形式で作成したプログラムを実行し、実行結果を記録しながら、
データの分析作業を進めるためのツールです。
プログラムとその実行結果やその際のメモを簡単に作成、確認することができるため、自分自身の
過去の作業内容の振り返りや、チームメンバーへ作業結果を共有する際に便利なほか、
スクール形式での授業や研修などでの利用にも向いています。
・・・なんか良く分かりませんね
保存を行うとipynb形式で保存されます。後は、これでどんどんドキュメントを作成していく形になります。
作成したBookはnbviewerで共有してもよいですが、GitHubの場合そのまま表示をしてくれます。
これで分析手法などを実行可能なPythonコードベースで、且つ解説付きで共有できるようになるので
ノウハウ共有などにとても役に立つと思います。
・・・ブラウザ上で、ノートブック形式=ipynb形式で、プログラムを実行・実行結果を記録できるみたいですね。
黒い画面(CLI)が苦手な人も多いので、ブラウザ上で出来るのが良いのかも。
個人で使う時は、途中で保存して後から続きやるとか、長めのソースの勉強(写経)するときにとても便利です。
ちなみに、もともとは iPythonと言っていましたが、Pythonだけでなく他言語(R, Ruby, bashなど)に対応して、jupyter notebookと呼ぶようになってます。
3.try.jupyter.orgを使ってみよう
jupyter notebookはMacなどPython環境があれば比較的簡単にインストールできますが、Windowsの方はPythonインストールから始める必要があるので、ちょっと面倒です。
機能制限はありますが、手軽にJupyter Notebookを試せるオフィシャルサイトがありますので、今回はそちらを利用します。
右上に出ているように、Rackspaceがホストしているようです。
サンプルもありますが、ちょっと難しいので、新規作成で簡単なところからやります。
(1)新規作成〜ファイル保存
先ほどの はじめるJupyter Notebookを参考に、以下を実行してみましょう。
print("Hello Jupyter")
In[]:の右(この四角をセルと呼びます)にコード入れて実行します(実行は Shift+Enter)。
上の"Untitled"ってなっているところをクリックして名前をつけます。
ここで"Open"を再度選ぶと、元の画面に戻ります。
(2)保存したファイルから続きを実行
・保存したファイルをリネームしておきます。(ここでは、20170904_Sample2.ipynb )
・"Upload"で、ローカルのファイル画面になるので、先ほどダウンロード&リネームしたファイルを指定します。
・Kernelを "Restart & Clear Output"します。
(3)Markdownを書いてコメントを入れる
・せっかくUploadしましたが、以前のセルは上の「ハサミマーク」で消してしまいましょう。
・以下を入力します
### はじめてのJupyter Notebook
・Sift+Enterで実行するとコメントが入力できました。
・一番最初にやったCLIのSample.pyを4つに分けて入力してみましょう。
import datetime, time
def main():
for count in range(0, 10):
print_current_time()
time.sleep(1)
def print_current_time():
print (datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S'))
if __name__ == '__main__':
main()
・コードの一番上のセルをポイントして、Shfit+Enterを押して、セルを1つづつ実行します。
(4)どこかで見たPythonサンプルをやってみる
以下を写経してやって見ましょう!
・Python超入門
print('Hello World!')
・Pythonの特徴的なところ
total = 0
while total < 10:
a = input('数字を入力してください: ')
if a == '1':
print('1本でもにんじん')
total +=1
elif a == '2':
print('2足でもサンダル')
total += 2
else:
print('強制終了')
break
else:
print('10個でもイチゴ')
total = 1
print(total)
・制御構文(2つはバラバラです)
words = ['cat', 'dog', 'tiger', 'lion']
for s in words:
print(s)
for n in range(5):
print(n**2)
・もう入門は終わり(3つでセットです)
SUFFIXES = { 1000: ['KB','MB','GB','TB','PB','EB','ZB','YB'],
1024: ['KiB','MiB','GiB','TiB','PiB','EiB','ZiB','YiB']}
def approx_size(size, use_1024=True):
if size < 0:
raise ValueError('numberは負であってはいけません')
base = 1024 if use_1024 else 1000
for suffix in SUFFIXES[base]:
size /= base
if size < base:
return '{0: .1f} {1}'.format(size, suffix)
raise ValueError('numberが大きすぎます')
print(approx_size(1000000000000), False)
4.便利な使い方
(1)グラフを書いてみる1
参考記事:
機械学習の現場で重宝する多機能WebエディタJupyter Notebookの基本的な使い方 (1/2)
・以下を写経して実行してみましょう
import numpy as np
import pandas as pd
df = pd.DataFrame(np.arange(20).reshape(5,4), columns=list("abcd"))
df
・以下を写経して実行してみましょう
%matplotlib inline
import matplotlib.pyplot as plt
x = np.linspace(-5,5, 300)
y = np.sin(x)
plt.plot(x,y)
(2)こんな注意事項の確認も
プログラム言語はどれでもそうですが、中身が二進数なので精度などにはちょっと注意が必要です。
以前の勉強会でやった例題をもう一度やってみましょう。
[Cloud102]#3-1 AML Studio NOTEBOOKのおまけ
(3)グラフを書いてみる2
続けて同じ資料にある「回転できる3Dプロット表示」を試してみてください。
%matplotlib inline
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-3, 3, 0.25)
y = np.arange(-3, 3, 0.25)
X, Y = np.meshgrid(x, y)
Z = np.sin(X)+ np.cos(Y)
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_wireframe(X,Y,Z)
plt.show()
・上のソースの最初(%matplotlib inline)を以下に変更して再実行してみましょう。
%matplotlib notebook
5.Try環境ではできないけど・・・
Try環境で外部APIなど呼ぶサンプルをトライしたのですが、制限がかかっているようで、実行できませんでした。
時間があればMac環境でデモします。
Enjoy
Author And Source
この問題について([Cloud103]#3 Jupyter Notebook再び), 我々は、より多くの情報をここで見つけました https://qiita.com/nagahisa/items/fc234ee6bb1abd0bfb77著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .