LoginSignup
1
0

More than 3 years have passed since last update.

Jupyter Notebook 起動してみる 〜 エスパーの修行

Last updated at Posted at 2020-05-07

Jupyter Notebook 起動するまで

  • この記事をカテゴリ分けすることが難しい
    • そもそも何が問題なのかがわからないので,最初にタイトルやカテゴリを決められない
    • そもそも問題認識が間違っていることもある
      • タイトルは付け直せばいい

環境を想像する

画像で貼ってあったので想像できた,予想だと jupyter か?

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

スクリーンショット 2020-04-30 13.41.33.png

できてしまった.どうして動かないんだろう.
エスパー力が足りない.

エスパー

予想としては,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 エスパー力を追加する

まとめ

  • 大抵すごくどうでもいいところでつまずく
  • 最初からやってみることができる環境を作るのは意外に大事
  • 環境をさっと作るときに docker は便利.コードなので渡したりもできる
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0