「データサイエンス100本ノック（構造化データ加工編）」を試す準備

# あらまし
データサイエンティスト協会<https://www.datascientist.or.jp/>が「データサイエンス100本ノック（構造化データ加工編）」を公開している。Windows 10 Home Edition、Anaconda(2020.02)インストール済のPCで、Dockerをインストールせずに、Jupyter NotebookのPython版を試すための作業を記録する。

# 「データサイエンス100本ノック（構造化データ加工編）」とは

下で紹介されているデータ付きの問題集（言語は3通り、解答付き）になる。
https://digitalpr.jp/r/39499

# Dockerがあるが

私の環境
・PCはWindows 10 Home。DockerToolboxで対応はされているが。
・メモリは8GB。
・Anacondaをインストール完了しているのでPythonとJupyter Notebookは動作する。
まずは、Dockerをインストールしないとどうなるのか試してみようと考えた。

# GitHubからZipファイルをダウンロードする

プロジェクトのトップページに行く。例えば今回の「データサイエンス100本ノック」のトップページは下になる。
https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess

ここで右にある「緑色のCode」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619395/5a4e9157-8c8e-5e14-5c37-8e04eeaf694f.png)

次にDownload ZIPをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619395/a1f3fdd4-7405-0555-43e8-5e1e37249f55.png)

PCのダウンロードフロルダに100knocks-preprocess-master.zipがダウンロードされる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619395/49096867-5750-8f1e-cc3d-53265258ad60.png)

zipを展開すると中身は次の通り。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619395/4ad8fceb-4d37-eeab-4bc5-9c5646f3dcb5.png)

私が必要なのは問題が書かれたコードとデータ一式、かつ解答コードになる。

例えばJupyterNotebookのコードは下にある。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619395/208f76fc-f319-2199-6b39-ea9c2dbff1ef.png)

例えばデータは下にある。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619395/8ad263d4-b85b-ecc5-19f6-fd29b8dadd02.png)

MyPython（Pythonコードを入れているフォルダ）の下にフォルダごと移動する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619395/0cd273f1-e466-7e68-2af3-9d7ceee721fd.png)

# JupyterNotebookを起動する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619395/1dbf44cf-22e8-9eca-f921-5dc4fec72059.png)

フォルダを
MyPython → 100knocks-preprocess-master → docker → work と進む。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619395/434b0dfa-0bee-7ecb-8d78-05df360cc4b2.png)

preprocess_knock_Python.ipynbをクリックして開く。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619395/273138a8-7573-9376-403b-45d9118614e7.png)

最初のInboxをクリックしてRunを実行する。

importを確認すると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619395/4dc20da0-c244-4a27-daf5-3b83520c26b2.png)
psycopg2でひっかかる。

よく見るとインストールしていないライブラリがある。ここで考える。
①これらをインストールするのか（二度と使わないかもしれないのに？という疑問あり）。
②自分でdataframeを定義するのか（csvのデータから操作できないと後々自分が困るよね、という気持ちあり）。

# dataframeを自分で定義することにした。
importはそのまま流用（インストールしていないライブラリはひとまず除いた）、geocode.csvは空白になっているデータがあるので型を定義した。

```python
import os
import pandas as pd
import numpy as np
from datetime import datetime, date
from dateutil.relativedelta import relativedelta
import math

from sklearn import preprocessing
from sklearn.model_selection import train_test_split

df_customer = pd.read_csv('data/customer.csv')
df_category = pd.read_csv('data/category.csv')
df_product = pd.read_csv('data/product.csv')
df_receipt = pd.read_csv('data/receipt.csv')
df_store = pd.read_csv('data/store.csv')
df_geocode = pd.read_csv('data/geocode.csv',\
    converters={'prefecture':str,'city':str,'town':str,'street':str,'address':str})
```

演習問題はそれなりに実行できる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619395/8439a79e-418f-8022-b290-abe462651466.png)

# 参考にしたサイト
データサイエンス初学者のための実践的な学習環境 「データサイエンス100本ノック（構造化データ加工編）」をGitHubに無料公開：<https://digitalpr.jp/r/39499>