【勉強メモ04】データの前処理をしよう

#はじめに
今回記事作成者の機械学習の勉強＆メモのために記事を作成しています
間違いなどありましたらコメントにてご指摘いただけると幸いです。
Pythonで必要なライブラリーを呼び出しましょう。
（魔法の言葉みたいなものです。）

```Python
#Pythonでグラフを描画するためのライブラリ
import matplotlib.pyplot as plt

#Numerical Pythonを略してNumPy 数値の計算や行列を扱うためのライブラリ
import numpy as np

#テーブル型のデータを処理するためのライブラリ
import pandas as pd

#　データ可視化のライブラリ
import seaborn as sns

#最大表示列数の指定（ここでは100列を指定） 
pd.set_option('display.max_columns',100)

# floatの表示方法を、小数点以下2桁で設定する処理
pd.options.display.float_format = '{:.2f}'.format

```

#データセットを呼び出す

分析したいデータセットを下記コードで呼び出します。

```Python
#データセットの読み込み
#train.csv →　呼び出したいファイル名を入れてください。
dataset = pd.read_csv("train.csv")

```
#データセットの中身を確認する方法

```Python

#データセットの概要確認をしたい場合
dataset.head()

#指定の場所のデータセットを確認したい場合
#この場合3 ~ 5行目のデータを呼び出してくれる
dataset[3:5]

#データの行数、列数を確認したい場合
dataset.shape

#データの欠損値を確認したい場合
dataset.isnull().sum()

#データの要約統計量を確認したい場合
dataset.describe()

#カラム名（行名）を確認したい場合
dataset.columns

#各列のデータ型の確認したい場合
dataset.dtypes

# データ情報の要約を見る
data.info()

```

#欠損値を補完する

```Python
# rainに欠損値があるので値を補完する場合
#そのため、欠損値を0に置き換える「0」のところを置き換えたい数字にすることで変更することができる。
dataset["rain"].fillna(0, inplace = True)

#inplace = Trueを設定しないと、元のデータセットに反映されない

```

#日付データを抽出する

date_timeのデータが
2012-03-21 12:34:50

の場合

```Python
#日付データから年 / 月 / 日 / 曜日　データを抽出する

#文字列のデータを　日付データに型を変換させる
dataset["date_time"] = pd.to_datetime(dataset["date_time"])

# 年を抽出する
dataset["year"] = dataset["date_time"].dt.year

# 月を抽出する
dataset["month"] = dataset["date_time"].dt.month

# 日を抽出する
dataset["day"] = dataset["date_time"].dt.day

# 時間を抽出する
dataset["hour"] = dataset["date_time"].dt.hour

# 曜日を出力する
dataset["dayofweek"]=dataset["date_time"].dt.strftime("%A")

#データセットで分割されているかを確認する
dataset.loc[:,["year","month","day","hour","dayofweek"]][0:10]


```

#特徴量作成

##カテゴリデータをダミー変数に変換する。
```Python
#カテゴリデータをダミー変数に変換する。
dataset2 = pd.get_dummies(data = dataset, columns = ["hour"])

#項目ごとに行が作成され、0,1で分けてくれる

```

##条件により特徴量を作成する場合
```Python

#20時以降～朝4時までは1, そうでない場合は0という特徴量を追加する場合

#特徴量作成方法1
dataset["isNight"] = ((dataset["hour"]>= 20)|(dataset["hour"]<=5)).astype(int)

# 参考
# https://note.nkmk.me/python-numpy-logical-bitwise-and-or/
# ＆⇒ and
# | ⇒ or

#特徴量作成方法 2

dataset["isNight"] = np.logical_or(dataset["hour"]>=20, dataset["hour"]<=5).astype(int)
dataset.head()

```


#参考資料

<a href="https://hb.afl.rakuten.co.jp/ichiba/2132e914.2fe6209c.2132e915.6ace3022/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F15576681%2F&link_type=text&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJ0ZXh0Iiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MCwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjEsInByb2QiOjAsImFtcCI6ZmFsc2V9" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  >Pythonによるあたらしいデータ分析の教科書 [ 寺田 学 ]</a>

<a href="https://hb.afl.rakuten.co.jp/ichiba/2132e914.2fe6209c.2132e915.6ace3022/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F15576681%2F&link_type=pict&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0Iiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MCwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjEsInByb2QiOjAsImFtcCI6ZmFsc2V9" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  ><img src="https://hbb.afl.rakuten.co.jp/hgb/2132e914.2fe6209c.2132e915.6ace3022/?me_id=1213310&item_id=19251192&pc=https%3A%2F%2Fthumbnail.image.rakuten.co.jp%2F%400_mall%2Fbook%2Fcabinet%2F8341%2F9784798158341.jpg%3F_ex%3D240x240&s=240x240&t=pict" border="0" style="margin:2px" alt="" title=""></a>

<a href="https://hb.afl.rakuten.co.jp/ichiba/2132e914.2fe6209c.2132e915.6ace3022/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F15697205%2F&link_type=text&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJ0ZXh0Iiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MCwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjEsInByb2QiOjAsImFtcCI6ZmFsc2V9" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  >見て試してわかる機械学習アルゴリズムの仕組み 機械学習図鑑 [ 秋庭 伸也 ]</a>

<a href="https://hb.afl.rakuten.co.jp/ichiba/2132e914.2fe6209c.2132e915.6ace3022/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F15697205%2F&link_type=pict&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0Iiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MCwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjEsInByb2QiOjAsImFtcCI6ZmFsc2V9" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  ><img src="https://hbb.afl.rakuten.co.jp/hgb/2132e914.2fe6209c.2132e915.6ace3022/?me_id=1213310&item_id=19382494&pc=https%3A%2F%2Fthumbnail.image.rakuten.co.jp%2F%400_mall%2Fbook%2Fcabinet%2F5654%2F9784798155654.jpg%3F_ex%3D240x240&s=240x240&t=pict" border="0" style="margin:2px" alt="" title=""></a>