Jupyter Notebook 起動するまで
- この記事をカテゴリ分けすることが難しい
- そもそも何が問題なのかがわからないので,最初にタイトルやカテゴリを決められない
- そもそも問題認識が間違っていることもある
- タイトルは付け直せばいい
環境を想像する
画像で貼ってあったので想像できた,予想だと jupyter か?
- https://qiita.com/fuku_tech/items/6752b00770552bf4f46b
- https://qiita.com/littlem/items/4893bc46bbdff4f97dfb
docker-compose.yml
version: '3'
services:
jupyter:
image: jupyter/scipy-notebook
ports:
- 10000:8888
volumes:
- $PWD:/home/jovyan/work
command: start.sh jupyter lab --NotebookApp.token=''
$ docker-compose up
http://localhost:10000/ にアクセスしてconsole を見る
やってみる
誰かが試すときはコードがあると嬉しいけど無かったので手で打つ
ソース1
data = {'name': ['Ryo', 'Kaori', 'Hideyuki', 'Hayato', 'Miki', 'Saeko'],
'gender': ['M', 'F', 'M', 'M', 'F', 'F'],
'height': [186, 168, 175, 210, 160, 163],
'weight': [72, 47, 62, 90, None, numpy.NaN],
'age': [30, 20, None, numpy.NaN, 23, 25],
'size': ['L', 'M', 'L', 'XL', None, 'S']
}
エラー
NameError: name 'numpy' is not defined
修正後1
import numpy
data = {'name': ['Ryo', 'Kaori', 'Hideyuki', 'Hayato', 'Miki', 'Saeko'],
'gender': ['M', 'F', 'M', 'M', 'F', 'F'],
'height': [186, 168, 175, 210, 160, 163],
'weight': [72, 47, 62, 90, None, numpy.NaN],
'age': [30, 20, None, numpy.NaN, 23, 25],
'size': ['L', 'M', 'L', 'XL', None, 'S']
}
やってみる2
ソース2
size2int = {'S': 1, 'M': 2, 'L': 3, 'XL': 4}
df['size'] = df['size'].map(size2int)
df
エラー
NameError: name 'df' is not defined
まあ,そうよね
修正後2
import pandas as pd
df = pd.DataFrame(data)
# size2int は size to int の意味
size2int = {'S': 1, 'M': 2, 'L': 3, 'XL': 4}
df['size'] = df['size'].map(size2int)
df
できてしまった.どうして動かないんだろう.
エスパー力が足りない.
エスパー
予想としては,size2int がミスっている状態で一度size
カラムを上書きしてしまった.以降は NaN にしかならない.
sample
size2int = {'S': 1, 'M': 2, 'L': 3, 'XL': 4}
みたいな
とすると,data → df をもう一度やってみよう.というのが何かになる.
本当か?
一度失敗する
import pandas as pd
df = pd.DataFrame(data)
size2int = {}
df['size'] = df['size'].map(size2int)
df
あとは何度やっても
size2int = {'S': 1, 'M': 2, 'L': 3, 'XL': 4}
df['size'] = df['size'].map(size2int)
df
一応再現はできる
WIP エスパー力を追加する
- pandas.DataFrame
- map
まとめ
- 大抵すごくどうでもいいところでつまずく
- 最初からやってみることができる環境を作るのは意外に大事
- 環境をさっと作るときに docker は便利.コードなので渡したりもできる