じょんすみす
Jupyter Notebookを使えばインタラクティブにスクリプトを実行しながら処理内容も保存しておける
print('Hello')
Hello
items = ['ピーター', 'フロプシー', 'モプシー', 'カトンテール', 'ベンジャミン']
for index, item in enumerate(items) :
print('{}: {}'.format(index, item))
# セル内の一番最後の処理の戻り値は変数で受け取らなければそのまま出力される
result = 'Done'
result
0: ピーター 1: フロプシー 2: モプシー 3: カトンテール 4: ベンジャミン
'Done'
def rabbit_function() :
pass
class rabbit_class:
def rabiit_method() :
pass
a
で現在セルの上、b
で下に新しいセルを追加dd
でセルの削除Enter
で現在のセルに対して変数モードに移行h
で一覧表示Jupyter Notebookはマジックコマンドをというものを利用することで様々なことが行える
マジックコメントを利用するには先頭に%
を付けて実行する
処置時間を計測する%time
%time sum(range(100000))
Wall time: 2.99 ms
4999950000
%timeitを使うことで複数回計測して統計情報も出す
%timeit sum(range(10000))
172 µs ± 3.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
複数行にわたる処理の時間を計測する場合は%%を使う
%%time
import random
items = [random.randint(1, 10) for _ in range(10000)]
sum(items)
Wall time: 18.9 ms
%history
print('Hello') items = ['ピーター', 'フロプシー', 'モプシー', 'カトンテール', 'ベンジャミン'] for index, item in enumerate(items) : print('{}: {}'.format(index, item)) # セル内の一番最後の処理の戻り値は変数で受け取らなければそのまま出力される result = 'Done' result def rabbit_function() : pass class rabbit_class: def rabiit_method() : pass # デモ用のセル %time sum(range(100000)) %timeit sum(range(10000)) %%time import random items = [random.randint(1, 10) for _ in range(10000)] sum(items) %history
%who
index item items rabbit_class rabbit_function random result
%whos
Variable Type Data/Info --------------------------------------- index int 4 item str ベンジャミン items list n=10000 rabbit_class type <class '__main__.rabbit_class'> rabbit_function function <function rabbit_function at 0x0000024A87E0AA60> random module <module 'random' from 'C:<...>ython37\\lib\\random.py'> result str Done
%%bash
ls
PyCon mini Sapporo 2019.ipynb img pycon_sapporo2019_env
!pip list
Package Version ------------------ ------- attrs 19.1.0 backcall 0.1.0 bleach 3.1.0 colorama 0.4.1 cycler 0.10.0 decorator 4.4.0 defusedxml 0.6.0 entrypoints 0.3 ipykernel 5.1.0 ipython 7.5.0 ipython-genutils 0.2.0 ipywidgets 7.4.2 jedi 0.13.3 Jinja2 2.10.1 jsonschema 3.0.1 jupyter 1.0.0 jupyter-client 5.2.4 jupyter-console 6.0.0 jupyter-core 4.4.0 jupyterlab 0.35.6 jupyterlab-server 0.2.0 kiwisolver 1.1.0 MarkupSafe 1.1.1 matplotlib 3.0.3 mistune 0.8.4 nbconvert 5.5.0 nbformat 4.4.0 notebook 5.7.8 numpy 1.16.3 pandas 0.24.2 pandocfilters 1.4.2 parso 0.4.0 pickleshare 0.7.5 pip 19.0.3 prometheus-client 0.6.0 prompt-toolkit 2.0.9 Pygments 2.4.0 pyparsing 2.4.0 pyrsistent 0.15.1 python-dateutil 2.8.0 pytz 2019.1 pywinpty 0.5.5 pyzmq 18.0.1 qtconsole 4.4.4 scikit-learn 0.20.3 scipy 1.2.1 Send2Trash 1.5.0 setuptools 40.8.0 six 1.12.0 terminado 0.8.2 testpath 0.4.2 tornado 6.0.2 traitlets 4.3.2 wcwidth 0.1.7 webencodings 0.5.1 widgetsnbextension 3.4.2
You are using pip version 19.0.3, however version 19.1.1 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command.
%lsmagic
Available line magics: %alias %alias_magic %autoawait %autocall %automagic %autosave %bookmark %cd %clear %cls %colors %conda %config %connect_info %copy %ddir %debug %dhist %dirs %doctest_mode %echo %ed %edit %env %gui %hist %history %killbgscripts %ldir %less %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %ls %lsmagic %macro %magic %matplotlib %mkdir %more %notebook %page %pastebin %pdb %pdef %pdoc %pfile %pinfo %pinfo2 %pip %popd %pprint %precision %prun %psearch %psource %pushd %pwd %pycat %pylab %qtconsole %quickref %recall %rehashx %reload_ext %ren %rep %rerun %reset %reset_selective %rmdir %run %save %sc %set_env %store %sx %system %tb %time %timeit %unalias %unload_ext %who %who_ls %whos %xdel %xmode Available cell magics: %%! %%HTML %%SVG %%bash %%capture %%cmd %%debug %%file %%html %%javascript %%js %%latex %%markdown %%perl %%prun %%pypy %%python %%python2 %%python3 %%ruby %%script %%sh %%svg %%sx %%system %%time %%timeit %%writefile Automagic is ON, % prefix IS NOT needed for line magics.
m
を押すことで現在のセルをMarkdownに変更ここにMarkdownでドキュメントを記載します。
y
を押す# ここにコードを記述して実行可能
print('Hello')
Hello
import pandas as pd
from sklearn.datasets import load_iris
iris = load_iris()
# データは1件のデータが4つの観測値を持つ
# 1件のデータが長さ4の配列でさらにそれがデータ件数分の2次元配列になっている
iris['data'][:5]
array([[5.1, 3.5, 1.4, 0.2], [4.9, 3. , 1.4, 0.2], [4.7, 3.2, 1.3, 0.2], [4.6, 3.1, 1.5, 0.2], [5. , 3.6, 1.4, 0.2]])
# 各観測値が何を計測した値なのかはfeature_names
iris['feature_names']
['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
# このデータをDataFrameにする
df = pd.DataFrame(iris['data'], columns=map(lambda x : x[:-5].replace(' ', '_'), iris['feature_names']))
print(df.head())
sepal_length sepal_width petal_length petal_width 0 5.1 3.5 1.4 0.2 1 4.9 3.0 1.4 0.2 2 4.7 3.2 1.3 0.2 3 4.6 3.1 1.5 0.2 4 5.0 3.6 1.4 0.2
# テーブルに整形された表示
df.head()
sepal_length | sepal_width | petal_length | petal_width | |
---|---|---|---|---|
0 | 5.1 | 3.5 | 1.4 | 0.2 |
1 | 4.9 | 3.0 | 1.4 | 0.2 |
2 | 4.7 | 3.2 | 1.3 | 0.2 |
3 | 4.6 | 3.1 | 1.5 | 0.2 |
4 | 5.0 | 3.6 | 1.4 | 0.2 |
%matplotlib inline
df.plot.scatter(x='petal_length', y='petal_width')
<matplotlib.axes._subplots.AxesSubplot at 0x24a917359b0>