Follow me !!
- コミュニティ
- はんなりPython
- OSS Gate
- 主夫
- 兼 パートタイムプログラマ
- 兼 スプーキーズアンバサダー
- WebRTCを活用する
- Docker勉強会
- ゲームAIを作って競い合う構想
複数のプログラミング言語にまたがるインタラクティブコンピューティングのためのサービスを開発する
ライブコード、方程式、可視化、テキストを含むドキュメントを作成して共有できるオープンソースのWebアプリケーション
FROM python:latest
# Install miniconda to /miniconda
RUN curl -LO 'https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh'
RUN bash Miniconda3-latest-Linux-x86_64.sh -b -p /miniconda
ENV PATH=/miniconda/bin:${PATH}
RUN conda update -y conda
# install for jupyter notebook
RUN conda install -y pandas matplotlib nb_conda
RUN conda install -y pyyaml
RUN mkdir -p /root/notebook
WORKDIR /root/notebook
CMD jupyter notebook --ip=0.0.0.0 --allow-root
Build image
$ docker build -t jupyter .
Run docker
$ docker run -it --rm -v $(pwd)/notebook:/root/notebook -p 80:8888 jupyter
Copy/paste this URL into your browser when you connect for the first time,
to login with a token:
http://0.0.0.0:8888/?token=ba4fc6de0d99161f5e144ad4c1167ebf074ddc29b916065f
http://localhost/?token=ba4fc6de0d99161f5e144ad4c1167ebf074ddc29b916065f
にアクセス!!
def hello():
return 'Hello Jupyter.'
hello()
'Hello Jupyter.'
# グラフ表示を有効化
%matplotlib inline
import pandas as pd
df = pd.DataFrame([1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765])
df.plot()
fibo_pd.describe()
-
Markdownでメモなどを残せる
-
LaTeXで数式を書ける
https://github.com/masayuki14/reserve-docs/blob/master/slide/jupyter-notebook/notebook/intro.ipynb
保存した ipynb
をGitHubにPushすると表示できる。
- 1次元データ構造のシリーズ(Series)
- 2次元データ構造のデータフレーム(DataFrame)
Pandasをつかおう
import pandas as pd
In [1]: import pandas as pd
...:
...: # columnsオプションで列名を指定
...: df = pd.DataFrame([1,2,3],
...: columns=['value'])
...: df
Out[1]:
value
0 1
1 2
2 3
In [2]: df = pd.DataFrame([
...: ('apple', 100), ('oragne', 230), ('grape', 290), ('banana', 100)],
...: columns=['name', 'price']
...: )
...: df
Out[2]:
name price
0 apple 100
1 oragne 230
2 grape 290
3 banana 100
In [3]: df = pd.DataFrame({
...: 'name': ['apple', 'orange', 'pear', 'peach'],
...: 'price': [120, 150, 230, 360],
...: 'order': [3, 8, 4, 5]
...: })
...: df
Out[3]:
name order price
0 apple 3 120
1 orange 8 150
2 pear 4 230
3 peach 5 360
In [4]: df['color'] = ['red', 'orange', 'green', 'pink']
...: df['total'] = df['order'] * df['price']
...: df
Out[4]:
name order price color total
0 apple 3 120 red 360
1 orange 8 150 orange 1200
2 pear 4 230 green 920
3 peach 5 360 pink 1800
In [5]: df.index = ['Apple', 'Orange', 'Pear', 'Peach']
...: df
Out[5]:
name order price color total
Apple apple 3 120 red 360
Orange orange 8 150 orange 1200
Pear pear 4 230 green 920
Peach peach 5 360 pink 1800
In [6]: df['price']
Out[6]:
Apple 120
Orange 150
Pear 230
Peach 360
Name: price, dtype: int64
In [7]: df[['price', 'color']]
Out[7]:
price color
Apple 120 red
Orange 150 orange
Pear 230 green
Peach 360 pink
In [8]: df.head(2)
Out[8]:
name order price color total
Apple apple 3 120 red 360
Orange orange 8 150 orange 1200
In [9]: df.loc[['Apple', 'Pear']]
In [9]: df[1:3]
Out[9]:
name order price color total
Orange orange 8 150 orange 1200
Pear pear 4 230 green 920
In [10]: df[df.price > 200]
Out[10]:
name order price color total
Pear pear 4 230 green 920
Peach peach 5 360 pink 1800
- 対話的、探索的にデータを操作できる
http://www.data.jma.go.jp/gmd/risk/obsdl/index.php
Jupyter Notebook を使うことは
データサイエンスのはじめの一歩