データ分析で頻出のPandas基本操作

## はじめに

機械学習や深層学習が人気の昨今ですが、それらのモデルの精度に最もクリティカルに影響するのはインプットする**データの質**です。データの質は、データを適切に把握し、不要なデータを取り除いたり、必要なデータを精査する**前処理**を行うことで高めることができます。 

本頁では、データ処理の基本ツールとしてPandasの使い方を紹介します。Pandasには便利な機能がたくさんありますが、特に分析業務で**頻出の**Pandas関数・メソッドを重点的に取り上げました。

Pandasに便利なメソッドがたくさんあることは知っている、でもワイが知りたいのは分析に最低限必要なやつだけなんや…！、という人のためのPandasマニュアルです。

また、単に機能を説明するだけでは実際の処理動作がわかりにくいため、ここではSIGNATE(旧DeepAnalytics)の[お弁当の需要予想を行うコンペのデータ](https://signate.jp/competitions/24)を拝借し、このデータに対して一貫してPandasの処理を適応していくことで、一連のPandas操作（前処理のプロセス）を体験できるようにしています。

※ 以下ではPandas関数の処理に注力して説明しているため、特に意味のない（必要性のない）集計やダミー化などを行っている箇所もあります。"前処理の模範解答"を行っているわけではないのでご留意ください。

※ 同内容はGitHubにてJupyter Notebook形式でも公開しています。実際に手を動かしながらやりたい方はこちらからcloneしていただいた方が便利です。

- [ysdyt/pandas_tutorial](https://github.com/ysdyt/pandas_tutorial/blob/master/pandas_tutorial.ipynb)

![pandas.jpg](https://qiita-image-store.s3.amazonaws.com/0/100780/ff5f5d02-6967-1e1c-7823-5dfa73927a2e.jpeg)

## Pandasについて
- 公式ドキュメント：http://pandas.pydata.org/pandas-docs/stable/
- pandasは、Pythonにおいて、データ解析を支援する機能を提供するライブラリである。特に、数表および時系列データを操作するためのデータ構造と演算を提供する。
- pandasの特長
    - データ操作のための高速で効率的なデータフレーム (DataFrame) オブジェクト
    - メモリ内のデータ構造とその他のフォーマットのデータ間で相互に読み書きするためのツール群。フォーマット例: CSV、テキストファイル、Excel、SQLデータベース、HDF5フォーマットなど
    - かしこいデータのアライメントおよび統合された欠損値処理
    - データセットの柔軟な変形およびピボット
    - ラベルに基づいたスライス、fancyインデクシング、巨大なデータセットのサブセット取得
    - データセットに対するsplit-apply-combine操作を可能にするエンジンが提供するpowerful groupを使ったデータの集計および変換
    - 高性能なデータセットのマージと結合
    - 時系列データ: 日付範囲生成、周波数変換、移動窓を用いた統計値や線形回帰、シフトと遅延、など
    - パフォーマンスのための高度な最適化。重要なコードはCythonまたはC言語で実装されている。

## 本頁で紹介するPandasメソッド一覧

**① Pythonのバージョン確認、モジュールのimport、データの読み込み**

- pd.read_csv()
- df.head()
- df.tail()

**② 簡単にデータの状態を確認する（行数列数カウント・データの選択的表示・重複の有無など）**

- df.shape
- df.index
- df.columns
- df.dtypes
- df.loc[]
- df.iloc[]
- df.query()
- df.unique()
- df.drop_duplicates()
- df.describe()

**③ データの整形（データ型変更、列名変更、並び替えなど）**

- df.set_index()
- df.rename()
- df.sort_values()
- df.to_datetime()
- df.sort_index()
- df.resample()
- df.apply()
- pd.cut()

**④ データの欠損状態の確認** 

- df.isnull()
- df.any()

**⑤ 値（欠損）の置き換えや削除**

- df.fillna()
- df.dropna()
- df.replace()
- df.mask()
- df.drop()

**⑥ 集計**

- df.value_counts()
- df.groupby()
- df.diff()
- df.rolling()
- df.pct_change()

**⑦ 可視化**

- df.plot()
- df.corr()
- df.pivot()

**⑧ 変数の前処理**

- pd.get_dummies()

**⑨ 最後に、出来たデータをもう一度眺める**

- df.to_csv()

## ① Pythonのバージョン確認、モジュールのimport、データの読み込み

まずはpandasと今回使うデータのimportを行い表示してみます。
データの内容は[こちら](https://github.com/ysdyt/pandas_tutorial/blob/master/data/lunch_box.csv)にあります。


```python
# pythonのバージョン確認
!python -V
```

    Python 3.5.2 :: Anaconda custom (x86_64)



```python
# 一般的にpandasはpdと名前を付けてimportされる
import pandas as pd
```


```python
# read_csvメソッドでお弁当需要予想に関するデータをcsvファイルとして読み込む
df = pd.read_csv('./data/lunch_box.csv', sep=',')
```


```python
# データの確認をする（最初の3行を表示）
df.head(3)
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>datetime</th>
      <th>y</th>
      <th>week</th>
      <th>soldout</th>
      <th>name</th>
      <th>kcal</th>
      <th>remarks</th>
      <th>event</th>
      <th>payday</th>
      <th>weather</th>
      <th>precipitation</th>
      <th>temperature</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>2013-11-18</td>
      <td>90</td>
      <td>月</td>
      <td>0</td>
      <td>厚切りイカフライ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>19.8</td>
    </tr>
    <tr>
      <th>1</th>
      <td>2013-11-19</td>
      <td>101</td>
      <td>火</td>
      <td>1</td>
      <td>手作りヒレカツ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>17.0</td>
    </tr>
    <tr>
      <th>2</th>
      <td>2013-11-20</td>
      <td>118</td>
      <td>水</td>
      <td>0</td>
      <td>白身魚唐揚げ野菜あん</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>15.5</td>
    </tr>
  </tbody>
</table>
</div>



### 各列の説明
データ詳細ページ: https://signate.jp/competitions/24/data

|No.|列名|内容|説明|
|:---|:---|:---|:---|
|1|datetime|日付|インデックスとして使用|
|2|y|販売数|目的変数|
|3|week|曜日|月～金|
|4|soldout|完売フラグ|0:完売せず、1:完売|
|5|name|メインメニュー|マルチバイト文字列（日本語）|
|6|kcal|カロリー（kcal）|整数。存在しないレコードあり|
|7|remarks|特記事項|自由記述|
|8|event|13時開始お弁当持ち込み可イベント|社内イベントの有無。存在しないレコードあり|
|9|payday|給料日フラグ|1:給料日|
|10|weather|天気|マルチバイト文字列（日本語）|
|11|precipitation|降水量|実数。降水量 0 は "--" と表記|
|12|temperature|気温|実数|


![pandas_dataframe.png](https://qiita-image-store.s3.amazonaws.com/0/100780/e9f696c2-4f0d-7142-710c-9b73aa1526d5.png)


```python
# 先頭の5行を表示
df.head()
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>datetime</th>
      <th>y</th>
      <th>week</th>
      <th>soldout</th>
      <th>name</th>
      <th>kcal</th>
      <th>remarks</th>
      <th>event</th>
      <th>payday</th>
      <th>weather</th>
      <th>precipitation</th>
      <th>temperature</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>2013-11-18</td>
      <td>90</td>
      <td>月</td>
      <td>0</td>
      <td>厚切りイカフライ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>19.8</td>
    </tr>
    <tr>
      <th>1</th>
      <td>2013-11-19</td>
      <td>101</td>
      <td>火</td>
      <td>1</td>
      <td>手作りヒレカツ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>17.0</td>
    </tr>
    <tr>
      <th>2</th>
      <td>2013-11-20</td>
      <td>118</td>
      <td>水</td>
      <td>0</td>
      <td>白身魚唐揚げ野菜あん</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>15.5</td>
    </tr>
    <tr>
      <th>3</th>
      <td>2013-11-21</td>
      <td>120</td>
      <td>木</td>
      <td>1</td>
      <td>若鶏ピリ辛焼</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>15.2</td>
    </tr>
    <tr>
      <th>4</th>
      <td>2013-11-22</td>
      <td>130</td>
      <td>金</td>
      <td>1</td>
      <td>ビッグメンチカツ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>16.1</td>
    </tr>
  </tbody>
</table>
</div>




```python
# 最後尾の5行を表示
df.tail()
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>datetime</th>
      <th>y</th>
      <th>week</th>
      <th>soldout</th>
      <th>name</th>
      <th>kcal</th>
      <th>remarks</th>
      <th>event</th>
      <th>payday</th>
      <th>weather</th>
      <th>precipitation</th>
      <th>temperature</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>202</th>
      <td>2014-9-24</td>
      <td>59</td>
      <td>水</td>
      <td>1</td>
      <td>白身魚のマスタード焼き</td>
      <td>408.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>曇</td>
      <td>0</td>
      <td>24.8</td>
    </tr>
    <tr>
      <th>203</th>
      <td>2014-9-25</td>
      <td>50</td>
      <td>木</td>
      <td>0</td>
      <td>牛カルビ焼き肉</td>
      <td>394.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>曇</td>
      <td>0</td>
      <td>25.4</td>
    </tr>
    <tr>
      <th>204</th>
      <td>2014-9-26</td>
      <td>45</td>
      <td>金</td>
      <td>0</td>
      <td>ランチビュッフェ</td>
      <td>NaN</td>
      <td>スペシャルメニュー（800円）</td>
      <td>キャリアアップ支援セミナー</td>
      <td>NaN</td>
      <td>晴れ</td>
      <td>--</td>
      <td>27.1</td>
    </tr>
    <tr>
      <th>205</th>
      <td>2014-9-29</td>
      <td>56</td>
      <td>月</td>
      <td>1</td>
      <td>豚肉と玉子の炒め</td>
      <td>404.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>26.6</td>
    </tr>
    <tr>
      <th>206</th>
      <td>2014-9-30</td>
      <td>40</td>
      <td>火</td>
      <td>0</td>
      <td>鶏肉とカシューナッツ炒め</td>
      <td>398.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>28.1</td>
    </tr>
  </tbody>
</table>
</div>



## ② 簡単にデータの状態を確認する（行数列数カウント・データの選択的表示・重複の有無など）
読み込んだデータがどんなものなのか、簡単に概要を掴むための操作を行います。


```python
print('dataframeの行数・列数の確認==>\n', df.shape)
print('indexの確認==>\n', df.index)
print('columnの確認==>\n', df.columns)
print('dataframeの各列のデータ型を確認==>\n', df.dtypes)
```

    dataframeの行数・列数の確認==>
     (207, 12)
    indexの確認==>
     RangeIndex(start=0, stop=207, step=1)
    columnの確認==>
     Index(['datetime', 'y', 'week', 'soldout', 'name', 'kcal', 'remarks', 'event',
           'payday', 'weather', 'precipitation', 'temperature'],
          dtype='object')
    dataframeの各列のデータ型を確認==>
     datetime          object
    y                  int64
    week              object
    soldout            int64
    name              object
    kcal             float64
    remarks           object
    event             object
    payday           float64
    weather           object
    precipitation     object
    temperature      float64
    dtype: object



```python
# 任意の列だけ取り出したい場合
df[['name', 'kcal']].head()
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>name</th>
      <th>kcal</th>
    </tr>
    <tr>
      <th>datetime</th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2014-01-09</th>
      <td>鶏チリソース</td>
      <td>435.0</td>
    </tr>
    <tr>
      <th>2014-01-10</th>
      <td>手作りロースカツ</td>
      <td>440.0</td>
    </tr>
    <tr>
      <th>2014-01-14</th>
      <td>鶏の照り焼きマスタード</td>
      <td>376.0</td>
    </tr>
    <tr>
      <th>2014-01-15</th>
      <td>さんま辛味焼</td>
      <td>450.0</td>
    </tr>
    <tr>
      <th>2014-01-16</th>
      <td>カレイ唐揚げ野菜あんかけ</td>
      <td>415.0</td>
    </tr>
  </tbody>
</table>
</div>




```python
# 100行目から105行目まで表示したい場合
df[100:106]
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>datetime</th>
      <th>y</th>
      <th>week</th>
      <th>soldout</th>
      <th>name</th>
      <th>kcal</th>
      <th>remarks</th>
      <th>event</th>
      <th>payday</th>
      <th>weather</th>
      <th>precipitation</th>
      <th>temperature</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>100</th>
      <td>2014-4-22</td>
      <td>78</td>
      <td>火</td>
      <td>1</td>
      <td>マーボ豆腐</td>
      <td>382.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>曇</td>
      <td>--</td>
      <td>18.8</td>
    </tr>
    <tr>
      <th>101</th>
      <td>2014-4-23</td>
      <td>63</td>
      <td>水</td>
      <td>0</td>
      <td>手作りひれかつ</td>
      <td>340.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>19.4</td>
    </tr>
    <tr>
      <th>102</th>
      <td>2014-4-24</td>
      <td>56</td>
      <td>木</td>
      <td>1</td>
      <td>鶏の照り焼きマヨ</td>
      <td>360.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>晴れ</td>
      <td>--</td>
      <td>19.9</td>
    </tr>
    <tr>
      <th>103</th>
      <td>2014-4-25</td>
      <td>80</td>
      <td>金</td>
      <td>0</td>
      <td>中華丼</td>
      <td>NaN</td>
      <td>お楽しみメニュー</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>晴れ</td>
      <td>--</td>
      <td>20.8</td>
    </tr>
    <tr>
      <th>104</th>
      <td>2014-4-28</td>
      <td>54</td>
      <td>月</td>
      <td>0</td>
      <td>タンドリーチキン</td>
      <td>342.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>晴れ</td>
      <td>--</td>
      <td>22.7</td>
    </tr>
    <tr>
      <th>105</th>
      <td>2014-4-30</td>
      <td>97</td>
      <td>水</td>
      <td>1</td>
      <td>豚味噌メンチカツ</td>
      <td>368.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>雨</td>
      <td>0.5</td>
      <td>17.5</td>
    </tr>
  </tbody>
</table>
</div>




```python
# indexが100の行だけ取得したい場合
df.loc[100]
```




    datetime         2014-4-22
    y                       78
    week                     火
    soldout                  1
    name                 マーボ豆腐
    kcal                   382
    remarks                NaN
    event                  NaN
    payday                 NaN
    weather                  曇
    precipitation           --
    temperature           18.8
    Name: 100, dtype: object




```python
# もっとピンポイントに抽出したい場合
# 例: 1,2,4 行目と 0-2 列目を取得
df.iloc[[1,2,4],[0,2]]
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>datetime</th>
      <th>week</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>1</th>
      <td>2013-11-19</td>
      <td>火</td>
    </tr>
    <tr>
      <th>2</th>
      <td>2013-11-20</td>
      <td>水</td>
    </tr>
    <tr>
      <th>4</th>
      <td>2013-11-22</td>
      <td>金</td>
    </tr>
  </tbody>
</table>
</div>




```python
# 条件を指定して抽出
df[df['kcal'] > 450]
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>datetime</th>
      <th>y</th>
      <th>week</th>
      <th>soldout</th>
      <th>name</th>
      <th>kcal</th>
      <th>remarks</th>
      <th>event</th>
      <th>payday</th>
      <th>weather</th>
      <th>precipitation</th>
      <th>temperature</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>29</th>
      <td>2014-1-8</td>
      <td>128</td>
      <td>水</td>
      <td>0</td>
      <td>豚肉の生姜焼</td>
      <td>462.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>曇</td>
      <td>--</td>
      <td>9.8</td>
    </tr>
    <tr>
      <th>45</th>
      <td>2014-1-31</td>
      <td>92</td>
      <td>金</td>
      <td>1</td>
      <td>メダイ照り焼</td>
      <td>460.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>14.1</td>
    </tr>
    <tr>
      <th>193</th>
      <td>2014-9-9</td>
      <td>63</td>
      <td>火</td>
      <td>0</td>
      <td>ハンバーグデミソース</td>
      <td>460.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>晴れ</td>
      <td>--</td>
      <td>26.8</td>
    </tr>
  </tbody>
</table>
</div>




```python
# queryメソッドを使うと、複数条件の指定で、特定カラムだけ出力もできる
df[['name', 'kcal']].query('kcal > 450 and name == "豚肉の生姜焼"') #query内のシングル/ダブルクオーテーションの使い方に注意
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>name</th>
      <th>kcal</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>29</th>
      <td>豚肉の生姜焼</td>
      <td>462.0</td>
    </tr>
  </tbody>
</table>
</div>




```python
# 'remarks(備考)'には例えばどんなデータが入っているか確認
df['remarks'].unique()
```




    array([nan, '鶏のレモンペッパー焼（50食）、カレー（42食）', '酢豚（28食）、カレー（85食）', 'お楽しみメニュー',
           '料理長のこだわりメニュー', '手作りの味', 'スペシャルメニュー（800円）'], dtype=object)




```python
# datatime単位で重複したデータが存在しないか確認
print(len(df) == len(df['datetime'].unique()))
```

    True



```python
#行方向で重複行を削除
df.drop_duplicates() 
print(df.shape) # 重複が存在しないので数は変わらないはず
```

    (207, 12)



```python
# 要約統計量の表示
df.describe()
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>y</th>
      <th>soldout</th>
      <th>kcal</th>
      <th>payday</th>
      <th>temperature</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>count</th>
      <td>207.000000</td>
      <td>207.000000</td>
      <td>166.000000</td>
      <td>10.0</td>
      <td>207.000000</td>
    </tr>
    <tr>
      <th>mean</th>
      <td>86.623188</td>
      <td>0.449275</td>
      <td>404.409639</td>
      <td>1.0</td>
      <td>19.252174</td>
    </tr>
    <tr>
      <th>std</th>
      <td>32.882448</td>
      <td>0.498626</td>
      <td>29.884641</td>
      <td>0.0</td>
      <td>8.611365</td>
    </tr>
    <tr>
      <th>min</th>
      <td>29.000000</td>
      <td>0.000000</td>
      <td>315.000000</td>
      <td>1.0</td>
      <td>1.200000</td>
    </tr>
    <tr>
      <th>25%</th>
      <td>57.000000</td>
      <td>0.000000</td>
      <td>386.000000</td>
      <td>1.0</td>
      <td>11.550000</td>
    </tr>
    <tr>
      <th>50%</th>
      <td>78.000000</td>
      <td>0.000000</td>
      <td>408.500000</td>
      <td>1.0</td>
      <td>19.800000</td>
    </tr>
    <tr>
      <th>75%</th>
      <td>113.000000</td>
      <td>1.000000</td>
      <td>426.000000</td>
      <td>1.0</td>
      <td>26.100000</td>
    </tr>
    <tr>
      <th>max</th>
      <td>171.000000</td>
      <td>1.000000</td>
      <td>462.000000</td>
      <td>1.0</td>
      <td>34.600000</td>
    </tr>
  </tbody>
</table>
</div>



## ③ データの整形（データ型変更、列名変更、並び替えなど）
なんとなくのデータの雰囲気はわかったので、次は自分が操作しやすいように列名を変更したり、処理しやすいようにデータ型を変更したりしてみます。


```python
# datetime列をindexにする
df.set_index('datetime', inplace=True)
df.head()
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>y</th>
      <th>week</th>
      <th>soldout</th>
      <th>name</th>
      <th>kcal</th>
      <th>remarks</th>
      <th>event</th>
      <th>payday</th>
      <th>weather</th>
      <th>precipitation</th>
      <th>temperature</th>
    </tr>
    <tr>
      <th>datetime</th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2013-11-18</th>
      <td>90</td>
      <td>月</td>
      <td>0</td>
      <td>厚切りイカフライ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>19.8</td>
    </tr>
    <tr>
      <th>2013-11-19</th>
      <td>101</td>
      <td>火</td>
      <td>1</td>
      <td>手作りヒレカツ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>17.0</td>
    </tr>
    <tr>
      <th>2013-11-20</th>
      <td>118</td>
      <td>水</td>
      <td>0</td>
      <td>白身魚唐揚げ野菜あん</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>15.5</td>
    </tr>
    <tr>
      <th>2013-11-21</th>
      <td>120</td>
      <td>木</td>
      <td>1</td>
      <td>若鶏ピリ辛焼</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>15.2</td>
    </tr>
    <tr>
      <th>2013-11-22</th>
      <td>130</td>
      <td>金</td>
      <td>1</td>
      <td>ビッグメンチカツ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>16.1</td>
    </tr>
  </tbody>
</table>
</div>




```python
df.index
```




    Index(['2013-11-18', '2013-11-19', '2013-11-20', '2013-11-21', '2013-11-22',
           '2013-11-25', '2013-11-26', '2013-11-27', '2013-11-28', '2013-11-29',
           ...
           '2014-9-16', '2014-9-17', '2014-9-18', '2014-9-19', '2014-9-22',
           '2014-9-24', '2014-9-25', '2014-9-26', '2014-9-29', '2014-9-30'],
          dtype='object', name='datetime', length=207)




```python
# カラム名を変更する（y を sales に変換）
df.rename(columns={'y': 'sales'}, inplace=True)
df.head()
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>sales</th>
      <th>week</th>
      <th>soldout</th>
      <th>name</th>
      <th>kcal</th>
      <th>remarks</th>
      <th>event</th>
      <th>payday</th>
      <th>weather</th>
      <th>precipitation</th>
      <th>temperature</th>
    </tr>
    <tr>
      <th>datetime</th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2013-11-18</th>
      <td>90</td>
      <td>月</td>
      <td>0</td>
      <td>厚切りイカフライ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>19.8</td>
    </tr>
    <tr>
      <th>2013-11-19</th>
      <td>101</td>
      <td>火</td>
      <td>1</td>
      <td>手作りヒレカツ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>17.0</td>
    </tr>
    <tr>
      <th>2013-11-20</th>
      <td>118</td>
      <td>水</td>
      <td>0</td>
      <td>白身魚唐揚げ野菜あん</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>15.5</td>
    </tr>
    <tr>
      <th>2013-11-21</th>
      <td>120</td>
      <td>木</td>
      <td>1</td>
      <td>若鶏ピリ辛焼</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>15.2</td>
    </tr>
    <tr>
      <th>2013-11-22</th>
      <td>130</td>
      <td>金</td>
      <td>1</td>
      <td>ビッグメンチカツ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>16.1</td>
    </tr>
  </tbody>
</table>
</div>




```python
# 'sales'列を降順で並び替えもできる
df.sort_values(by="sales", ascending=True).head() # ascending=Trueで昇順
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>sales</th>
      <th>week</th>
      <th>soldout</th>
      <th>name</th>
      <th>kcal</th>
      <th>event</th>
      <th>payday</th>
      <th>weather</th>
      <th>precipitation</th>
      <th>temperature</th>
      <th>month</th>
      <th>day</th>
      <th>period</th>
      <th>temperature_diff</th>
      <th>temperature_rolling_mean</th>
      <th>temperature_pct_change</th>
    </tr>
    <tr>
      <th>datetime</th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2014-09-22</th>
      <td>29</td>
      <td>月</td>
      <td>0</td>
      <td>筑前煮</td>
      <td>395.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>晴れ</td>
      <td>0.0</td>
      <td>25.2</td>
      <td>9</td>
      <td>22</td>
      <td>下旬</td>
      <td>1.6</td>
      <td>24.300000</td>
      <td>0.067797</td>
    </tr>
    <tr>
      <th>2014-08-01</th>
      <td>38</td>
      <td>金</td>
      <td>0</td>
      <td>豚肉の生姜焼き</td>
      <td>380.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>薄曇</td>
      <td>0.0</td>
      <td>32.7</td>
      <td>8</td>
      <td>1</td>
      <td>上旬</td>
      <td>0.2</td>
      <td>31.933333</td>
      <td>0.006154</td>
    </tr>
    <tr>
      <th>2014-08-29</th>
      <td>39</td>
      <td>金</td>
      <td>0</td>
      <td>チキンの辛味噌焼き</td>
      <td>398.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>曇</td>
      <td>0.0</td>
      <td>25.1</td>
      <td>8</td>
      <td>29</td>
      <td>下旬</td>
      <td>3.5</td>
      <td>22.566667</td>
      <td>0.162037</td>
    </tr>
    <tr>
      <th>2014-08-12</th>
      <td>40</td>
      <td>火</td>
      <td>1</td>
      <td>厚切ハムカツ</td>
      <td>400.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>雨</td>
      <td>0.0</td>
      <td>29.4</td>
      <td>8</td>
      <td>12</td>
      <td>中旬</td>
      <td>-3.0</td>
      <td>31.300000</td>
      <td>-0.092593</td>
    </tr>
    <tr>
      <th>2014-09-30</th>
      <td>40</td>
      <td>火</td>
      <td>0</td>
      <td>鶏肉とカシューナッツ炒め</td>
      <td>398.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>快晴</td>
      <td>0.0</td>
      <td>28.1</td>
      <td>9</td>
      <td>30</td>
      <td>下旬</td>
      <td>1.5</td>
      <td>26.700000</td>
      <td>0.056391</td>
    </tr>
    <tr>
      <th>2014-09-05</th>
      <td>43</td>
      <td>金</td>
      <td>0</td>
      <td>メンチカツ</td>
      <td>380.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>晴れ</td>
      <td>0.0</td>
      <td>30.2</td>
      <td>9</td>
      <td>5</td>
      <td>上旬</td>
      <td>3.7</td>
      <td>27.800000</td>
      <td>0.139623</td>
    </tr>
    <tr>
      <th>2014-08-11</th>
      <td>45</td>
      <td>月</td>
      <td>0</td>
      <td>サーモンフライ・タルタル</td>
      <td>411.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>晴れ</td>
      <td>0.0</td>
      <td>32.4</td>
      <td>8</td>
      <td>11</td>
      <td>中旬</td>
      <td>0.3</td>
      <td>33.033333</td>
      <td>0.009346</td>
    </tr>
    <tr>
      <th>2014-09-19</th>
      <td>45</td>
      <td>金</td>
      <td>0</td>
      <td>厚切イカフライ</td>
      <td>400.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>薄曇</td>
      <td>0.0</td>
      <td>23.6</td>
      <td>9</td>
      <td>19</td>
      <td>中旬</td>
      <td>-0.5</td>
      <td>24.233333</td>
      <td>-0.020747</td>
    </tr>
    <tr>
      <th>2014-09-18</th>
      <td>46</td>
      <td>木</td>
      <td>0</td>
      <td>カレイ唐揚げ 甘酢あん</td>
      <td>395.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>曇</td>
      <td>0.0</td>
      <td>24.1</td>
      <td>9</td>
      <td>18</td>
      <td>中旬</td>
      <td>-0.9</td>
      <td>25.966667</td>
      <td>-0.036000</td>
    </tr>
    <tr>
      <th>2014-05-02</th>
      <td>47</td>
      <td>金</td>
      <td>0</td>
      <td>鶏の天ぷら</td>
      <td>420.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>晴れ</td>
      <td>0.0</td>
      <td>23.3</td>
      <td>5</td>
      <td>2</td>
      <td>上旬</td>
      <td>-0.7</td>
      <td>21.600000</td>
      <td>-0.029167</td>
    </tr>
  </tbody>
</table>
</div>




```python
# sort_valuesは複数の列に対しても実行できる
df.sort_values(['sales', 'temperature'], ascending=False).head() # ascending=Falseで昇順
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>sales</th>
      <th>week</th>
      <th>soldout</th>
      <th>name</th>
      <th>kcal</th>
      <th>event</th>
      <th>payday</th>
      <th>weather</th>
      <th>precipitation</th>
      <th>temperature</th>
      <th>month</th>
      <th>day</th>
      <th>period</th>
      <th>temperature_diff</th>
      <th>temperature_rolling_mean</th>
      <th>temperature_pct_change</th>
    </tr>
    <tr>
      <th>datetime</th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2014-02-03</th>
      <td>139</td>
      <td>月</td>
      <td>1</td>
      <td>ハンバーグカレーソース</td>
      <td>445.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>晴れ</td>
      <td>0.0</td>
      <td>15.9</td>
      <td>2</td>
      <td>3</td>
      <td>上旬</td>
      <td>1.8</td>
      <td>15.100000</td>
      <td>0.127660</td>
    </tr>
    <tr>
      <th>2014-02-17</th>
      <td>137</td>
      <td>月</td>
      <td>1</td>
      <td>チンジャオロース</td>
      <td>416.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>晴れ</td>
      <td>0.0</td>
      <td>11.6</td>
      <td>2</td>
      <td>17</td>
      <td>中旬</td>
      <td>10.4</td>
      <td>6.400000</td>
      <td>8.666667</td>
    </tr>
    <tr>
      <th>2014-02-10</th>
      <td>137</td>
      <td>月</td>
      <td>0</td>
      <td>鶏の唐揚げおろしソース</td>
      <td>423.0</td>
      <td>NaN</td>
      <td>1.0</td>
      <td>曇</td>
      <td>0.0</td>
      <td>7.8</td>
      <td>2</td>
      <td>10</td>
      <td>上旬</td>
      <td>2.3</td>
      <td>5.833333</td>
      <td>0.418182</td>
    </tr>
    <tr>
      <th>2014-01-15</th>
      <td>134</td>
      <td>水</td>
      <td>0</td>
      <td>さんま辛味焼</td>
      <td>450.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>曇</td>
      <td>0.0</td>
      <td>2.9</td>
      <td>1</td>
      <td>15</td>
      <td>中旬</td>
      <td>-2.9</td>
      <td>4.600000</td>
      <td>-0.500000</td>
    </tr>
    <tr>
      <th>2014-03-03</th>
      <td>131</td>
      <td>月</td>
      <td>0</td>
      <td>ハンバーグカレーソース</td>
      <td>407.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>曇</td>
      <td>0.0</td>
      <td>7.8</td>
      <td>3</td>
      <td>3</td>
      <td>上旬</td>
      <td>-9.9</td>
      <td>11.333333</td>
      <td>-0.559322</td>
    </tr>
    <tr>
      <th>2014-03-17</th>
      <td>129</td>
      <td>月</td>
      <td>0</td>
      <td>鶏の唐揚げおろしソース</td>
      <td>382.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>快晴</td>
      <td>0.0</td>
      <td>14.0</td>
      <td>3</td>
      <td>17</td>
      <td>中旬</td>
      <td>2.5</td>
      <td>13.566667</td>
      <td>0.217391</td>
    </tr>
    <tr>
      <th>2014-01-09</th>
      <td>129</td>
      <td>木</td>
      <td>1</td>
      <td>鶏チリソース</td>
      <td>435.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>曇</td>
      <td>0.0</td>
      <td>10.9</td>
      <td>1</td>
      <td>9</td>
      <td>上旬</td>
      <td>1.1</td>
      <td>9.333333</td>
      <td>0.112245</td>
    </tr>
    <tr>
      <th>2014-01-21</th>
      <td>129</td>
      <td>火</td>
      <td>1</td>
      <td>サバ焼味噌掛け</td>
      <td>447.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>快晴</td>
      <td>0.0</td>
      <td>10.4</td>
      <td>1</td>
      <td>21</td>
      <td>下旬</td>
      <td>3.9</td>
      <td>8.233333</td>
      <td>0.600000</td>
    </tr>
    <tr>
      <th>2014-02-24</th>
      <td>129</td>
      <td>月</td>
      <td>1</td>
      <td>ポークハヤシ</td>
      <td>408.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>曇</td>
      <td>0.0</td>
      <td>6.6</td>
      <td>2</td>
      <td>24</td>
      <td>下旬</td>
      <td>-1.9</td>
      <td>6.833333</td>
      <td>-0.223529</td>
    </tr>
    <tr>
      <th>2014-01-14</th>
      <td>129</td>
      <td>火</td>
      <td>1</td>
      <td>鶏の照り焼きマスタード</td>
      <td>376.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>晴れ</td>
      <td>0.0</td>
      <td>5.8</td>
      <td>1</td>
      <td>14</td>
      <td>中旬</td>
      <td>0.7</td>
      <td>7.266667</td>
      <td>0.137255</td>
    </tr>
  </tbody>
</table>
</div>




```python
# indexのデータ型を確認してみる
df.index #  dtype='object'であることがわかる
```




    Index(['2013-11-18', '2013-11-19', '2013-11-20', '2013-11-21', '2013-11-22',
           '2013-11-25', '2013-11-26', '2013-11-27', '2013-11-28', '2013-11-29',
           ...
           '2014-9-16', '2014-9-17', '2014-9-18', '2014-9-19', '2014-9-22',
           '2014-9-24', '2014-9-25', '2014-9-26', '2014-9-29', '2014-9-30'],
          dtype='object', name='datetime', length=207)




```python
# indexであるdatetimeのdtype='object' を dtype='datetime64[ns]' に変更
df.index = pd.to_datetime(df.index, format='%Y-%m-%d')
```


```python
df.index # dtype='datetime64[ns]'になった
```




    DatetimeIndex(['2013-11-18', '2013-11-19', '2013-11-20', '2013-11-21',
                   '2013-11-22', '2013-11-25', '2013-11-26', '2013-11-27',
                   '2013-11-28', '2013-11-29',
                   ...
                   '2014-09-16', '2014-09-17', '2014-09-18', '2014-09-19',
                   '2014-09-22', '2014-09-24', '2014-09-25', '2014-09-26',
                   '2014-09-29', '2014-09-30'],
                  dtype='datetime64[ns]', name='datetime', length=207, freq=None)



### indexがdatetime型のときにできること


```python
# indexに対してsortを行う
df.sort_index().head() # object型のままだと正しくsortされない
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>sales</th>
      <th>week</th>
      <th>soldout</th>
      <th>name</th>
      <th>kcal</th>
      <th>event</th>
      <th>payday</th>
      <th>weather</th>
      <th>precipitation</th>
      <th>temperature</th>
      <th>month</th>
      <th>day</th>
      <th>period</th>
      <th>temperature_diff</th>
      <th>temperature_rolling_mean</th>
      <th>temperature_pct_change</th>
    </tr>
    <tr>
      <th>datetime</th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2014-01-09</th>
      <td>129</td>
      <td>木</td>
      <td>1</td>
      <td>鶏チリソース</td>
      <td>435.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>曇</td>
      <td>0.0</td>
      <td>10.9</td>
      <td>1</td>
      <td>9</td>
      <td>上旬</td>
      <td>1.1</td>
      <td>9.333333</td>
      <td>0.112245</td>
    </tr>
    <tr>
      <th>2014-01-10</th>
      <td>87</td>
      <td>金</td>
      <td>0</td>
      <td>手作りロースカツ</td>
      <td>440.0</td>
      <td>NaN</td>
      <td>1.0</td>
      <td>快晴</td>
      <td>0.0</td>
      <td>5.1</td>
      <td>1</td>
      <td>10</td>
      <td>上旬</td>
      <td>-5.8</td>
      <td>8.600000</td>
      <td>-0.532110</td>
    </tr>
    <tr>
      <th>2014-01-14</th>
      <td>129</td>
      <td>火</td>
      <td>1</td>
      <td>鶏の照り焼きマスタード</td>
      <td>376.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>晴れ</td>
      <td>0.0</td>
      <td>5.8</td>
      <td>1</td>
      <td>14</td>
      <td>中旬</td>
      <td>0.7</td>
      <td>7.266667</td>
      <td>0.137255</td>
    </tr>
    <tr>
      <th>2014-01-15</th>
      <td>134</td>
      <td>水</td>
      <td>0</td>
      <td>さんま辛味焼</td>
      <td>450.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>曇</td>
      <td>0.0</td>
      <td>2.9</td>
      <td>1</td>
      <td>15</td>
      <td>中旬</td>
      <td>-2.9</td>
      <td>4.600000</td>
      <td>-0.500000</td>
    </tr>
    <tr>
      <th>2014-01-16</th>
      <td>107</td>
      <td>木</td>
      <td>0</td>
      <td>カレイ唐揚げ野菜あんかけ</td>
      <td>415.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>快晴</td>
      <td>0.0</td>
      <td>7.0</td>
      <td>1</td>
      <td>16</td>
      <td>中旬</td>
      <td>4.1</td>
      <td>5.233333</td>
      <td>1.413793</td>
    </tr>
  </tbody>
</table>
</div>




```python
# resampleメソッドで、日単位や月単位で簡単に集計できる
df.resample('M').mean() #月単位で平均値を出力
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>sales</th>
      <th>soldout</th>
      <th>kcal</th>
      <th>payday</th>
      <th>temperature</th>
    </tr>
    <tr>
      <th>datetime</th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2013-11-30</th>
      <td>124.600000</td>
      <td>0.500000</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>16.060000</td>
    </tr>
    <tr>
      <th>2013-12-31</th>
      <td>139.722222</td>
      <td>0.444444</td>
      <td>NaN</td>
      <td>1.0</td>
      <td>10.844444</td>
    </tr>
    <tr>
      <th>2014-01-31</th>
      <td>115.222222</td>
      <td>0.611111</td>
      <td>427.555556</td>
      <td>1.0</td>
      <td>8.716667</td>
    </tr>
    <tr>
      <th>2014-02-28</th>
      <td>107.842105</td>
      <td>0.526316</td>
      <td>420.947368</td>
      <td>1.0</td>
      <td>7.815789</td>
    </tr>
    <tr>
      <th>2014-03-31</th>
      <td>89.350000</td>
      <td>0.450000</td>
      <td>382.157895</td>
      <td>1.0</td>
      <td>12.505000</td>
    </tr>
    <tr>
      <th>2014-04-30</th>
      <td>85.761905</td>
      <td>0.476190</td>
      <td>360.000000</td>
      <td>1.0</td>
      <td>18.176190</td>
    </tr>
    <tr>
      <th>2014-05-31</th>
      <td>74.200000</td>
      <td>0.550000</td>
      <td>419.111111</td>
      <td>1.0</td>
      <td>22.505000</td>
    </tr>
    <tr>
      <th>2014-06-30</th>
      <td>67.285714</td>
      <td>0.333333</td>
      <td>423.315789</td>
      <td>1.0</td>
      <td>25.409524</td>
    </tr>
    <tr>
      <th>2014-07-31</th>
      <td>61.363636</td>
      <td>0.454545</td>
      <td>397.200000</td>
      <td>1.0</td>
      <td>29.350000</td>
    </tr>
    <tr>
      <th>2014-08-31</th>
      <td>61.166667</td>
      <td>0.333333</td>
      <td>403.187500</td>
      <td>1.0</td>
      <td>30.227778</td>
    </tr>
    <tr>
      <th>2014-09-30</th>
      <td>55.550000</td>
      <td>0.300000</td>
      <td>408.611111</td>
      <td>1.0</td>
      <td>25.935000</td>
    </tr>
  </tbody>
</table>
</div>




```python
# 簡単にmonth列やday列を作れるようになる
df['month'] = list(pd.Series(df.index).apply(lambda x: x.month))
df['day'] = list(pd.Series(df.index).apply(lambda x: x.day))

df.head()
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>sales</th>
      <th>week</th>
      <th>soldout</th>
      <th>name</th>
      <th>kcal</th>
      <th>remarks</th>
      <th>event</th>
      <th>payday</th>
      <th>weather</th>
      <th>precipitation</th>
      <th>temperature</th>
      <th>month</th>
      <th>day</th>
    </tr>
    <tr>
      <th>datetime</th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2013-11-18</th>
      <td>90</td>
      <td>月</td>
      <td>0</td>
      <td>厚切りイカフライ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>19.8</td>
      <td>11</td>
      <td>18</td>
    </tr>
    <tr>
      <th>2013-11-19</th>
      <td>101</td>
      <td>火</td>
      <td>1</td>
      <td>手作りヒレカツ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>17.0</td>
      <td>11</td>
      <td>19</td>
    </tr>
    <tr>
      <th>2013-11-20</th>
      <td>118</td>
      <td>水</td>
      <td>0</td>
      <td>白身魚唐揚げ野菜あん</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>15.5</td>
      <td>11</td>
      <td>20</td>
    </tr>
    <tr>
      <th>2013-11-21</th>
      <td>120</td>
      <td>木</td>
      <td>1</td>
      <td>若鶏ピリ辛焼</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>15.2</td>
      <td>11</td>
      <td>21</td>
    </tr>
    <tr>
      <th>2013-11-22</th>
      <td>130</td>
      <td>金</td>
      <td>1</td>
      <td>ビッグメンチカツ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>16.1</td>
      <td>11</td>
      <td>22</td>
    </tr>
  </tbody>
</table>
</div>




```python
# cutメソッドでヒストグラムのビン指定的な処理ができる
labels = ['上旬', '中旬', '下旬']
df['period'] = pd.cut(list(df['day']),  bins=[0,10,20,31], labels=labels, right=True) # 0<day≦10, 10<day≦20, 20<day≦31

df.head()
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>sales</th>
      <th>week</th>
      <th>soldout</th>
      <th>name</th>
      <th>kcal</th>
      <th>remarks</th>
      <th>event</th>
      <th>payday</th>
      <th>weather</th>
      <th>precipitation</th>
      <th>temperature</th>
      <th>month</th>
      <th>day</th>
      <th>period</th>
    </tr>
    <tr>
      <th>datetime</th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2013-11-18</th>
      <td>90</td>
      <td>月</td>
      <td>0</td>
      <td>厚切りイカフライ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>19.8</td>
      <td>11</td>
      <td>18</td>
      <td>中旬</td>
    </tr>
    <tr>
      <th>2013-11-19</th>
      <td>101</td>
      <td>火</td>
      <td>1</td>
      <td>手作りヒレカツ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>17.0</td>
      <td>11</td>
      <td>19</td>
      <td>中旬</td>
    </tr>
    <tr>
      <th>2013-11-20</th>
      <td>118</td>
      <td>水</td>
      <td>0</td>
      <td>白身魚唐揚げ野菜あん</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>15.5</td>
      <td>11</td>
      <td>20</td>
      <td>中旬</td>
    </tr>
    <tr>
      <th>2013-11-21</th>
      <td>120</td>
      <td>木</td>
      <td>1</td>
      <td>若鶏ピリ辛焼</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>15.2</td>
      <td>11</td>
      <td>21</td>
      <td>下旬</td>
    </tr>
    <tr>
      <th>2013-11-22</th>
      <td>130</td>
      <td>金</td>
      <td>1</td>
      <td>ビッグメンチカツ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>16.1</td>
      <td>11</td>
      <td>22</td>
      <td>下旬</td>
    </tr>
  </tbody>
</table>
</div>



## ④ データの欠損状態の確認
データに欠損値NaN(not a number)があるともろもろ問題がでてきます。今のデータにどれくらい欠損があるかをまずはざっと確認します。


```python
# 列単位で 欠損値NaN(not a number)が入っている個数をカウントする （正確には、isnull()でtrueが返ってくる個数をカウントしている）
df.isnull().sum()
```




    sales              0
    week               0
    soldout            0
    name               0
    kcal              41
    remarks          186
    event            193
    payday           197
    weather            0
    precipitation      0
    temperature        0
    month              0
    day                0
    period             0
    dtype: int64




```python
# 1つでもNaNが含まれる行だけを抽出（最初の5行のみ表示）
print(df[df.isnull().any(axis=1)].shape)
df[df.isnull().any(axis=1)].head()
```

    (207, 14)





<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>sales</th>
      <th>week</th>
      <th>soldout</th>
      <th>name</th>
      <th>kcal</th>
      <th>remarks</th>
      <th>event</th>
      <th>payday</th>
      <th>weather</th>
      <th>precipitation</th>
      <th>temperature</th>
      <th>month</th>
      <th>day</th>
      <th>period</th>
    </tr>
    <tr>
      <th>datetime</th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2013-11-18</th>
      <td>90</td>
      <td>月</td>
      <td>0</td>
      <td>厚切りイカフライ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>19.8</td>
      <td>11</td>
      <td>18</td>
      <td>中旬</td>
    </tr>
    <tr>
      <th>2013-11-19</th>
      <td>101</td>
      <td>火</td>
      <td>1</td>
      <td>手作りヒレカツ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>17.0</td>
      <td>11</td>
      <td>19</td>
      <td>中旬</td>
    </tr>
    <tr>
      <th>2013-11-20</th>
      <td>118</td>
      <td>水</td>
      <td>0</td>
      <td>白身魚唐揚げ野菜あん</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>15.5</td>
      <td>11</td>
      <td>20</td>
      <td>中旬</td>
    </tr>
    <tr>
      <th>2013-11-21</th>
      <td>120</td>
      <td>木</td>
      <td>1</td>
      <td>若鶏ピリ辛焼</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>15.2</td>
      <td>11</td>
      <td>21</td>
      <td>下旬</td>
    </tr>
    <tr>
      <th>2013-11-22</th>
      <td>130</td>
      <td>金</td>
      <td>1</td>
      <td>ビッグメンチカツ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>快晴</td>
      <td>--</td>
      <td>16.1</td>
      <td>11</td>
      <td>22</td>
      <td>下旬</td>
    </tr>
  </tbody>
</table>
</div>



## ⑤ 値（欠損）の置き換えや削除
確認できた欠損値をなくすために欠損の削除や別の値への置き換えを行います。


```python
# 'payday'列にあるNaNを'0.0'に置き換える
df.fillna(value={'payday': 0.0}, inplace=True)
df.head()
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>sales</th>
      <th>week</th>
      <th>soldout</th>
      <th>name</th>
      <th>kcal</th>
      <th>remarks</th>
      <th>event</th>
      <th>payday</th>
      <th>weather</th>
      <th>precipitation</th>
      <th>temperature</th>
      <th>month</th>
      <th>day</th>
      <th>period</th>
    </tr>
    <tr>
      <th>datetime</th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2013-11-18</th>
      <td>90</td>
      <td>月</td>
      <td>0</td>
      <td>厚切りイカフライ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>快晴</td>
      <td>--</td>
      <td>19.8</td>
      <td>11</td>
      <td>18</td>
      <td>中旬</td>
    </tr>
    <tr>
      <th>2013-11-19</th>
      <td>101</td>
      <td>火</td>
      <td>1</td>
      <td>手作りヒレカツ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>快晴</td>
      <td>--</td>
      <td>17.0</td>
      <td>11</td>
      <td>19</td>
      <td>中旬</td>
    </tr>
    <tr>
      <th>2013-11-20</th>
      <td>118</td>
      <td>水</td>
      <td>0</td>
      <td>白身魚唐揚げ野菜あん</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>快晴</td>
      <td>--</td>
      <td>15.5</td>
      <td>11</td>
      <td>20</td>
      <td>中旬</td>
    </tr>
    <tr>
      <th>2013-11-21</th>
      <td>120</td>
      <td>木</td>
      <td>1</td>
      <td>若鶏ピリ辛焼</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>快晴</td>
      <td>--</td>
      <td>15.2</td>
      <td>11</td>
      <td>21</td>
      <td>下旬</td>
    </tr>
    <tr>
      <th>2013-11-22</th>
      <td>130</td>
      <td>金</td>
      <td>1</td>
      <td>ビッグメンチカツ</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>快晴</td>
      <td>--</td>
      <td>16.1</td>
      <td>11</td>
      <td>22</td>
      <td>下旬</td>
    </tr>
  </tbody>
</table>
</div>




```python
df.isnull().sum() # 'payday'が0になった
```




    sales              0
    week               0
    soldout            0
    name               0
    kcal              41
    remarks          186
    event            193
    payday             0
    weather            0
    precipitation      0
    temperature        0
    month              0
    day                0
    period             0
    dtype: int64




```python
# 'kcal'列にNaNがある行を削除する
df.dropna(subset=['kcal'], axis=0, inplace=True)
print(df.shape) # 207-166=41行のデータを削除した
```

    (166, 14)



```python
df.isnull().sum() # kcal'がNaNがなくなって0になっていることがわかる
```




    sales              0
    week               0
    soldout            0
    name               0
    kcal               0
    remarks          158
    event            155
    payday             0
    weather            0
    precipitation      0
    temperature        0
    month              0
    day                0
    period             0
    dtype: int64




```python
# 'precipitation' 列の '--' を 0に置き換える
df['precipitation'] = df['precipitation'].str.replace('--', 0).astype(float)
df.head()
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>sales</th>
      <th>week</th>
      <th>soldout</th>
      <th>name</th>
      <th>kcal</th>
      <th>remarks</th>
      <th>event</th>
      <th>payday</th>
      <th>weather</th>
      <th>precipitation</th>
      <th>temperature</th>
      <th>month</th>
      <th>day</th>
      <th>period</th>
    </tr>
    <tr>
      <th>datetime</th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2014-01-07</th>
      <td>131</td>
      <td>火</td>
      <td>0</td>
      <td>カレー入りソーセージカツ</td>
      <td>404.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>快晴</td>
      <td>0.0</td>
      <td>7.3</td>
      <td>1</td>
      <td>7</td>
      <td>上旬</td>
    </tr>
    <tr>
      <th>2014-01-08</th>
      <td>128</td>
      <td>水</td>
      <td>0</td>
      <td>豚肉の生姜焼</td>
      <td>462.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>曇</td>
      <td>0.0</td>
      <td>9.8</td>
      <td>1</td>
      <td>8</td>
      <td>上旬</td>
    </tr>
    <tr>
      <th>2014-01-09</th>
      <td>129</td>
      <td>木</td>
      <td>1</td>
      <td>鶏チリソース</td>
      <td>435.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>曇</td>
      <td>0.0</td>
      <td>10.9</td>
      <td>1</td>
      <td>9</td>
      <td>上旬</td>
    </tr>
    <tr>
      <th>2014-01-10</th>
      <td>87</td>
      <td>金</td>
      <td>0</td>
      <td>手作りロースカツ</td>
      <td>440.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>1.0</td>
      <td>快晴</td>
      <td>0.0</td>
      <td>5.1</td>
      <td>1</td>
      <td>10</td>
      <td>上旬</td>
    </tr>
    <tr>
      <th>2014-01-14</th>
      <td>129</td>
      <td>火</td>
      <td>1</td>
      <td>鶏の照り焼きマスタード</td>
      <td>376.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>晴れ</td>
      <td>0.0</td>
      <td>5.8</td>
      <td>1</td>
      <td>14</td>
      <td>中旬</td>
    </tr>
  </tbody>
</table>
</div>




```python
# maskメソッドを使う例。'sales'列が80よりも大きければ、その値を100に置換する
pd.DataFrame(df['sales'].mask(df['sales'] > 80, 100)).head()
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>sales</th>
    </tr>
    <tr>
      <th>datetime</th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2014-01-07</th>
      <td>100</td>
    </tr>
    <tr>
      <th>2014-01-08</th>
      <td>100</td>
    </tr>
    <tr>
      <th>2014-01-09</th>
      <td>100</td>
    </tr>
    <tr>
      <th>2014-01-10</th>
      <td>100</td>
    </tr>
    <tr>
      <th>2014-01-14</th>
      <td>100</td>
    </tr>
  </tbody>
</table>
</div>




```python
# 'remarks(備考)'はデータとして不要な気がするので、データから列ごと削除
df.drop(['remarks'], axis=1, inplace=True)
df.head()
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>sales</th>
      <th>week</th>
      <th>soldout</th>
      <th>name</th>
      <th>kcal</th>
      <th>event</th>
      <th>payday</th>
      <th>weather</th>
      <th>precipitation</th>
      <th>temperature</th>
      <th>month</th>
      <th>day</th>
      <th>period</th>
    </tr>
    <tr>
      <th>datetime</th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2014-01-07</th>
      <td>131</td>
      <td>火</td>
      <td>0</td>
      <td>カレー入りソーセージカツ</td>
      <td>404.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>快晴</td>
      <td>0.0</td>
      <td>7.3</td>
      <td>1</td>
      <td>7</td>
      <td>上旬</td>
    </tr>
    <tr>
      <th>2014-01-08</th>
      <td>128</td>
      <td>水</td>
      <td>0</td>
      <td>豚肉の生姜焼</td>
      <td>462.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>曇</td>
      <td>0.0</td>
      <td>9.8</td>
      <td>1</td>
      <td>8</td>
      <td>上旬</td>
    </tr>
    <tr>
      <th>2014-01-09</th>
      <td>129</td>
      <td>木</td>
      <td>1</td>
      <td>鶏チリソース</td>
      <td>435.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>曇</td>
      <td>0.0</td>
      <td>10.9</td>
      <td>1</td>
      <td>9</td>
      <td>上旬</td>
    </tr>
    <tr>
      <th>2014-01-10</th>
      <td>87</td>
      <td>金</td>
      <td>0</td>
      <td>手作りロースカツ</td>
      <td>440.0</td>
      <td>NaN</td>
      <td>1.0</td>
      <td>快晴</td>
      <td>0.0</td>
      <td>5.1</td>
      <td>1</td>
      <td>10</td>
      <td>上旬</td>
    </tr>
    <tr>
      <th>2014-01-14</th>
      <td>129</td>
      <td>火</td>
      <td>1</td>
      <td>鶏の照り焼きマスタード</td>
      <td>376.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>晴れ</td>
      <td>0.0</td>
      <td>5.8</td>
      <td>1</td>
      <td>14</td>
      <td>中旬</td>
    </tr>
  </tbody>
</table>
</div>



## ⑥ 集計
ここまででデータはある程度きれいになった気がするので簡単に集計をしてみます。


```python
# weather列の集計
df['weather'].value_counts()
```




    曇     44
    晴れ    41
    快晴    34
    薄曇    23
    雨     22
    雷電     1
    雪      1
    Name: weather, dtype: int64




```python
# groupbyメソッドで、'week'列ごとに'soldout'の数をカウントする
df.groupby(['week'])['soldout'].count()
```




    week
    月    34
    木    37
    水    37
    火    35
    金    23
    Name: soldout, dtype: int64




```python
# groupbyメソッドは複数列に対しても行える
# groupbyメソッドで、'month', 'period'列ごとに'sales'の数を合計する
df.groupby(['month', 'period'])['sales'].sum()
```




    month  period
    1      上旬         475
           中旬         581
           下旬        1018
    2      上旬         725
           中旬         715
           下旬         609
    3      上旬         614
           中旬         698
           下旬         369
    4      上旬         792
           中旬         344
           下旬         457
    5      上旬         316
           中旬         406
           下旬         517
    6      上旬         467
           中旬         440
           下旬         311
    7      上旬         460
           中旬         277
           下旬         406
    8      上旬         288
           中旬         250
           下旬         334
    9      上旬         468
           中旬         249
           下旬         234
    Name: sales, dtype: int64




```python
# wetherごとにtemperatureの平均値を出す
df.groupby(['weather'])['temperature'].mean()
```




    weather
    快晴    15.294118
    晴れ    22.558537
    曇     19.377273
    薄曇    23.926087
    雨     18.813636
    雪      1.200000
    雷電    19.000000
    Name: temperature, dtype: float64




```python
# 前行との差分が欲しい時は .diff() を使う
df['temperature_diff'] = df['temperature'].diff(periods=1)
df[['temperature','temperature_diff']].head()
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>temperature</th>
      <th>temperature_diff</th>
    </tr>
    <tr>
      <th>datetime</th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2014-01-07</th>
      <td>7.3</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>2014-01-08</th>
      <td>9.8</td>
      <td>2.5</td>
    </tr>
    <tr>
      <th>2014-01-09</th>
      <td>10.9</td>
      <td>1.1</td>
    </tr>
    <tr>
      <th>2014-01-10</th>
      <td>5.1</td>
      <td>-5.8</td>
    </tr>
    <tr>
      <th>2014-01-14</th>
      <td>5.8</td>
      <td>0.7</td>
    </tr>
  </tbody>
</table>
</div>




```python
# 'temperature'列について、頭からwindowサイズ3で移動平均を計算する
df['temperature_rolling_mean'] = df['temperature'].rolling(window=3).mean()
df[['temperature', 'temperature_diff', 'temperature_rolling_mean']].head()
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>temperature</th>
      <th>temperature_diff</th>
      <th>temperature_rolling_mean</th>
    </tr>
    <tr>
      <th>datetime</th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2014-01-07</th>
      <td>7.3</td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>2014-01-08</th>
      <td>9.8</td>
      <td>2.5</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>2014-01-09</th>
      <td>10.9</td>
      <td>1.1</td>
      <td>9.333333</td>
    </tr>
    <tr>
      <th>2014-01-10</th>
      <td>5.1</td>
      <td>-5.8</td>
      <td>8.600000</td>
    </tr>
    <tr>
      <th>2014-01-14</th>
      <td>5.8</td>
      <td>0.7</td>
      <td>7.266667</td>
    </tr>
  </tbody>
</table>
</div>




```python
df['temperature_pct_change'] = df['temperature'].pct_change()
df[['temperature', 'temperature_diff', 'temperature_rolling_mean', 'temperature_pct_change']].head()
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>temperature</th>
      <th>temperature_diff</th>
      <th>temperature_rolling_mean</th>
      <th>temperature_pct_change</th>
    </tr>
    <tr>
      <th>datetime</th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2014-01-07</th>
      <td>7.3</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>2014-01-08</th>
      <td>9.8</td>
      <td>2.5</td>
      <td>NaN</td>
      <td>0.342466</td>
    </tr>
    <tr>
      <th>2014-01-09</th>
      <td>10.9</td>
      <td>1.1</td>
      <td>9.333333</td>
      <td>0.112245</td>
    </tr>
    <tr>
      <th>2014-01-10</th>
      <td>5.1</td>
      <td>-5.8</td>
      <td>8.600000</td>
      <td>-0.532110</td>
    </tr>
    <tr>
      <th>2014-01-14</th>
      <td>5.8</td>
      <td>0.7</td>
      <td>7.266667</td>
      <td>0.137255</td>
    </tr>
  </tbody>
</table>
</div>




```python
# 'temperature'列に一つでもNaNがある行を削除
df.dropna(subset=['temperature_diff', 'temperature_rolling_mean', 'temperature_pct_change'], axis=0, inplace=True)
```


```python
# 改めて、各列にNaNが入っていないか確認
df.isnull().sum() 
```




    sales                         0
    week                          0
    soldout                       0
    name                          0
    kcal                          0
    event                       153
    payday                        0
    weather                       0
    precipitation                 0
    temperature                   0
    month                         0
    day                           0
    period                        0
    temperature_diff              0
    temperature_rolling_mean      0
    temperature_pct_change        0
    dtype: int64




```python
df.head()
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>sales</th>
      <th>week</th>
      <th>soldout</th>
      <th>name</th>
      <th>kcal</th>
      <th>event</th>
      <th>payday</th>
      <th>weather</th>
      <th>precipitation</th>
      <th>temperature</th>
      <th>month</th>
      <th>day</th>
      <th>period</th>
      <th>temperature_diff</th>
      <th>temperature_rolling_mean</th>
      <th>temperature_pct_change</th>
    </tr>
    <tr>
      <th>datetime</th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2014-01-09</th>
      <td>129</td>
      <td>木</td>
      <td>1</td>
      <td>鶏チリソース</td>
      <td>435.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>曇</td>
      <td>0.0</td>
      <td>10.9</td>
      <td>1</td>
      <td>9</td>
      <td>上旬</td>
      <td>1.1</td>
      <td>9.333333</td>
      <td>0.112245</td>
    </tr>
    <tr>
      <th>2014-01-10</th>
      <td>87</td>
      <td>金</td>
      <td>0</td>
      <td>手作りロースカツ</td>
      <td>440.0</td>
      <td>NaN</td>
      <td>1.0</td>
      <td>快晴</td>
      <td>0.0</td>
      <td>5.1</td>
      <td>1</td>
      <td>10</td>
      <td>上旬</td>
      <td>-5.8</td>
      <td>8.600000</td>
      <td>-0.532110</td>
    </tr>
    <tr>
      <th>2014-01-14</th>
      <td>129</td>
      <td>火</td>
      <td>1</td>
      <td>鶏の照り焼きマスタード</td>
      <td>376.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>晴れ</td>
      <td>0.0</td>
      <td>5.8</td>
      <td>1</td>
      <td>14</td>
      <td>中旬</td>
      <td>0.7</td>
      <td>7.266667</td>
      <td>0.137255</td>
    </tr>
    <tr>
      <th>2014-01-15</th>
      <td>134</td>
      <td>水</td>
      <td>0</td>
      <td>さんま辛味焼</td>
      <td>450.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>曇</td>
      <td>0.0</td>
      <td>2.9</td>
      <td>1</td>
      <td>15</td>
      <td>中旬</td>
      <td>-2.9</td>
      <td>4.600000</td>
      <td>-0.500000</td>
    </tr>
    <tr>
      <th>2014-01-16</th>
      <td>107</td>
      <td>木</td>
      <td>0</td>
      <td>カレイ唐揚げ野菜あんかけ</td>
      <td>415.0</td>
      <td>NaN</td>
      <td>0.0</td>
      <td>快晴</td>
      <td>0.0</td>
      <td>7.0</td>
      <td>1</td>
      <td>16</td>
      <td>中旬</td>
      <td>4.1</td>
      <td>5.233333</td>
      <td>1.413793</td>
    </tr>
  </tbody>
</table>
</div>



## ⑦ 可視化

Pythonでデータから図を描写（可視化）する際はmatplotlibがよく使われますが、matplotlibは図を描写するために細かいパラメータが複数必要となり、初学者にとっては本質的ではないところ時間を取られすぎることがよくあります。

そこで、ここではpandasがメソッドとして用意しているplot機能を使います。
Pandasのplot機能は、作成したデータフレームを対象にして少ない引数で簡単に図を描写できるため、「とにかく図を確認したいだけ」という場合はお手軽で便利です。

（とは言いつつ、matplotlibの方が細かい調整がきくため時間がある時に勉強して操作法は知っておいた方が良いです。）


```python
#jupyternotebook内でmatplotlibで図を描写するときの必須のおまじない
%matplotlib inline 
import matplotlib.pyplot as plt

# おまじない: 以下を実行するとプロットスタイルが変更されていい感じになる
plt.style.use('ggplot') 
```

※注意点
以下の作図では、グラフタイトルや凡例などで図中に日本語を表示する必要があります。
しかし、デフォルト環境では日本語を表示するためのフォントが存在しないため文字化けします（豆腐みたいな記号が表示されます）
日本語フォントを指定する方法はいくつかありますが、ここでは[こちらの方法](https://qiita.com/ysdyt/items/3eb9b438980409c8f3e2)にて表示しています。
ただ、日本語表示のための設定はやや面倒なので、「軸名はどうでもよくて図さえ作成できればいい」という人は適宜日本語箇所を適当なアルファベットに書き換えてください。


```python
# 日本語フォントの設定
from matplotlib.font_manager import FontProperties
font_path = '/Users/ysdyt/Downloads/TakaoPGothic.ttf'  #DLしたフォントのパスを指定
font_prop = FontProperties(fname=font_path)
```


```python
#超単純な折れ線グラフ
df['sales'].plot()
```
![plot1.png](https://qiita-image-store.s3.amazonaws.com/0/100780/6e08f989-20a9-fab1-1adf-32c0aece1e75.png)

売上個数は右肩下がり

```python
# 少しだけ情報量の多い折れ線グラフ
df.plot(y=['temperature', 'temperature_rolling_mean', 'temperature_pct_change'],  figsize=(16,4), alpha=0.5) # x軸がindexである場合は明記しなくても可
plt.title('気温変化に関する図', fontproperties=font_prop) # fontpropertiesは日本語表示に必要
```
![plot2.png](https://qiita-image-store.s3.amazonaws.com/0/100780/938b47a1-b148-fff7-0056-6c1aac02f0b5.png)

```python
# ヒストグラム
df.plot(kind='hist', y='sales' , bins=10, figsize=(16,4), alpha=0.5)
```
![plot3.png](https://qiita-image-store.s3.amazonaws.com/0/100780/78dd3f5c-ead5-27c0-bdf8-433d09575e8d.png)

頻度的には、
- 日別で60個くらい売れている日が多いらしい
- 最大で140個くらい売れている日もあることがわかる　など

```python
# 散布図
df.plot(kind='scatter', x='kcal', y='sales')
```
![plot4.png](https://qiita-image-store.s3.amazonaws.com/0/100780/a8ce651b-3ab9-8a07-ff4d-bf14c9c65a58.png)

- 「売上個数」と「カロリー」には相関がなさそう　など

```python
# ちなみに相関係数はcorrメソッドで簡単に表示できる
df[['kcal', 'sales']].corr()
```

<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>kcal</th>
      <th>sales</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>kcal</th>
      <td>1.000000</td>
      <td>0.129521</td>
    </tr>
    <tr>
      <th>sales</th>
      <td>0.129521</td>
      <td>1.000000</td>
    </tr>
  </tbody>
</table>
</div>

```python
# ちょっとだけ複雑な集計 例: 月別・期間別の売上個数の状況を可視化したい場合
monthly_df = pd.DataFrame(df.groupby(['month', 'period'])['sales'].sum())
pivot_monthly_df = monthly_df.reset_index().pivot(index='month', columns='period', values='sales')
pivot_monthly_df
```

<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th>period</th>
      <th>上旬</th>
      <th>中旬</th>
      <th>下旬</th>
    </tr>
    <tr>
      <th>month</th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>1</th>
      <td>216</td>
      <td>581</td>
      <td>1018</td>
    </tr>
    <tr>
      <th>2</th>
      <td>725</td>
      <td>715</td>
      <td>609</td>
    </tr>
    <tr>
      <th>3</th>
      <td>614</td>
      <td>698</td>
      <td>369</td>
    </tr>
    <tr>
      <th>4</th>
      <td>792</td>
      <td>344</td>
      <td>457</td>
    </tr>
    <tr>
      <th>5</th>
      <td>316</td>
      <td>406</td>
      <td>517</td>
    </tr>
    <tr>
      <th>6</th>
      <td>467</td>
      <td>440</td>
      <td>311</td>
    </tr>
    <tr>
      <th>7</th>
      <td>460</td>
      <td>277</td>
      <td>406</td>
    </tr>
    <tr>
      <th>8</th>
      <td>288</td>
      <td>250</td>
      <td>334</td>
    </tr>
    <tr>
      <th>9</th>
      <td>468</td>
      <td>249</td>
      <td>234</td>
    </tr>
  </tbody>
</table>
</div>

```python
# 棒グラフ
pivot_monthly_df.plot(kind='bar', alpha=0.6, figsize=(12,3)).legend(prop=font_prop) # legend(prop=font_prop)は日本語表示に必要
plt.title('月別・期間別の売上個数', fontproperties=font_prop) # fontpropertiesは日本語表示に必要
```
![plot5.png](https://qiita-image-store.s3.amazonaws.com/0/100780/d90e541e-f2a2-ce60-470f-6896f9a099e9.png)


- 1月は下旬（20日から31日まで）に売上個数が増える傾向
- 4月だと上旬（1日から10日まで）が売上多い
- 月が進むほど、期間に関係なく売上個数が少なくなっていく傾向　など

## ⑧ 変数の前処理

**dummy化について**

![get_dummies.PNG](https://qiita-image-store.s3.amazonaws.com/0/100780/58cdf1c1-9a76-675b-6356-c6cd96440372.png)

```python
# 現在のcolumnを確認
print(df.columns)
print(len(df.columns))
```

    Index(['sales', 'week', 'soldout', 'name', 'kcal', 'event', 'payday',
           'weather', 'precipitation', 'temperature', 'month', 'day', 'period',
           'temperature_diff', 'temperature_rolling_mean',
           'temperature_pct_change'],
          dtype='object')
    16



```python
# テキストデータが入っている列全てをdummy化する
dummy_df = pd.get_dummies(df, columns=['week', 'name', 'event', 'weather', 'period'])
dummy_df.head()
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>sales</th>
      <th>soldout</th>
      <th>kcal</th>
      <th>payday</th>
      <th>precipitation</th>
      <th>temperature</th>
      <th>month</th>
      <th>day</th>
      <th>temperature_diff</th>
      <th>temperature_rolling_mean</th>
      <th>...</th>
      <th>weather_快晴</th>
      <th>weather_晴れ</th>
      <th>weather_曇</th>
      <th>weather_薄曇</th>
      <th>weather_雨</th>
      <th>weather_雪</th>
      <th>weather_雷電</th>
      <th>period_上旬</th>
      <th>period_中旬</th>
      <th>period_下旬</th>
    </tr>
    <tr>
      <th>datetime</th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2014-01-09</th>
      <td>129</td>
      <td>1</td>
      <td>435.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>10.9</td>
      <td>1</td>
      <td>9</td>
      <td>1.1</td>
      <td>9.333333</td>
      <td>...</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>2014-01-10</th>
      <td>87</td>
      <td>0</td>
      <td>440.0</td>
      <td>1.0</td>
      <td>0.0</td>
      <td>5.1</td>
      <td>1</td>
      <td>10</td>
      <td>-5.8</td>
      <td>8.600000</td>
      <td>...</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>2014-01-14</th>
      <td>129</td>
      <td>1</td>
      <td>376.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>5.8</td>
      <td>1</td>
      <td>14</td>
      <td>0.7</td>
      <td>7.266667</td>
      <td>...</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
    </tr>
    <tr>
      <th>2014-01-15</th>
      <td>134</td>
      <td>0</td>
      <td>450.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>2.9</td>
      <td>1</td>
      <td>15</td>
      <td>-2.9</td>
      <td>4.600000</td>
      <td>...</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
    </tr>
    <tr>
      <th>2014-01-16</th>
      <td>107</td>
      <td>0</td>
      <td>415.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>7.0</td>
      <td>1</td>
      <td>16</td>
      <td>4.1</td>
      <td>5.233333</td>
      <td>...</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 157 columns</p>
</div>




```python
# jupyter notebookにおいて、pandasで表示が省略されるのを防ぐ
pd.set_option('display.max_columns', 160) # 160番目の列まで全て強制表示
```


```python
print(dummy_df.shape)
dummy_df.head()
```

    (164, 157)





<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>sales</th>
      <th>soldout</th>
      <th>kcal</th>
      <th>payday</th>
      <th>precipitation</th>
      <th>temperature</th>
      <th>month</th>
      <th>day</th>
      <th>temperature_diff</th>
      <th>temperature_rolling_mean</th>
      <th>temperature_pct_change</th>
      <th>week_月</th>
      <th>week_木</th>
      <th>week_水</th>
      <th>week_火</th>
      <th>week_金</th>
      <th>name_いか天ぷら</th>
      <th>name_かじきの甘辛煮</th>
      <th>name_きのこソースハンバーグ</th>
      <th>name_さわら焼味噌掛け</th>
      <th>name_さんま辛味焼</th>
      <th>name_たっぷりベーコンフライ</th>
      <th>name_ぶりレモンペッパー焼き</th>
      <th>name_ますのマスタードソース</th>
      <th>name_アジ唐揚げ南蛮ソース</th>
      <th>name_エビフライ</th>
      <th>name_カレイの唐揚げ</th>
      <th>name_カレイ唐揚げ 甘酢あん</th>
      <th>name_カレイ唐揚げ夏野菜あん</th>
      <th>name_カレイ唐揚げ野菜あんかけ</th>
      <th>name_カレイ唐揚げ野菜餡かけ</th>
      <th>name_カレイ野菜あんかけ</th>
      <th>name_キスと野菜の天ぷら</th>
      <th>name_キーマカレー</th>
      <th>name_ゴーヤチャンプルー</th>
      <th>name_サバ焼味噌掛け</th>
      <th>name_サーモンのムニエル2色ソース</th>
      <th>name_サーモンフライ・タルタル</th>
      <th>name_ジャンボチキンカツ</th>
      <th>name_ジューシーメンチカツ</th>
      <th>name_タンドリーチキン</th>
      <th>name_チキンのコーンクリーム焼き</th>
      <th>name_チキンの辛味噌焼き</th>
      <th>name_チキンクリームシチュー</th>
      <th>name_チキンステーキ・きのこソース</th>
      <th>name_チキンフリカッセ</th>
      <th>name_チキン南蛮</th>
      <th>name_チキン香草焼きマスタードソース</th>
      <th>name_チャプチェ</th>
      <th>name_チンジャオロース</th>
      <th>name_チーズハンバーグ</th>
      <th>name_チーズメンチカツ</th>
      <th>name_チーズ入りハンバーグ</th>
      <th>name_チーズ入りメンチカツ</th>
      <th>name_ハンバーグカレーソース</th>
      <th>name_ハンバーグケッチャップソース</th>
      <th>name_ハンバーグデミソース</th>
      <th>name_ハンバーグ和風きのこソース</th>
      <th>name_ハンバーグ（デミきのこバター）</th>
      <th>name_バーベキューチキン</th>
      <th>name_ビーフカレー</th>
      <th>name_ビーフシチュー</th>
      <th>name_ビーフストロガノフ</th>
      <th>name_ビーフトマト煮</th>
      <th>name_プルコギ</th>
      <th>name_ホタテクリ―ムシチュー</th>
      <th>name_ボローニャ風カツ</th>
      <th>name_ポークソテー韓国ソース</th>
      <th>name_ポークハヤシ</th>
      <th>name_ポーク生姜焼き</th>
      <th>name_マーボ茄子</th>
      <th>name_マーボ豆腐</th>
      <th>name_メダイ照り焼</th>
      <th>name_メンチカツ</th>
      <th>name_ロース甘味噌焼き</th>
      <th>name_八宝菜</th>
      <th>name_厚切イカフライ</th>
      <th>name_厚切ハムカツ</th>
      <th>name_名古屋味噌カツ</th>
      <th>name_和風ソースハンバーグ</th>
      <th>name_和風ハンバーグ</th>
      <th>name_回鍋肉</th>
      <th>name_手作りひれかつ</th>
      <th>name_手作りひれかつとカレー</th>
      <th>name_手作りチキンカツ</th>
      <th>name_手作りトンカツ</th>
      <th>name_手作りロースカツ</th>
      <th>name_洋食屋さんのメンチカツ</th>
      <th>name_海老クリーミ―クノーデル</th>
      <th>name_海老フライとホタテ串カツ</th>
      <th>name_海老フライタルタル</th>
      <th>name_炊き込みご飯</th>
      <th>name_牛すき焼き風</th>
      <th>name_牛カルビ焼き肉</th>
      <th>name_牛スキヤキ</th>
      <th>name_牛丼風煮</th>
      <th>name_牛肉すき焼き風</th>
      <th>name_牛肉コロッケ</th>
      <th>name_牛肉ニンニクの芽炒め</th>
      <th>name_牛肉筍煮</th>
      <th>name_白身魚のマスタード焼き</th>
      <th>name_白身魚の南部焼き</th>
      <th>name_白身魚フライ</th>
      <th>name_白身魚ムニエル</th>
      <th>name_白身魚唐揚げ野菜あんかけ</th>
      <th>name_白身魚唐揚げ野菜餡かけ</th>
      <th>name_筑前煮</th>
      <th>name_肉じゃが</th>
      <th>name_肉団子のシチュー</th>
      <th>name_肉団子クリームシチュー</th>
      <th>name_親子煮</th>
      <th>name_豚すき焼き</th>
      <th>name_豚の冷しゃぶ</th>
      <th>name_豚キムチ炒め</th>
      <th>name_豚ロースのピザ風チーズ焼き</th>
      <th>name_豚冷シャブ野菜添え</th>
      <th>name_豚味噌メンチカツ</th>
      <th>name_豚肉と玉子の炒め</th>
      <th>name_豚肉と茄子のピリ辛炒め</th>
      <th>name_豚肉のマスタード焼き</th>
      <th>name_豚肉の生姜焼き</th>
      <th>name_豚肉の胡麻シャブ</th>
      <th>name_越冬キャベツのメンチカツ</th>
      <th>name_酢豚</th>
      <th>name_酢豚orカレー</th>
      <th>name_青梗菜牛肉炒め</th>
      <th>name_青椒肉絲</th>
      <th>name_鶏のから揚げねぎ塩炒めソース</th>
      <th>name_鶏のから揚げスイートチリソース</th>
      <th>name_鶏のカッシュナッツ炒め</th>
      <th>name_鶏のトマトシチュー</th>
      <th>name_鶏のピリ辛焼き</th>
      <th>name_鶏のレモンペッパー焼orカレー</th>
      <th>name_鶏の味噌漬け焼き</th>
      <th>name_鶏の唐揚げ</th>
      <th>name_鶏の唐揚げおろしソース</th>
      <th>name_鶏の塩から揚げ</th>
      <th>name_鶏の天ぷら</th>
      <th>name_鶏の照り焼きマスタード</th>
      <th>name_鶏の照り焼きマヨ</th>
      <th>name_鶏の親子煮</th>
      <th>name_鶏チリソース</th>
      <th>name_鶏肉とカシューナッツ炒め</th>
      <th>name_鶏肉のカレー唐揚</th>
      <th>name_鶏肉の山賊焼き</th>
      <th>event_キャリアアップ支援セミナー</th>
      <th>event_ママの会</th>
      <th>weather_快晴</th>
      <th>weather_晴れ</th>
      <th>weather_曇</th>
      <th>weather_薄曇</th>
      <th>weather_雨</th>
      <th>weather_雪</th>
      <th>weather_雷電</th>
      <th>period_上旬</th>
      <th>period_中旬</th>
      <th>period_下旬</th>
    </tr>
    <tr>
      <th>datetime</th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2014-01-09</th>
      <td>129</td>
      <td>1</td>
      <td>435.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>10.9</td>
      <td>1</td>
      <td>9</td>
      <td>1.1</td>
      <td>9.333333</td>
      <td>0.112245</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>2014-01-10</th>
      <td>87</td>
      <td>0</td>
      <td>440.0</td>
      <td>1.0</td>
      <td>0.0</td>
      <td>5.1</td>
      <td>1</td>
      <td>10</td>
      <td>-5.8</td>
      <td>8.600000</td>
      <td>-0.532110</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>2014-01-14</th>
      <td>129</td>
      <td>1</td>
      <td>376.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>5.8</td>
      <td>1</td>
      <td>14</td>
      <td>0.7</td>
      <td>7.266667</td>
      <td>0.137255</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
    </tr>
    <tr>
      <th>2014-01-15</th>
      <td>134</td>
      <td>0</td>
      <td>450.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>2.9</td>
      <td>1</td>
      <td>15</td>
      <td>-2.9</td>
      <td>4.600000</td>
      <td>-0.500000</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
    </tr>
    <tr>
      <th>2014-01-16</th>
      <td>107</td>
      <td>0</td>
      <td>415.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>7.0</td>
      <td>1</td>
      <td>16</td>
      <td>4.1</td>
      <td>5.233333</td>
      <td>1.413793</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
    </tr>
  </tbody>
</table>
</div>



## ⑨ 最後に、出来たデータをもう一度眺める
欠損値が残っていないかなどを改めて確認し、問題なさそうであれば一旦CSVファイルとして保存しておきます。  
（簡易式ではありますが、）これでひとまずの前処理は完了です！


```python
# 改めて、各列にNaNが入っていないか確認
print(dummy_df.isnull().sum()) 
dummy_df.head()
```

    sales                       0
    soldout                     0
    kcal                        0
    payday                      0
    precipitation               0
    temperature                 0
    month                       0
    day                         0
    temperature_diff            0
    temperature_rolling_mean    0
    temperature_pct_change      0
    week_月                      0
    week_木                      0
    week_水                      0
    week_火                      0
    week_金                      0
    name_いか天ぷら                  0
    name_かじきの甘辛煮                0
    name_きのこソースハンバーグ            0
    name_さわら焼味噌掛け               0
    name_さんま辛味焼                 0
    name_たっぷりベーコンフライ            0
    name_ぶりレモンペッパー焼き            0
    name_ますのマスタードソース            0
    name_アジ唐揚げ南蛮ソース             0
    name_エビフライ                  0
    name_カレイの唐揚げ                0
    name_カレイ唐揚げ 甘酢あん            0
    name_カレイ唐揚げ夏野菜あん            0
    name_カレイ唐揚げ野菜あんかけ           0
                               ..
    name_鶏のから揚げねぎ塩炒めソース         0
    name_鶏のから揚げスイートチリソース        0
    name_鶏のカッシュナッツ炒め            0
    name_鶏のトマトシチュー              0
    name_鶏のピリ辛焼き                0
    name_鶏のレモンペッパー焼orカレー        0
    name_鶏の味噌漬け焼き               0
    name_鶏の唐揚げ                  0
    name_鶏の唐揚げおろしソース            0
    name_鶏の塩から揚げ                0
    name_鶏の天ぷら                  0
    name_鶏の照り焼きマスタード            0
    name_鶏の照り焼きマヨ               0
    name_鶏の親子煮                  0
    name_鶏チリソース                 0
    name_鶏肉とカシューナッツ炒め           0
    name_鶏肉のカレー唐揚               0
    name_鶏肉の山賊焼き                0
    event_キャリアアップ支援セミナー         0
    event_ママの会                  0
    weather_快晴                  0
    weather_晴れ                  0
    weather_曇                   0
    weather_薄曇                  0
    weather_雨                   0
    weather_雪                   0
    weather_雷電                  0
    period_上旬                   0
    period_中旬                   0
    period_下旬                   0
    dtype: int64





<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>sales</th>
      <th>soldout</th>
      <th>kcal</th>
      <th>payday</th>
      <th>precipitation</th>
      <th>temperature</th>
      <th>month</th>
      <th>day</th>
      <th>temperature_diff</th>
      <th>temperature_rolling_mean</th>
      <th>temperature_pct_change</th>
      <th>week_月</th>
      <th>week_木</th>
      <th>week_水</th>
      <th>week_火</th>
      <th>week_金</th>
      <th>name_いか天ぷら</th>
      <th>name_かじきの甘辛煮</th>
      <th>name_きのこソースハンバーグ</th>
      <th>name_さわら焼味噌掛け</th>
      <th>name_さんま辛味焼</th>
      <th>name_たっぷりベーコンフライ</th>
      <th>name_ぶりレモンペッパー焼き</th>
      <th>name_ますのマスタードソース</th>
      <th>name_アジ唐揚げ南蛮ソース</th>
      <th>name_エビフライ</th>
      <th>name_カレイの唐揚げ</th>
      <th>name_カレイ唐揚げ 甘酢あん</th>
      <th>name_カレイ唐揚げ夏野菜あん</th>
      <th>name_カレイ唐揚げ野菜あんかけ</th>
      <th>name_カレイ唐揚げ野菜餡かけ</th>
      <th>name_カレイ野菜あんかけ</th>
      <th>name_キスと野菜の天ぷら</th>
      <th>name_キーマカレー</th>
      <th>name_ゴーヤチャンプルー</th>
      <th>name_サバ焼味噌掛け</th>
      <th>name_サーモンのムニエル2色ソース</th>
      <th>name_サーモンフライ・タルタル</th>
      <th>name_ジャンボチキンカツ</th>
      <th>name_ジューシーメンチカツ</th>
      <th>name_タンドリーチキン</th>
      <th>name_チキンのコーンクリーム焼き</th>
      <th>name_チキンの辛味噌焼き</th>
      <th>name_チキンクリームシチュー</th>
      <th>name_チキンステーキ・きのこソース</th>
      <th>name_チキンフリカッセ</th>
      <th>name_チキン南蛮</th>
      <th>name_チキン香草焼きマスタードソース</th>
      <th>name_チャプチェ</th>
      <th>name_チンジャオロース</th>
      <th>name_チーズハンバーグ</th>
      <th>name_チーズメンチカツ</th>
      <th>name_チーズ入りハンバーグ</th>
      <th>name_チーズ入りメンチカツ</th>
      <th>name_ハンバーグカレーソース</th>
      <th>name_ハンバーグケッチャップソース</th>
      <th>name_ハンバーグデミソース</th>
      <th>name_ハンバーグ和風きのこソース</th>
      <th>name_ハンバーグ（デミきのこバター）</th>
      <th>name_バーベキューチキン</th>
      <th>name_ビーフカレー</th>
      <th>name_ビーフシチュー</th>
      <th>name_ビーフストロガノフ</th>
      <th>name_ビーフトマト煮</th>
      <th>name_プルコギ</th>
      <th>name_ホタテクリ―ムシチュー</th>
      <th>name_ボローニャ風カツ</th>
      <th>name_ポークソテー韓国ソース</th>
      <th>name_ポークハヤシ</th>
      <th>name_ポーク生姜焼き</th>
      <th>name_マーボ茄子</th>
      <th>name_マーボ豆腐</th>
      <th>name_メダイ照り焼</th>
      <th>name_メンチカツ</th>
      <th>name_ロース甘味噌焼き</th>
      <th>name_八宝菜</th>
      <th>name_厚切イカフライ</th>
      <th>name_厚切ハムカツ</th>
      <th>name_名古屋味噌カツ</th>
      <th>name_和風ソースハンバーグ</th>
      <th>name_和風ハンバーグ</th>
      <th>name_回鍋肉</th>
      <th>name_手作りひれかつ</th>
      <th>name_手作りひれかつとカレー</th>
      <th>name_手作りチキンカツ</th>
      <th>name_手作りトンカツ</th>
      <th>name_手作りロースカツ</th>
      <th>name_洋食屋さんのメンチカツ</th>
      <th>name_海老クリーミ―クノーデル</th>
      <th>name_海老フライとホタテ串カツ</th>
      <th>name_海老フライタルタル</th>
      <th>name_炊き込みご飯</th>
      <th>name_牛すき焼き風</th>
      <th>name_牛カルビ焼き肉</th>
      <th>name_牛スキヤキ</th>
      <th>name_牛丼風煮</th>
      <th>name_牛肉すき焼き風</th>
      <th>name_牛肉コロッケ</th>
      <th>name_牛肉ニンニクの芽炒め</th>
      <th>name_牛肉筍煮</th>
      <th>name_白身魚のマスタード焼き</th>
      <th>name_白身魚の南部焼き</th>
      <th>name_白身魚フライ</th>
      <th>name_白身魚ムニエル</th>
      <th>name_白身魚唐揚げ野菜あんかけ</th>
      <th>name_白身魚唐揚げ野菜餡かけ</th>
      <th>name_筑前煮</th>
      <th>name_肉じゃが</th>
      <th>name_肉団子のシチュー</th>
      <th>name_肉団子クリームシチュー</th>
      <th>name_親子煮</th>
      <th>name_豚すき焼き</th>
      <th>name_豚の冷しゃぶ</th>
      <th>name_豚キムチ炒め</th>
      <th>name_豚ロースのピザ風チーズ焼き</th>
      <th>name_豚冷シャブ野菜添え</th>
      <th>name_豚味噌メンチカツ</th>
      <th>name_豚肉と玉子の炒め</th>
      <th>name_豚肉と茄子のピリ辛炒め</th>
      <th>name_豚肉のマスタード焼き</th>
      <th>name_豚肉の生姜焼き</th>
      <th>name_豚肉の胡麻シャブ</th>
      <th>name_越冬キャベツのメンチカツ</th>
      <th>name_酢豚</th>
      <th>name_酢豚orカレー</th>
      <th>name_青梗菜牛肉炒め</th>
      <th>name_青椒肉絲</th>
      <th>name_鶏のから揚げねぎ塩炒めソース</th>
      <th>name_鶏のから揚げスイートチリソース</th>
      <th>name_鶏のカッシュナッツ炒め</th>
      <th>name_鶏のトマトシチュー</th>
      <th>name_鶏のピリ辛焼き</th>
      <th>name_鶏のレモンペッパー焼orカレー</th>
      <th>name_鶏の味噌漬け焼き</th>
      <th>name_鶏の唐揚げ</th>
      <th>name_鶏の唐揚げおろしソース</th>
      <th>name_鶏の塩から揚げ</th>
      <th>name_鶏の天ぷら</th>
      <th>name_鶏の照り焼きマスタード</th>
      <th>name_鶏の照り焼きマヨ</th>
      <th>name_鶏の親子煮</th>
      <th>name_鶏チリソース</th>
      <th>name_鶏肉とカシューナッツ炒め</th>
      <th>name_鶏肉のカレー唐揚</th>
      <th>name_鶏肉の山賊焼き</th>
      <th>event_キャリアアップ支援セミナー</th>
      <th>event_ママの会</th>
      <th>weather_快晴</th>
      <th>weather_晴れ</th>
      <th>weather_曇</th>
      <th>weather_薄曇</th>
      <th>weather_雨</th>
      <th>weather_雪</th>
      <th>weather_雷電</th>
      <th>period_上旬</th>
      <th>period_中旬</th>
      <th>period_下旬</th>
    </tr>
    <tr>
      <th>datetime</th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2014-01-09</th>
      <td>129</td>
      <td>1</td>
      <td>435.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>10.9</td>
      <td>1</td>
      <td>9</td>
      <td>1.1</td>
      <td>9.333333</td>
      <td>0.112245</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>2014-01-10</th>
      <td>87</td>
      <td>0</td>
      <td>440.0</td>
      <td>1.0</td>
      <td>0.0</td>
      <td>5.1</td>
      <td>1</td>
      <td>10</td>
      <td>-5.8</td>
      <td>8.600000</td>
      <td>-0.532110</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>2014-01-14</th>
      <td>129</td>
      <td>1</td>
      <td>376.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>5.8</td>
      <td>1</td>
      <td>14</td>
      <td>0.7</td>
      <td>7.266667</td>
      <td>0.137255</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
    </tr>
    <tr>
      <th>2014-01-15</th>
      <td>134</td>
      <td>0</td>
      <td>450.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>2.9</td>
      <td>1</td>
      <td>15</td>
      <td>-2.9</td>
      <td>4.600000</td>
      <td>-0.500000</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
    </tr>
    <tr>
      <th>2014-01-16</th>
      <td>107</td>
      <td>0</td>
      <td>415.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>7.0</td>
      <td>1</td>
      <td>16</td>
      <td>4.1</td>
      <td>5.233333</td>
      <td>1.413793</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
    </tr>
  </tbody>
</table>
</div>




```python
# 出来たデータをutf-8で保存する
dummy_df.to_csv('./data/processed_datamart.csv', encoding='utf-8')
```

## きれいになったデータはこの後どう活用するのか？

例えば、'sales'を「目的変数」、それ以外の列を「説明変数」として、目的変数を予測する"モデル"を作成する などがよく行われる。


![modeling.PNG](https://qiita-image-store.s3.amazonaws.com/0/100780/8f7784a7-6d41-6d07-ed75-f2775e543bf0.png)


より目的変数に"効く"説明変数を作ることを**特徴量エンジニアリング**という  
pandasを使った前処理とは、NaNや無関係な説明変数を削除しつつ、"効く"特徴量を探す（作成する）作業のこと

地味だが、モデルの精度を上げるうえでは非常に大切な作業！！！データ分析のほとんどの時間はここに使われる。

## ここでは取り上げられなかったけど、よく分析で使うその他のPandas関数

- df.where()　←df.mask()と反対の条件を対象にする。内容的には同じ処理。
- df.merge()
- df.concat()
- df.melt() ← df.pivot()の逆操作をするもの

などなど、他にも便利でマニアックなメソッドがたくさんあります。

## 参考リンク（もうちょっといろいろ知りたい人用）
**基本操作系**

- [Pandas Cheet Sheet - GitHub](https://github.com/pandas-dev/pandas/blob/master/doc/cheatsheet/Pandas_Cheat_Sheet.pdf)
    - 基本操作について1ページでまとめてくれているCheet Sheet
    
- [StatsFragments by @sinhrks](http://sinhrks.hatenablog.com/)
    - 各種Pandasメソッドを図付きで詳細に解説してくれています。非常に参考になる。
    
**集計テクニック系**

- [pandasで条件分岐(case when的な)によるデータ加工を網羅したい](https://qiita.com/Hyperion13fleet/items/98c31744e66ac1fc1e9f)
    - SQLのcase whenのような条件分岐の処理をpandasでやりたいときが良くありますがなかなか難しい。そんなときのお助け記事。
    
**作図系**

- [PythonでPandasのPlot機能を使えばデータ加工からグラフ作成までマジでシームレス - Qiita](https://qiita.com/hik0107/items/de5785f680096df93efa)
    - Pandas Plotでできることの概要がわかります
- [pythonで美しいグラフ描画 -seabornを使えばデータ分析と可視化が捗る その1 - Qiita](https://qiita.com/hik0107/items/3dc541158fceb3156ee0)
    - Pandas Plot, matplotlibと比較して簡単に美しいプロットがかけるmatplotのラッパーseabornの概要がわかります 

## GitHub

同内容をGitHubにてJupyter Notebook形式でも公開しています。実際に手を動かしながらやりたい方はこちらからcloneしていただいた方が便利です。

- [ysdyt/pandas_tutorial](https://github.com/ysdyt/pandas_tutorial/blob/master/pandas_tutorial.ipynb)