mini_forest
import pandas as pd
pd.options.display.max_columns = 100
pd.options.display.max_rows = 999
import numpy as np
import math
import warnings
warnings.filterwarnings('ignore')
import lightgbm as lgb
from sklearn.metrics import mean_squared_error
%matplotlib inline
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
import seaborn as sns
import datetime
import time
import gc
from google.colab import drive
drive.mount('/content/drive')
Mounted at /content/drive
path = "/content/drive/MyDrive/tmp/7_probspace/3_taxi/"
train = pd.read_csv(path+'data/train_data.csv', parse_dates=["tpep_pickup_datetime"]).rename(columns={'tpep_pickup_datetime':'ds'})
# 前処理
# 異常値の補間
## 補間せずに、データから除外した方がいいのかもしれないというメモ
train.loc[((train["ds"]>="2017-03-12 02:00:00")&(train["ds"]<="2017-03-12 02:30:00")),list(map(str, range(79)))] = float('nan')
train.loc[((train["ds"]>="2018-03-11 02:00:00")&(train["ds"]<="2018-03-11 02:30:00")),list(map(str, range(79)))] = float('nan')
train.loc[((train["ds"]>="2019-03-10 02:00:00")&(train["ds"]<="2019-03-10 02:30:00")),list(map(str, range(79)))] = float('nan')
train = train.set_index("ds")
train = train.interpolate(method='linear', axis=0)
train = train.round().astype(int)
train = train.reset_index()
# trainに予測期間の時刻を追加
data = pd.concat([
train,
pd.DataFrame({
"ds":pd.date_range(start='2019-12-01 00:00:00', end='2019-12-07 23:30:00', freq='30T')
})
], axis=0).reset_index(drop=True)
# 縦持ち
data_df = data.copy()
data_df = pd.melt(
data_df, id_vars=["ds"], value_vars=list(map(str, range(79))),
var_name="id", value_name="y"
)
data_df.loc[:,"id"] = data_df["id"].astype("int64")
data_df
ds | id | y | |
---|---|---|---|
0 | 2017-01-01 00:00:00 | 0 | 53.0 |
1 | 2017-01-01 00:30:00 | 0 | 83.0 |
2 | 2017-01-01 01:00:00 | 0 | 69.0 |
3 | 2017-01-01 01:30:00 | 0 | 76.0 |
4 | 2017-01-01 02:00:00 | 0 | 101.0 |
... | ... | ... | ... |
4061227 | 2019-12-07 21:30:00 | 78 | NaN |
4061228 | 2019-12-07 22:00:00 | 78 | NaN |
4061229 | 2019-12-07 22:30:00 | 78 | NaN |
4061230 | 2019-12-07 23:00:00 | 78 | NaN |
4061231 | 2019-12-07 23:30:00 | 78 | NaN |
4061232 rows × 3 columns
## 移動平均などの特徴量の追加するための関数
### 単純なlag
def create_lags(df, group_col, val_col, lags):
lag_df = pd.DataFrame()
for lag in lags:
lag_df[f'lag_{lag}_{val_col}'] = df[group_col+[val_col]].copy().groupby(
group_col
)[val_col].transform(lambda x: x.shift(lag))
return lag_df
# 以下の関数は現在未使用
### 移動平均
def create_rolls_ma(df, group_col, val_col, lags, rolls):
roll_df = pd.DataFrame()
for lag in lags:
for roll in rolls:
roll_df[f'ma_{lag}_{roll}_{val_col}'] = df[group_col+[val_col]].copy().groupby(
group_col
)[val_col].transform(lambda x: x.shift(lag).rolling(roll).mean())
return roll_df
### 標準偏差
def create_rolls_std(df, group_col, val_col, lags, rolls):
roll_df = pd.DataFrame()
for lag in lags:
for roll in rolls:
roll_df[f'std_{lag}_{roll}_{val_col}'] = df[group_col+[val_col]].copy().groupby(
group_col
)[val_col].transform(lambda x: x.shift(lag).rolling(roll).std())
return roll_df
### 移動最大
def create_rolls_max(df, group_col, val_col, lags, rolls):
roll_df = pd.DataFrame()
for lag in lags:
for roll in rolls:
roll_df[f'ma_{lag}_{roll}_{val_col}'] = df[group_col+[val_col]].copy().groupby(
group_col
)[val_col].transform(lambda x: x.shift(lag).rolling(roll).max())
return roll_df
### 移動最小
def create_rolls_min(df, group_col, val_col, lags, rolls):
roll_df = pd.DataFrame()
for lag in lags:
for roll in rolls:
roll_df[f'ma_{lag}_{roll}_{val_col}'] = df[group_col+[val_col]].copy().groupby(
group_col
)[val_col].transform(lambda x: x.shift(lag).rolling(roll).min())
return roll_df
# 目的変数の設定
## 一週間前(7*48行前)の同時刻との差分
data_df.loc[:,"y_diff"] = data_df["y"] - data_df[["id", "y"]].groupby("id")["y"].transform(lambda x: x.shift(periods=48*7))
# 特徴量追加
## 時間関連
data_df.loc[:,"hour_minute"] = data_df["ds"].dt.strftime('%H%M')
data_df.loc[:,"ds_h"] = pd.to_datetime(data_df["ds"].dt.strftime('%Y-%m-%d %H')+":00:00")
data_df.loc[:,"ds_ymd"] = pd.to_datetime(data_df["ds"].dt.strftime('%Y-%m-%d ')+"00:00:00")
data_df.loc[:,"year"] = data_df["ds"].dt.year
data_df.loc[:,"month"] = data_df["ds"].dt.month
data_df.loc[:,"day"] = data_df["ds"].dt.day
data_df.loc[:,"hour"] = data_df["ds"].dt.hour
data_df.loc[:,"ampm"] = [ 1 if ampm == "AM" else 0 for ampm in data_df["ds"].dt.strftime('%p') ]
data_df.loc[:,"peak"] = 1 # 深夜4〜5時はとても少ないので、そこをフラグ化
data_df.loc[(4 <= data_df["hour"])&(data_df["hour"] < 6),"peak"] = 0
data_df.loc[:,"minute"] = data_df["ds"].dt.minute
data_df.loc[:,"quarter"] = data_df["ds"].dt.quarter
data_df.loc[:,"yobi"] = data_df["ds"].dt.weekday
data_df.loc[:,"week_number_year"] = data_df["ds"].dt.strftime('%U').astype(int) # 年における第何週か
data_df.loc[:,"week_number_month"] = [ (day - 1) // 7 + 1 for day in data_df["day"] ] # 月における第何週か
## 過去の情報を特徴量に追加
### 1,2,3,4…週間前の階差
data_df.loc[:,[
"lag_7_y_diff","lag_8_y_diff","lag_14_y_diff","lag_15_y_diff","lag_21_y_diff","lag_28_y_diff","lag_35_y_diff","lag_42_y_diff","lag_49_y_diff","lag_364_y_diff","lag_182_y_diff",
]] = create_lags(data_df, ["id","hour_minute"], "y_diff", [7,8,14,15,21,28,35,42,49,7*52,7*26,])
### 1,2,3,4…週間前の原系列
data_df.loc[:,[
"lag_7_y","lag_8_y","lag_14_y","lag_15_y","lag_21_y","lag_28_y","lag_35_y","lag_42_y","lag_49_y","lag_364_y","lag_182_y",
]] = create_lags(data_df, ["id","hour_minute"], "y", [7,8,14,15,21,28,35,42,49,7*52,7*26,])
### ratio
data_df.loc[:,"lag_7_y_ratio"] = data_df.loc[:,"lag_7_y_diff"] / data_df.loc[:,"lag_7_y"]
data_df.loc[:,"lag_8_y_ratio"] = data_df.loc[:,"lag_8_y_diff"] / data_df.loc[:,"lag_8_y"]
data_df.loc[:,"lag_14_y_ratio"] = data_df.loc[:,"lag_14_y_diff"] / data_df.loc[:,"lag_14_y"]
data_df.loc[:,"lag_15_y_ratio"] = data_df.loc[:,"lag_15_y_diff"] / data_df.loc[:,"lag_15_y"]
data_df.loc[:,"lag_21_y_ratio"] = data_df.loc[:,"lag_21_y_diff"] / data_df.loc[:,"lag_21_y"]
data_df.loc[:,"lag_28_y_ratio"] = data_df.loc[:,"lag_28_y_diff"] / data_df.loc[:,"lag_28_y"]
data_df.loc[:,"lag_35_y_ratio"] = data_df.loc[:,"lag_35_y_diff"] / data_df.loc[:,"lag_35_y"]
data_df.loc[:,"lag_42_y_ratio"] = data_df.loc[:,"lag_35_y_diff"] / data_df.loc[:,"lag_35_y"]
data_df.loc[:,"lag_49_y_ratio"] = data_df.loc[:,"lag_35_y_diff"] / data_df.loc[:,"lag_35_y"]
data_df.loc[:,"lag_364_y_ratio"] = data_df.loc[:,"lag_364_y_diff"] / data_df.loc[:,"lag_364_y"]
data_df.loc[:,"lag_182_y_ratio"] = data_df.loc[:,"lag_182_y_diff"] / data_df.loc[:,"lag_182_y"]
### 階差列のcumsum
data_df.loc[:,"lag_7_14_diff_sum"] = data_df["lag_7_y_diff"] + data_df["lag_14_y_diff"]
data_df.loc[:,"lag_7_14_21_diff_sum"] = data_df["lag_7_14_diff_sum"] + data_df["lag_21_y_diff"]
data_df.loc[:,"lag_7_14_21_28_diff_sum"] = data_df["lag_7_14_21_diff_sum"] + data_df["lag_28_y_diff"]
data_df.loc[:,"lag_7_14_21_28_35_diff_sum"] = data_df["lag_7_14_21_28_diff_sum"] + data_df["lag_35_y_diff"]
data_df.loc[:,"lag_7_14_21_28_35_42_diff_sum"] = data_df["lag_7_14_21_28_35_diff_sum"] + data_df["lag_42_y_diff"]
data_df.loc[:,"lag_7_14_21_28_35_42_49_diff_sum"] = data_df["lag_7_14_21_28_35_42_diff_sum"] + data_df["lag_49_y_diff"]
### 原系列系列のcumsum
data_df.loc[:,"lag_7_14_sum"] = data_df["lag_7_y"] + data_df["lag_14_y"]
data_df.loc[:,"lag_7_14_21_sum"] = data_df["lag_7_14_sum"] + data_df["lag_21_y"]
data_df.loc[:,"lag_7_14_21_28_sum"] = data_df["lag_7_14_21_sum"] + data_df["lag_28_y"]
data_df.loc[:,"lag_7_14_21_28_35_sum"] = data_df["lag_7_14_21_28_sum"] + data_df["lag_35_y"]
data_df.loc[:,"lag_7_14_21_28_35_42_sum"] = data_df["lag_7_14_21_28_35_sum"] + data_df["lag_42_y"]
data_df.loc[:,"lag_7_14_21_28_35_42_49_sum"] = data_df["lag_7_14_21_28_35_42_sum"] + data_df["lag_49_y"]
# 確認のため、id==0の00:00、00:30だけ表示
data_df[((data_df["id"]==0)&((data_df["hour_minute"]=="0000")|(data_df["hour_minute"]=="0030")))].head(100)
ds | id | y | y_diff | hour_minute | ds_h | ds_ymd | year | month | day | hour | ampm | peak | minute | quarter | yobi | week_number_year | week_number_month | lag_7_y_diff | lag_8_y_diff | lag_14_y_diff | lag_15_y_diff | lag_21_y_diff | lag_28_y_diff | lag_35_y_diff | lag_42_y_diff | lag_49_y_diff | lag_364_y_diff | lag_182_y_diff | lag_7_y | lag_8_y | lag_14_y | lag_15_y | lag_21_y | lag_28_y | lag_35_y | lag_42_y | lag_49_y | lag_364_y | lag_182_y | lag_7_y_ratio | lag_8_y_ratio | lag_14_y_ratio | lag_15_y_ratio | lag_21_y_ratio | lag_28_y_ratio | lag_35_y_ratio | lag_42_y_ratio | lag_49_y_ratio | lag_364_y_ratio | lag_182_y_ratio | lag_7_14_diff_sum | lag_7_14_21_diff_sum | lag_7_14_21_28_diff_sum | lag_7_14_21_28_35_diff_sum | lag_7_14_21_28_35_42_diff_sum | lag_7_14_21_28_35_42_49_diff_sum | lag_7_14_sum | lag_7_14_21_sum | lag_7_14_21_28_sum | lag_7_14_21_28_35_sum | lag_7_14_21_28_35_42_sum | lag_7_14_21_28_35_42_49_sum | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2017-01-01 00:00:00 | 0 | 53.0 | NaN | 0000 | 2017-01-01 | 2017-01-01 | 2017 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 6 | 1 | 1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1 | 2017-01-01 00:30:00 | 0 | 83.0 | NaN | 0030 | 2017-01-01 | 2017-01-01 | 2017 | 1 | 1 | 0 | 1 | 1 | 30 | 1 | 6 | 1 | 1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
48 | 2017-01-02 00:00:00 | 0 | 16.0 | NaN | 0000 | 2017-01-02 | 2017-01-02 | 2017 | 1 | 2 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
49 | 2017-01-02 00:30:00 | 0 | 7.0 | NaN | 0030 | 2017-01-02 | 2017-01-02 | 2017 | 1 | 2 | 0 | 1 | 1 | 30 | 1 | 0 | 1 | 1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
96 | 2017-01-03 00:00:00 | 0 | 8.0 | NaN | 0000 | 2017-01-03 | 2017-01-03 | 2017 | 1 | 3 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
97 | 2017-01-03 00:30:00 | 0 | 11.0 | NaN | 0030 | 2017-01-03 | 2017-01-03 | 2017 | 1 | 3 | 0 | 1 | 1 | 30 | 1 | 1 | 1 | 1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
144 | 2017-01-04 00:00:00 | 0 | 7.0 | NaN | 0000 | 2017-01-04 | 2017-01-04 | 2017 | 1 | 4 | 0 | 1 | 1 | 0 | 1 | 2 | 1 | 1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
145 | 2017-01-04 00:30:00 | 0 | 4.0 | NaN | 0030 | 2017-01-04 | 2017-01-04 | 2017 | 1 | 4 | 0 | 1 | 1 | 30 | 1 | 2 | 1 | 1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
192 | 2017-01-05 00:00:00 | 0 | 12.0 | NaN | 0000 | 2017-01-05 | 2017-01-05 | 2017 | 1 | 5 | 0 | 1 | 1 | 0 | 1 | 3 | 1 | 1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
193 | 2017-01-05 00:30:00 | 0 | 9.0 | NaN | 0030 | 2017-01-05 | 2017-01-05 | 2017 | 1 | 5 | 0 | 1 | 1 | 30 | 1 | 3 | 1 | 1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
240 | 2017-01-06 00:00:00 | 0 | 19.0 | NaN | 0000 | 2017-01-06 | 2017-01-06 | 2017 | 1 | 6 | 0 | 1 | 1 | 0 | 1 | 4 | 1 | 1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
241 | 2017-01-06 00:30:00 | 0 | 21.0 | NaN | 0030 | 2017-01-06 | 2017-01-06 | 2017 | 1 | 6 | 0 | 1 | 1 | 30 | 1 | 4 | 1 | 1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
288 | 2017-01-07 00:00:00 | 0 | 61.0 | NaN | 0000 | 2017-01-07 | 2017-01-07 | 2017 | 1 | 7 | 0 | 1 | 1 | 0 | 1 | 5 | 1 | 1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
289 | 2017-01-07 00:30:00 | 0 | 74.0 | NaN | 0030 | 2017-01-07 | 2017-01-07 | 2017 | 1 | 7 | 0 | 1 | 1 | 30 | 1 | 5 | 1 | 1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
336 | 2017-01-08 00:00:00 | 0 | 42.0 | -11.0 | 0000 | 2017-01-08 | 2017-01-08 | 2017 | 1 | 8 | 0 | 1 | 1 | 0 | 1 | 6 | 2 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 53.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
337 | 2017-01-08 00:30:00 | 0 | 67.0 | -16.0 | 0030 | 2017-01-08 | 2017-01-08 | 2017 | 1 | 8 | 0 | 1 | 1 | 30 | 1 | 6 | 2 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 83.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
384 | 2017-01-09 00:00:00 | 0 | 14.0 | -2.0 | 0000 | 2017-01-09 | 2017-01-09 | 2017 | 1 | 9 | 0 | 1 | 1 | 0 | 1 | 0 | 2 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 16.0 | 53.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
385 | 2017-01-09 00:30:00 | 0 | 5.0 | -2.0 | 0030 | 2017-01-09 | 2017-01-09 | 2017 | 1 | 9 | 0 | 1 | 1 | 30 | 1 | 0 | 2 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 7.0 | 83.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
432 | 2017-01-10 00:00:00 | 0 | 7.0 | -1.0 | 0000 | 2017-01-10 | 2017-01-10 | 2017 | 1 | 10 | 0 | 1 | 1 | 0 | 1 | 1 | 2 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 8.0 | 16.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
433 | 2017-01-10 00:30:00 | 0 | 9.0 | -2.0 | 0030 | 2017-01-10 | 2017-01-10 | 2017 | 1 | 10 | 0 | 1 | 1 | 30 | 1 | 1 | 2 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 11.0 | 7.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
480 | 2017-01-11 00:00:00 | 0 | 15.0 | 8.0 | 0000 | 2017-01-11 | 2017-01-11 | 2017 | 1 | 11 | 0 | 1 | 1 | 0 | 1 | 2 | 2 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 7.0 | 8.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
481 | 2017-01-11 00:30:00 | 0 | 13.0 | 9.0 | 0030 | 2017-01-11 | 2017-01-11 | 2017 | 1 | 11 | 0 | 1 | 1 | 30 | 1 | 2 | 2 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 4.0 | 11.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
528 | 2017-01-12 00:00:00 | 0 | 17.0 | 5.0 | 0000 | 2017-01-12 | 2017-01-12 | 2017 | 1 | 12 | 0 | 1 | 1 | 0 | 1 | 3 | 2 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 12.0 | 7.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
529 | 2017-01-12 00:30:00 | 0 | 10.0 | 1.0 | 0030 | 2017-01-12 | 2017-01-12 | 2017 | 1 | 12 | 0 | 1 | 1 | 30 | 1 | 3 | 2 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 9.0 | 4.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
576 | 2017-01-13 00:00:00 | 0 | 30.0 | 11.0 | 0000 | 2017-01-13 | 2017-01-13 | 2017 | 1 | 13 | 0 | 1 | 1 | 0 | 1 | 4 | 2 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 19.0 | 12.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
577 | 2017-01-13 00:30:00 | 0 | 21.0 | 0.0 | 0030 | 2017-01-13 | 2017-01-13 | 2017 | 1 | 13 | 0 | 1 | 1 | 30 | 1 | 4 | 2 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 21.0 | 9.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
624 | 2017-01-14 00:00:00 | 0 | 69.0 | 8.0 | 0000 | 2017-01-14 | 2017-01-14 | 2017 | 1 | 14 | 0 | 1 | 1 | 0 | 1 | 5 | 2 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 61.0 | 19.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
625 | 2017-01-14 00:30:00 | 0 | 66.0 | -8.0 | 0030 | 2017-01-14 | 2017-01-14 | 2017 | 1 | 14 | 0 | 1 | 1 | 30 | 1 | 5 | 2 | 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 74.0 | 21.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
672 | 2017-01-15 00:00:00 | 0 | 61.0 | 19.0 | 0000 | 2017-01-15 | 2017-01-15 | 2017 | 1 | 15 | 0 | 1 | 1 | 0 | 1 | 6 | 3 | 3 | -11.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 42.0 | 61.0 | 53.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | -0.261905 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 95.0 | NaN | NaN | NaN | NaN | NaN |
673 | 2017-01-15 00:30:00 | 0 | 82.0 | 15.0 | 0030 | 2017-01-15 | 2017-01-15 | 2017 | 1 | 15 | 0 | 1 | 1 | 30 | 1 | 6 | 3 | 3 | -16.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 67.0 | 74.0 | 83.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | -0.238806 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 150.0 | NaN | NaN | NaN | NaN | NaN |
720 | 2017-01-16 00:00:00 | 0 | 17.0 | 3.0 | 0000 | 2017-01-16 | 2017-01-16 | 2017 | 1 | 16 | 0 | 1 | 1 | 0 | 1 | 0 | 3 | 3 | -2.0 | -11.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 14.0 | 42.0 | 16.0 | 53.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | -0.142857 | -0.261905 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 30.0 | NaN | NaN | NaN | NaN | NaN |
721 | 2017-01-16 00:30:00 | 0 | 29.0 | 24.0 | 0030 | 2017-01-16 | 2017-01-16 | 2017 | 1 | 16 | 0 | 1 | 1 | 30 | 1 | 0 | 3 | 3 | -2.0 | -16.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 5.0 | 67.0 | 7.0 | 83.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | -0.400000 | -0.238806 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 12.0 | NaN | NaN | NaN | NaN | NaN |
768 | 2017-01-17 00:00:00 | 0 | 6.0 | -1.0 | 0000 | 2017-01-17 | 2017-01-17 | 2017 | 1 | 17 | 0 | 1 | 1 | 0 | 1 | 1 | 3 | 3 | -1.0 | -2.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 7.0 | 14.0 | 8.0 | 16.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | -0.142857 | -0.142857 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 15.0 | NaN | NaN | NaN | NaN | NaN |
769 | 2017-01-17 00:30:00 | 0 | 8.0 | -1.0 | 0030 | 2017-01-17 | 2017-01-17 | 2017 | 1 | 17 | 0 | 1 | 1 | 30 | 1 | 1 | 3 | 3 | -2.0 | -2.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 9.0 | 5.0 | 11.0 | 7.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | -0.222222 | -0.400000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 20.0 | NaN | NaN | NaN | NaN | NaN |
816 | 2017-01-18 00:00:00 | 0 | 9.0 | -6.0 | 0000 | 2017-01-18 | 2017-01-18 | 2017 | 1 | 18 | 0 | 1 | 1 | 0 | 1 | 2 | 3 | 3 | 8.0 | -1.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 15.0 | 7.0 | 7.0 | 8.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 0.533333 | -0.142857 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 22.0 | NaN | NaN | NaN | NaN | NaN |
817 | 2017-01-18 00:30:00 | 0 | 6.0 | -7.0 | 0030 | 2017-01-18 | 2017-01-18 | 2017 | 1 | 18 | 0 | 1 | 1 | 30 | 1 | 2 | 3 | 3 | 9.0 | -2.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 13.0 | 9.0 | 4.0 | 11.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 0.692308 | -0.222222 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 17.0 | NaN | NaN | NaN | NaN | NaN |
864 | 2017-01-19 00:00:00 | 0 | 18.0 | 1.0 | 0000 | 2017-01-19 | 2017-01-19 | 2017 | 1 | 19 | 0 | 1 | 1 | 0 | 1 | 3 | 3 | 3 | 5.0 | 8.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 17.0 | 15.0 | 12.0 | 7.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 0.294118 | 0.533333 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 29.0 | NaN | NaN | NaN | NaN | NaN |
865 | 2017-01-19 00:30:00 | 0 | 13.0 | 3.0 | 0030 | 2017-01-19 | 2017-01-19 | 2017 | 1 | 19 | 0 | 1 | 1 | 30 | 1 | 3 | 3 | 3 | 1.0 | 9.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 10.0 | 13.0 | 9.0 | 4.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 0.100000 | 0.692308 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 19.0 | NaN | NaN | NaN | NaN | NaN |
912 | 2017-01-20 00:00:00 | 0 | 24.0 | -6.0 | 0000 | 2017-01-20 | 2017-01-20 | 2017 | 1 | 20 | 0 | 1 | 1 | 0 | 1 | 4 | 3 | 3 | 11.0 | 5.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 30.0 | 17.0 | 19.0 | 12.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 0.366667 | 0.294118 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 49.0 | NaN | NaN | NaN | NaN | NaN |
913 | 2017-01-20 00:30:00 | 0 | 15.0 | -6.0 | 0030 | 2017-01-20 | 2017-01-20 | 2017 | 1 | 20 | 0 | 1 | 1 | 30 | 1 | 4 | 3 | 3 | 0.0 | 1.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 21.0 | 10.0 | 21.0 | 9.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 0.000000 | 0.100000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 42.0 | NaN | NaN | NaN | NaN | NaN |
960 | 2017-01-21 00:00:00 | 0 | 62.0 | -7.0 | 0000 | 2017-01-21 | 2017-01-21 | 2017 | 1 | 21 | 0 | 1 | 1 | 0 | 1 | 5 | 3 | 3 | 8.0 | 11.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 69.0 | 30.0 | 61.0 | 19.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 0.115942 | 0.366667 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 130.0 | NaN | NaN | NaN | NaN | NaN |
961 | 2017-01-21 00:30:00 | 0 | 58.0 | -8.0 | 0030 | 2017-01-21 | 2017-01-21 | 2017 | 1 | 21 | 0 | 1 | 1 | 30 | 1 | 5 | 3 | 3 | -8.0 | 0.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 66.0 | 21.0 | 74.0 | 21.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | -0.121212 | 0.000000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 140.0 | NaN | NaN | NaN | NaN | NaN |
1008 | 2017-01-22 00:00:00 | 0 | 62.0 | 1.0 | 0000 | 2017-01-22 | 2017-01-22 | 2017 | 1 | 22 | 0 | 1 | 1 | 0 | 1 | 6 | 4 | 4 | 19.0 | 8.0 | -11.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 61.0 | 69.0 | 42.0 | 61.0 | 53.0 | NaN | NaN | NaN | NaN | NaN | NaN | 0.311475 | 0.115942 | -0.261905 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 8.0 | NaN | NaN | NaN | NaN | NaN | 103.0 | 156.0 | NaN | NaN | NaN | NaN |
1009 | 2017-01-22 00:30:00 | 0 | 79.0 | -3.0 | 0030 | 2017-01-22 | 2017-01-22 | 2017 | 1 | 22 | 0 | 1 | 1 | 30 | 1 | 6 | 4 | 4 | 15.0 | -8.0 | -16.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 82.0 | 66.0 | 67.0 | 74.0 | 83.0 | NaN | NaN | NaN | NaN | NaN | NaN | 0.182927 | -0.121212 | -0.238806 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | -1.0 | NaN | NaN | NaN | NaN | NaN | 149.0 | 232.0 | NaN | NaN | NaN | NaN |
1056 | 2017-01-23 00:00:00 | 0 | 6.0 | -11.0 | 0000 | 2017-01-23 | 2017-01-23 | 2017 | 1 | 23 | 0 | 1 | 1 | 0 | 1 | 0 | 4 | 4 | 3.0 | 19.0 | -2.0 | -11.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 17.0 | 61.0 | 14.0 | 42.0 | 16.0 | NaN | NaN | NaN | NaN | NaN | NaN | 0.176471 | 0.311475 | -0.142857 | -0.261905 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.0 | NaN | NaN | NaN | NaN | NaN | 31.0 | 47.0 | NaN | NaN | NaN | NaN |
1057 | 2017-01-23 00:30:00 | 0 | 10.0 | -19.0 | 0030 | 2017-01-23 | 2017-01-23 | 2017 | 1 | 23 | 0 | 1 | 1 | 30 | 1 | 0 | 4 | 4 | 24.0 | 15.0 | -2.0 | -16.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 29.0 | 82.0 | 5.0 | 67.0 | 7.0 | NaN | NaN | NaN | NaN | NaN | NaN | 0.827586 | 0.182927 | -0.400000 | -0.238806 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 22.0 | NaN | NaN | NaN | NaN | NaN | 34.0 | 41.0 | NaN | NaN | NaN | NaN |
1104 | 2017-01-24 00:00:00 | 0 | 9.0 | 3.0 | 0000 | 2017-01-24 | 2017-01-24 | 2017 | 1 | 24 | 0 | 1 | 1 | 0 | 1 | 1 | 4 | 4 | -1.0 | 3.0 | -1.0 | -2.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 6.0 | 17.0 | 7.0 | 14.0 | 8.0 | NaN | NaN | NaN | NaN | NaN | NaN | -0.166667 | 0.176471 | -0.142857 | -0.142857 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | -2.0 | NaN | NaN | NaN | NaN | NaN | 13.0 | 21.0 | NaN | NaN | NaN | NaN |
1105 | 2017-01-24 00:30:00 | 0 | 0.0 | -8.0 | 0030 | 2017-01-24 | 2017-01-24 | 2017 | 1 | 24 | 0 | 1 | 1 | 30 | 1 | 1 | 4 | 4 | -1.0 | 24.0 | -2.0 | -2.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 8.0 | 29.0 | 9.0 | 5.0 | 11.0 | NaN | NaN | NaN | NaN | NaN | NaN | -0.125000 | 0.827586 | -0.222222 | -0.400000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | -3.0 | NaN | NaN | NaN | NaN | NaN | 17.0 | 28.0 | NaN | NaN | NaN | NaN |
1152 | 2017-01-25 00:00:00 | 0 | 11.0 | 2.0 | 0000 | 2017-01-25 | 2017-01-25 | 2017 | 1 | 25 | 0 | 1 | 1 | 0 | 1 | 2 | 4 | 4 | -6.0 | -1.0 | 8.0 | -1.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 9.0 | 6.0 | 15.0 | 7.0 | 7.0 | NaN | NaN | NaN | NaN | NaN | NaN | -0.666667 | -0.166667 | 0.533333 | -0.142857 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 2.0 | NaN | NaN | NaN | NaN | NaN | 24.0 | 31.0 | NaN | NaN | NaN | NaN |
1153 | 2017-01-25 00:30:00 | 0 | 8.0 | 2.0 | 0030 | 2017-01-25 | 2017-01-25 | 2017 | 1 | 25 | 0 | 1 | 1 | 30 | 1 | 2 | 4 | 4 | -7.0 | -1.0 | 9.0 | -2.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 6.0 | 8.0 | 13.0 | 9.0 | 4.0 | NaN | NaN | NaN | NaN | NaN | NaN | -1.166667 | -0.125000 | 0.692308 | -0.222222 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 2.0 | NaN | NaN | NaN | NaN | NaN | 19.0 | 23.0 | NaN | NaN | NaN | NaN |
1200 | 2017-01-26 00:00:00 | 0 | 18.0 | 0.0 | 0000 | 2017-01-26 | 2017-01-26 | 2017 | 1 | 26 | 0 | 1 | 1 | 0 | 1 | 3 | 4 | 4 | 1.0 | -6.0 | 5.0 | 8.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 18.0 | 9.0 | 17.0 | 15.0 | 12.0 | NaN | NaN | NaN | NaN | NaN | NaN | 0.055556 | -0.666667 | 0.294118 | 0.533333 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 6.0 | NaN | NaN | NaN | NaN | NaN | 35.0 | 47.0 | NaN | NaN | NaN | NaN |
1201 | 2017-01-26 00:30:00 | 0 | 11.0 | -2.0 | 0030 | 2017-01-26 | 2017-01-26 | 2017 | 1 | 26 | 0 | 1 | 1 | 30 | 1 | 3 | 4 | 4 | 3.0 | -7.0 | 1.0 | 9.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 13.0 | 6.0 | 10.0 | 13.0 | 9.0 | NaN | NaN | NaN | NaN | NaN | NaN | 0.230769 | -1.166667 | 0.100000 | 0.692308 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 4.0 | NaN | NaN | NaN | NaN | NaN | 23.0 | 32.0 | NaN | NaN | NaN | NaN |
1248 | 2017-01-27 00:00:00 | 0 | 24.0 | 0.0 | 0000 | 2017-01-27 | 2017-01-27 | 2017 | 1 | 27 | 0 | 1 | 1 | 0 | 1 | 4 | 4 | 4 | -6.0 | 1.0 | 11.0 | 5.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 24.0 | 18.0 | 30.0 | 17.0 | 19.0 | NaN | NaN | NaN | NaN | NaN | NaN | -0.250000 | 0.055556 | 0.366667 | 0.294118 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 5.0 | NaN | NaN | NaN | NaN | NaN | 54.0 | 73.0 | NaN | NaN | NaN | NaN |
1249 | 2017-01-27 00:30:00 | 0 | 21.0 | 6.0 | 0030 | 2017-01-27 | 2017-01-27 | 2017 | 1 | 27 | 0 | 1 | 1 | 30 | 1 | 4 | 4 | 4 | -6.0 | 3.0 | 0.0 | 1.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 15.0 | 13.0 | 21.0 | 10.0 | 21.0 | NaN | NaN | NaN | NaN | NaN | NaN | -0.400000 | 0.230769 | 0.000000 | 0.100000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | -6.0 | NaN | NaN | NaN | NaN | NaN | 36.0 | 57.0 | NaN | NaN | NaN | NaN |
1296 | 2017-01-28 00:00:00 | 0 | 73.0 | 11.0 | 0000 | 2017-01-28 | 2017-01-28 | 2017 | 1 | 28 | 0 | 1 | 1 | 0 | 1 | 5 | 4 | 4 | -7.0 | -6.0 | 8.0 | 11.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 62.0 | 24.0 | 69.0 | 30.0 | 61.0 | NaN | NaN | NaN | NaN | NaN | NaN | -0.112903 | -0.250000 | 0.115942 | 0.366667 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.0 | NaN | NaN | NaN | NaN | NaN | 131.0 | 192.0 | NaN | NaN | NaN | NaN |
1297 | 2017-01-28 00:30:00 | 0 | 65.0 | 7.0 | 0030 | 2017-01-28 | 2017-01-28 | 2017 | 1 | 28 | 0 | 1 | 1 | 30 | 1 | 5 | 4 | 4 | -8.0 | -6.0 | -8.0 | 0.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 58.0 | 15.0 | 66.0 | 21.0 | 74.0 | NaN | NaN | NaN | NaN | NaN | NaN | -0.137931 | -0.400000 | -0.121212 | 0.000000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | -16.0 | NaN | NaN | NaN | NaN | NaN | 124.0 | 198.0 | NaN | NaN | NaN | NaN |
1344 | 2017-01-29 00:00:00 | 0 | 84.0 | 22.0 | 0000 | 2017-01-29 | 2017-01-29 | 2017 | 1 | 29 | 0 | 1 | 1 | 0 | 1 | 6 | 5 | 5 | 1.0 | -7.0 | 19.0 | 8.0 | -11.0 | NaN | NaN | NaN | NaN | NaN | NaN | 62.0 | 62.0 | 61.0 | 69.0 | 42.0 | 53.0 | NaN | NaN | NaN | NaN | NaN | 0.016129 | -0.112903 | 0.311475 | 0.115942 | -0.261905 | NaN | NaN | NaN | NaN | NaN | NaN | 20.0 | 9.0 | NaN | NaN | NaN | NaN | 123.0 | 165.0 | 218.0 | NaN | NaN | NaN |
1345 | 2017-01-29 00:30:00 | 0 | 78.0 | -1.0 | 0030 | 2017-01-29 | 2017-01-29 | 2017 | 1 | 29 | 0 | 1 | 1 | 30 | 1 | 6 | 5 | 5 | -3.0 | -8.0 | 15.0 | -8.0 | -16.0 | NaN | NaN | NaN | NaN | NaN | NaN | 79.0 | 58.0 | 82.0 | 66.0 | 67.0 | 83.0 | NaN | NaN | NaN | NaN | NaN | -0.037975 | -0.137931 | 0.182927 | -0.121212 | -0.238806 | NaN | NaN | NaN | NaN | NaN | NaN | 12.0 | -4.0 | NaN | NaN | NaN | NaN | 161.0 | 228.0 | 311.0 | NaN | NaN | NaN |
1392 | 2017-01-30 00:00:00 | 0 | 10.0 | 4.0 | 0000 | 2017-01-30 | 2017-01-30 | 2017 | 1 | 30 | 0 | 1 | 1 | 0 | 1 | 0 | 5 | 5 | -11.0 | 1.0 | 3.0 | 19.0 | -2.0 | NaN | NaN | NaN | NaN | NaN | NaN | 6.0 | 62.0 | 17.0 | 61.0 | 14.0 | 16.0 | NaN | NaN | NaN | NaN | NaN | -1.833333 | 0.016129 | 0.176471 | 0.311475 | -0.142857 | NaN | NaN | NaN | NaN | NaN | NaN | -8.0 | -10.0 | NaN | NaN | NaN | NaN | 23.0 | 37.0 | 53.0 | NaN | NaN | NaN |
1393 | 2017-01-30 00:30:00 | 0 | 8.0 | -2.0 | 0030 | 2017-01-30 | 2017-01-30 | 2017 | 1 | 30 | 0 | 1 | 1 | 30 | 1 | 0 | 5 | 5 | -19.0 | -3.0 | 24.0 | 15.0 | -2.0 | NaN | NaN | NaN | NaN | NaN | NaN | 10.0 | 79.0 | 29.0 | 82.0 | 5.0 | 7.0 | NaN | NaN | NaN | NaN | NaN | -1.900000 | -0.037975 | 0.827586 | 0.182927 | -0.400000 | NaN | NaN | NaN | NaN | NaN | NaN | 5.0 | 3.0 | NaN | NaN | NaN | NaN | 39.0 | 44.0 | 51.0 | NaN | NaN | NaN |
1440 | 2017-01-31 00:00:00 | 0 | 8.0 | -1.0 | 0000 | 2017-01-31 | 2017-01-31 | 2017 | 1 | 31 | 0 | 1 | 1 | 0 | 1 | 1 | 5 | 5 | 3.0 | -11.0 | -1.0 | 3.0 | -1.0 | NaN | NaN | NaN | NaN | NaN | NaN | 9.0 | 6.0 | 6.0 | 17.0 | 7.0 | 8.0 | NaN | NaN | NaN | NaN | NaN | 0.333333 | -1.833333 | -0.166667 | 0.176471 | -0.142857 | NaN | NaN | NaN | NaN | NaN | NaN | 2.0 | 1.0 | NaN | NaN | NaN | NaN | 15.0 | 22.0 | 30.0 | NaN | NaN | NaN |
1441 | 2017-01-31 00:30:00 | 0 | 4.0 | 4.0 | 0030 | 2017-01-31 | 2017-01-31 | 2017 | 1 | 31 | 0 | 1 | 1 | 30 | 1 | 1 | 5 | 5 | -8.0 | -19.0 | -1.0 | 24.0 | -2.0 | NaN | NaN | NaN | NaN | NaN | NaN | 0.0 | 10.0 | 8.0 | 29.0 | 9.0 | 11.0 | NaN | NaN | NaN | NaN | NaN | -inf | -1.900000 | -0.125000 | 0.827586 | -0.222222 | NaN | NaN | NaN | NaN | NaN | NaN | -9.0 | -11.0 | NaN | NaN | NaN | NaN | 8.0 | 17.0 | 28.0 | NaN | NaN | NaN |
1488 | 2017-02-01 00:00:00 | 0 | 12.0 | 1.0 | 0000 | 2017-02-01 | 2017-02-01 | 2017 | 2 | 1 | 0 | 1 | 1 | 0 | 1 | 2 | 5 | 1 | 2.0 | 3.0 | -6.0 | -1.0 | 8.0 | NaN | NaN | NaN | NaN | NaN | NaN | 11.0 | 9.0 | 9.0 | 6.0 | 15.0 | 7.0 | NaN | NaN | NaN | NaN | NaN | 0.181818 | 0.333333 | -0.666667 | -0.166667 | 0.533333 | NaN | NaN | NaN | NaN | NaN | NaN | -4.0 | 4.0 | NaN | NaN | NaN | NaN | 20.0 | 35.0 | 42.0 | NaN | NaN | NaN |
1489 | 2017-02-01 00:30:00 | 0 | 4.0 | -4.0 | 0030 | 2017-02-01 | 2017-02-01 | 2017 | 2 | 1 | 0 | 1 | 1 | 30 | 1 | 2 | 5 | 1 | 2.0 | -8.0 | -7.0 | -1.0 | 9.0 | NaN | NaN | NaN | NaN | NaN | NaN | 8.0 | 0.0 | 6.0 | 8.0 | 13.0 | 4.0 | NaN | NaN | NaN | NaN | NaN | 0.250000 | -inf | -1.166667 | -0.125000 | 0.692308 | NaN | NaN | NaN | NaN | NaN | NaN | -5.0 | 4.0 | NaN | NaN | NaN | NaN | 14.0 | 27.0 | 31.0 | NaN | NaN | NaN |
1536 | 2017-02-02 00:00:00 | 0 | 9.0 | -9.0 | 0000 | 2017-02-02 | 2017-02-02 | 2017 | 2 | 2 | 0 | 1 | 1 | 0 | 1 | 3 | 5 | 1 | 0.0 | 2.0 | 1.0 | -6.0 | 5.0 | NaN | NaN | NaN | NaN | NaN | NaN | 18.0 | 11.0 | 18.0 | 9.0 | 17.0 | 12.0 | NaN | NaN | NaN | NaN | NaN | 0.000000 | 0.181818 | 0.055556 | -0.666667 | 0.294118 | NaN | NaN | NaN | NaN | NaN | NaN | 1.0 | 6.0 | NaN | NaN | NaN | NaN | 36.0 | 53.0 | 65.0 | NaN | NaN | NaN |
1537 | 2017-02-02 00:30:00 | 0 | 14.0 | 3.0 | 0030 | 2017-02-02 | 2017-02-02 | 2017 | 2 | 2 | 0 | 1 | 1 | 30 | 1 | 3 | 5 | 1 | -2.0 | 2.0 | 3.0 | -7.0 | 1.0 | NaN | NaN | NaN | NaN | NaN | NaN | 11.0 | 8.0 | 13.0 | 6.0 | 10.0 | 9.0 | NaN | NaN | NaN | NaN | NaN | -0.181818 | 0.250000 | 0.230769 | -1.166667 | 0.100000 | NaN | NaN | NaN | NaN | NaN | NaN | 1.0 | 2.0 | NaN | NaN | NaN | NaN | 24.0 | 34.0 | 43.0 | NaN | NaN | NaN |
1584 | 2017-02-03 00:00:00 | 0 | 29.0 | 5.0 | 0000 | 2017-02-03 | 2017-02-03 | 2017 | 2 | 3 | 0 | 1 | 1 | 0 | 1 | 4 | 5 | 1 | 0.0 | 0.0 | -6.0 | 1.0 | 11.0 | NaN | NaN | NaN | NaN | NaN | NaN | 24.0 | 18.0 | 24.0 | 18.0 | 30.0 | 19.0 | NaN | NaN | NaN | NaN | NaN | 0.000000 | 0.000000 | -0.250000 | 0.055556 | 0.366667 | NaN | NaN | NaN | NaN | NaN | NaN | -6.0 | 5.0 | NaN | NaN | NaN | NaN | 48.0 | 78.0 | 97.0 | NaN | NaN | NaN |
1585 | 2017-02-03 00:30:00 | 0 | 31.0 | 10.0 | 0030 | 2017-02-03 | 2017-02-03 | 2017 | 2 | 3 | 0 | 1 | 1 | 30 | 1 | 4 | 5 | 1 | 6.0 | -2.0 | -6.0 | 3.0 | 0.0 | NaN | NaN | NaN | NaN | NaN | NaN | 21.0 | 11.0 | 15.0 | 13.0 | 21.0 | 21.0 | NaN | NaN | NaN | NaN | NaN | 0.285714 | -0.181818 | -0.400000 | 0.230769 | 0.000000 | NaN | NaN | NaN | NaN | NaN | NaN | 0.0 | 0.0 | NaN | NaN | NaN | NaN | 36.0 | 57.0 | 78.0 | NaN | NaN | NaN |
1632 | 2017-02-04 00:00:00 | 0 | 66.0 | -7.0 | 0000 | 2017-02-04 | 2017-02-04 | 2017 | 2 | 4 | 0 | 1 | 1 | 0 | 1 | 5 | 5 | 1 | 11.0 | 0.0 | -7.0 | -6.0 | 8.0 | NaN | NaN | NaN | NaN | NaN | NaN | 73.0 | 24.0 | 62.0 | 24.0 | 69.0 | 61.0 | NaN | NaN | NaN | NaN | NaN | 0.150685 | 0.000000 | -0.112903 | -0.250000 | 0.115942 | NaN | NaN | NaN | NaN | NaN | NaN | 4.0 | 12.0 | NaN | NaN | NaN | NaN | 135.0 | 204.0 | 265.0 | NaN | NaN | NaN |
1633 | 2017-02-04 00:30:00 | 0 | 67.0 | 2.0 | 0030 | 2017-02-04 | 2017-02-04 | 2017 | 2 | 4 | 0 | 1 | 1 | 30 | 1 | 5 | 5 | 1 | 7.0 | 6.0 | -8.0 | -6.0 | -8.0 | NaN | NaN | NaN | NaN | NaN | NaN | 65.0 | 21.0 | 58.0 | 15.0 | 66.0 | 74.0 | NaN | NaN | NaN | NaN | NaN | 0.107692 | 0.285714 | -0.137931 | -0.400000 | -0.121212 | NaN | NaN | NaN | NaN | NaN | NaN | -1.0 | -9.0 | NaN | NaN | NaN | NaN | 123.0 | 189.0 | 263.0 | NaN | NaN | NaN |
1680 | 2017-02-05 00:00:00 | 0 | 68.0 | -16.0 | 0000 | 2017-02-05 | 2017-02-05 | 2017 | 2 | 5 | 0 | 1 | 1 | 0 | 1 | 6 | 6 | 1 | 22.0 | 11.0 | 1.0 | -7.0 | 19.0 | -11.0 | NaN | NaN | NaN | NaN | NaN | 84.0 | 73.0 | 62.0 | 62.0 | 61.0 | 42.0 | 53.0 | NaN | NaN | NaN | NaN | 0.261905 | 0.150685 | 0.016129 | -0.112903 | 0.311475 | -0.261905 | NaN | NaN | NaN | NaN | NaN | 23.0 | 42.0 | 31.0 | NaN | NaN | NaN | 146.0 | 207.0 | 249.0 | 302.0 | NaN | NaN |
1681 | 2017-02-05 00:30:00 | 0 | 83.0 | 5.0 | 0030 | 2017-02-05 | 2017-02-05 | 2017 | 2 | 5 | 0 | 1 | 1 | 30 | 1 | 6 | 6 | 1 | -1.0 | 7.0 | -3.0 | -8.0 | 15.0 | -16.0 | NaN | NaN | NaN | NaN | NaN | 78.0 | 65.0 | 79.0 | 58.0 | 82.0 | 67.0 | 83.0 | NaN | NaN | NaN | NaN | -0.012821 | 0.107692 | -0.037975 | -0.137931 | 0.182927 | -0.238806 | NaN | NaN | NaN | NaN | NaN | -4.0 | 11.0 | -5.0 | NaN | NaN | NaN | 157.0 | 239.0 | 306.0 | 389.0 | NaN | NaN |
1728 | 2017-02-06 00:00:00 | 0 | 8.0 | -2.0 | 0000 | 2017-02-06 | 2017-02-06 | 2017 | 2 | 6 | 0 | 1 | 1 | 0 | 1 | 0 | 6 | 1 | 4.0 | 22.0 | -11.0 | 1.0 | 3.0 | -2.0 | NaN | NaN | NaN | NaN | NaN | 10.0 | 84.0 | 6.0 | 62.0 | 17.0 | 14.0 | 16.0 | NaN | NaN | NaN | NaN | 0.400000 | 0.261905 | -1.833333 | 0.016129 | 0.176471 | -0.142857 | NaN | NaN | NaN | NaN | NaN | -7.0 | -4.0 | -6.0 | NaN | NaN | NaN | 16.0 | 33.0 | 47.0 | 63.0 | NaN | NaN |
1729 | 2017-02-06 00:30:00 | 0 | 10.0 | 2.0 | 0030 | 2017-02-06 | 2017-02-06 | 2017 | 2 | 6 | 0 | 1 | 1 | 30 | 1 | 0 | 6 | 1 | -2.0 | -1.0 | -19.0 | -3.0 | 24.0 | -2.0 | NaN | NaN | NaN | NaN | NaN | 8.0 | 78.0 | 10.0 | 79.0 | 29.0 | 5.0 | 7.0 | NaN | NaN | NaN | NaN | -0.250000 | -0.012821 | -1.900000 | -0.037975 | 0.827586 | -0.400000 | NaN | NaN | NaN | NaN | NaN | -21.0 | 3.0 | 1.0 | NaN | NaN | NaN | 18.0 | 47.0 | 52.0 | 59.0 | NaN | NaN |
1776 | 2017-02-07 00:00:00 | 0 | 8.0 | 0.0 | 0000 | 2017-02-07 | 2017-02-07 | 2017 | 2 | 7 | 0 | 1 | 1 | 0 | 1 | 1 | 6 | 1 | -1.0 | 4.0 | 3.0 | -11.0 | -1.0 | -1.0 | NaN | NaN | NaN | NaN | NaN | 8.0 | 10.0 | 9.0 | 6.0 | 6.0 | 7.0 | 8.0 | NaN | NaN | NaN | NaN | -0.125000 | 0.400000 | 0.333333 | -1.833333 | -0.166667 | -0.142857 | NaN | NaN | NaN | NaN | NaN | 2.0 | 1.0 | 0.0 | NaN | NaN | NaN | 17.0 | 23.0 | 30.0 | 38.0 | NaN | NaN |
1777 | 2017-02-07 00:30:00 | 0 | 4.0 | 0.0 | 0030 | 2017-02-07 | 2017-02-07 | 2017 | 2 | 7 | 0 | 1 | 1 | 30 | 1 | 1 | 6 | 1 | 4.0 | -2.0 | -8.0 | -19.0 | -1.0 | -2.0 | NaN | NaN | NaN | NaN | NaN | 4.0 | 8.0 | 0.0 | 10.0 | 8.0 | 9.0 | 11.0 | NaN | NaN | NaN | NaN | 1.000000 | -0.250000 | -inf | -1.900000 | -0.125000 | -0.222222 | NaN | NaN | NaN | NaN | NaN | -4.0 | -5.0 | -7.0 | NaN | NaN | NaN | 4.0 | 12.0 | 21.0 | 32.0 | NaN | NaN |
1824 | 2017-02-08 00:00:00 | 0 | 6.0 | -6.0 | 0000 | 2017-02-08 | 2017-02-08 | 2017 | 2 | 8 | 0 | 1 | 1 | 0 | 1 | 2 | 6 | 2 | 1.0 | -1.0 | 2.0 | 3.0 | -6.0 | 8.0 | NaN | NaN | NaN | NaN | NaN | 12.0 | 8.0 | 11.0 | 9.0 | 9.0 | 15.0 | 7.0 | NaN | NaN | NaN | NaN | 0.083333 | -0.125000 | 0.181818 | 0.333333 | -0.666667 | 0.533333 | NaN | NaN | NaN | NaN | NaN | 3.0 | -3.0 | 5.0 | NaN | NaN | NaN | 23.0 | 32.0 | 47.0 | 54.0 | NaN | NaN |
1825 | 2017-02-08 00:30:00 | 0 | 11.0 | 7.0 | 0030 | 2017-02-08 | 2017-02-08 | 2017 | 2 | 8 | 0 | 1 | 1 | 30 | 1 | 2 | 6 | 2 | -4.0 | 4.0 | 2.0 | -8.0 | -7.0 | 9.0 | NaN | NaN | NaN | NaN | NaN | 4.0 | 4.0 | 8.0 | 0.0 | 6.0 | 13.0 | 4.0 | NaN | NaN | NaN | NaN | -1.000000 | 1.000000 | 0.250000 | -inf | -1.166667 | 0.692308 | NaN | NaN | NaN | NaN | NaN | -2.0 | -9.0 | 0.0 | NaN | NaN | NaN | 12.0 | 18.0 | 31.0 | 35.0 | NaN | NaN |
1872 | 2017-02-09 00:00:00 | 0 | 22.0 | 13.0 | 0000 | 2017-02-09 | 2017-02-09 | 2017 | 2 | 9 | 0 | 1 | 1 | 0 | 1 | 3 | 6 | 2 | -9.0 | 1.0 | 0.0 | 2.0 | 1.0 | 5.0 | NaN | NaN | NaN | NaN | NaN | 9.0 | 12.0 | 18.0 | 11.0 | 18.0 | 17.0 | 12.0 | NaN | NaN | NaN | NaN | -1.000000 | 0.083333 | 0.000000 | 0.181818 | 0.055556 | 0.294118 | NaN | NaN | NaN | NaN | NaN | -9.0 | -8.0 | -3.0 | NaN | NaN | NaN | 27.0 | 45.0 | 62.0 | 74.0 | NaN | NaN |
1873 | 2017-02-09 00:30:00 | 0 | 15.0 | 1.0 | 0030 | 2017-02-09 | 2017-02-09 | 2017 | 2 | 9 | 0 | 1 | 1 | 30 | 1 | 3 | 6 | 2 | 3.0 | -4.0 | -2.0 | 2.0 | 3.0 | 1.0 | NaN | NaN | NaN | NaN | NaN | 14.0 | 4.0 | 11.0 | 8.0 | 13.0 | 10.0 | 9.0 | NaN | NaN | NaN | NaN | 0.214286 | -1.000000 | -0.181818 | 0.250000 | 0.230769 | 0.100000 | NaN | NaN | NaN | NaN | NaN | 1.0 | 4.0 | 5.0 | NaN | NaN | NaN | 25.0 | 38.0 | 48.0 | 57.0 | NaN | NaN |
1920 | 2017-02-10 00:00:00 | 0 | 15.0 | -14.0 | 0000 | 2017-02-10 | 2017-02-10 | 2017 | 2 | 10 | 0 | 1 | 1 | 0 | 1 | 4 | 6 | 2 | 5.0 | -9.0 | 0.0 | 0.0 | -6.0 | 11.0 | NaN | NaN | NaN | NaN | NaN | 29.0 | 9.0 | 24.0 | 18.0 | 24.0 | 30.0 | 19.0 | NaN | NaN | NaN | NaN | 0.172414 | -1.000000 | 0.000000 | 0.000000 | -0.250000 | 0.366667 | NaN | NaN | NaN | NaN | NaN | 5.0 | -1.0 | 10.0 | NaN | NaN | NaN | 53.0 | 77.0 | 107.0 | 126.0 | NaN | NaN |
1921 | 2017-02-10 00:30:00 | 0 | 10.0 | -21.0 | 0030 | 2017-02-10 | 2017-02-10 | 2017 | 2 | 10 | 0 | 1 | 1 | 30 | 1 | 4 | 6 | 2 | 10.0 | 3.0 | 6.0 | -2.0 | -6.0 | 0.0 | NaN | NaN | NaN | NaN | NaN | 31.0 | 14.0 | 21.0 | 11.0 | 15.0 | 21.0 | 21.0 | NaN | NaN | NaN | NaN | 0.322581 | 0.214286 | 0.285714 | -0.181818 | -0.400000 | 0.000000 | NaN | NaN | NaN | NaN | NaN | 16.0 | 10.0 | 10.0 | NaN | NaN | NaN | 52.0 | 67.0 | 88.0 | 109.0 | NaN | NaN |
1968 | 2017-02-11 00:00:00 | 0 | 47.0 | -19.0 | 0000 | 2017-02-11 | 2017-02-11 | 2017 | 2 | 11 | 0 | 1 | 1 | 0 | 1 | 5 | 6 | 2 | -7.0 | 5.0 | 11.0 | 0.0 | -7.0 | 8.0 | NaN | NaN | NaN | NaN | NaN | 66.0 | 29.0 | 73.0 | 24.0 | 62.0 | 69.0 | 61.0 | NaN | NaN | NaN | NaN | -0.106061 | 0.172414 | 0.150685 | 0.000000 | -0.112903 | 0.115942 | NaN | NaN | NaN | NaN | NaN | 4.0 | -3.0 | 5.0 | NaN | NaN | NaN | 139.0 | 201.0 | 270.0 | 331.0 | NaN | NaN |
1969 | 2017-02-11 00:30:00 | 0 | 56.0 | -11.0 | 0030 | 2017-02-11 | 2017-02-11 | 2017 | 2 | 11 | 0 | 1 | 1 | 30 | 1 | 5 | 6 | 2 | 2.0 | 10.0 | 7.0 | 6.0 | -8.0 | -8.0 | NaN | NaN | NaN | NaN | NaN | 67.0 | 31.0 | 65.0 | 21.0 | 58.0 | 66.0 | 74.0 | NaN | NaN | NaN | NaN | 0.029851 | 0.322581 | 0.107692 | 0.285714 | -0.137931 | -0.121212 | NaN | NaN | NaN | NaN | NaN | 9.0 | 1.0 | -7.0 | NaN | NaN | NaN | 132.0 | 190.0 | 256.0 | 330.0 | NaN | NaN |
2016 | 2017-02-12 00:00:00 | 0 | 90.0 | 22.0 | 0000 | 2017-02-12 | 2017-02-12 | 2017 | 2 | 12 | 0 | 1 | 1 | 0 | 1 | 6 | 7 | 2 | -16.0 | -7.0 | 22.0 | 11.0 | 1.0 | 19.0 | -11.0 | NaN | NaN | NaN | NaN | 68.0 | 66.0 | 84.0 | 73.0 | 62.0 | 61.0 | 42.0 | 53.0 | NaN | NaN | NaN | -0.235294 | -0.106061 | 0.261905 | 0.150685 | 0.016129 | 0.311475 | -0.261905 | -0.261905 | -0.261905 | NaN | NaN | 6.0 | 7.0 | 26.0 | 15.0 | NaN | NaN | 152.0 | 214.0 | 275.0 | 317.0 | 370.0 | NaN |
2017 | 2017-02-12 00:30:00 | 0 | 105.0 | 22.0 | 0030 | 2017-02-12 | 2017-02-12 | 2017 | 2 | 12 | 0 | 1 | 1 | 30 | 1 | 6 | 7 | 2 | 5.0 | 2.0 | -1.0 | 7.0 | -3.0 | 15.0 | -16.0 | NaN | NaN | NaN | NaN | 83.0 | 67.0 | 78.0 | 65.0 | 79.0 | 82.0 | 67.0 | 83.0 | NaN | NaN | NaN | 0.060241 | 0.029851 | -0.012821 | 0.107692 | -0.037975 | 0.182927 | -0.238806 | -0.238806 | -0.238806 | NaN | NaN | 4.0 | 1.0 | 16.0 | 0.0 | NaN | NaN | 161.0 | 240.0 | 322.0 | 389.0 | 472.0 | NaN |
2064 | 2017-02-13 00:00:00 | 0 | 4.0 | -4.0 | 0000 | 2017-02-13 | 2017-02-13 | 2017 | 2 | 13 | 0 | 1 | 1 | 0 | 1 | 0 | 7 | 2 | -2.0 | -16.0 | 4.0 | 22.0 | -11.0 | 3.0 | -2.0 | NaN | NaN | NaN | NaN | 8.0 | 68.0 | 10.0 | 84.0 | 6.0 | 17.0 | 14.0 | 16.0 | NaN | NaN | NaN | -0.250000 | -0.235294 | 0.400000 | 0.261905 | -1.833333 | 0.176471 | -0.142857 | -0.142857 | -0.142857 | NaN | NaN | 2.0 | -9.0 | -6.0 | -8.0 | NaN | NaN | 18.0 | 24.0 | 41.0 | 55.0 | 71.0 | NaN |
2065 | 2017-02-13 00:30:00 | 0 | 4.0 | -6.0 | 0030 | 2017-02-13 | 2017-02-13 | 2017 | 2 | 13 | 0 | 1 | 1 | 30 | 1 | 0 | 7 | 2 | 2.0 | 5.0 | -2.0 | -1.0 | -19.0 | 24.0 | -2.0 | NaN | NaN | NaN | NaN | 10.0 | 83.0 | 8.0 | 78.0 | 10.0 | 29.0 | 5.0 | 7.0 | NaN | NaN | NaN | 0.200000 | 0.060241 | -0.250000 | -0.012821 | -1.900000 | 0.827586 | -0.400000 | -0.400000 | -0.400000 | NaN | NaN | 0.0 | -19.0 | 5.0 | 3.0 | NaN | NaN | 18.0 | 28.0 | 57.0 | 62.0 | 69.0 | NaN |
2112 | 2017-02-14 00:00:00 | 0 | 13.0 | 5.0 | 0000 | 2017-02-14 | 2017-02-14 | 2017 | 2 | 14 | 0 | 1 | 1 | 0 | 1 | 1 | 7 | 2 | 0.0 | -2.0 | -1.0 | 4.0 | 3.0 | -1.0 | -1.0 | NaN | NaN | NaN | NaN | 8.0 | 8.0 | 8.0 | 10.0 | 9.0 | 6.0 | 7.0 | 8.0 | NaN | NaN | NaN | 0.000000 | -0.250000 | -0.125000 | 0.400000 | 0.333333 | -0.166667 | -0.142857 | -0.142857 | -0.142857 | NaN | NaN | -1.0 | 2.0 | 1.0 | 0.0 | NaN | NaN | 16.0 | 25.0 | 31.0 | 38.0 | 46.0 | NaN |
2113 | 2017-02-14 00:30:00 | 0 | 13.0 | 9.0 | 0030 | 2017-02-14 | 2017-02-14 | 2017 | 2 | 14 | 0 | 1 | 1 | 30 | 1 | 1 | 7 | 2 | 0.0 | 2.0 | 4.0 | -2.0 | -8.0 | -1.0 | -2.0 | NaN | NaN | NaN | NaN | 4.0 | 10.0 | 4.0 | 8.0 | 0.0 | 8.0 | 9.0 | 11.0 | NaN | NaN | NaN | 0.000000 | 0.200000 | 1.000000 | -0.250000 | -inf | -0.125000 | -0.222222 | -0.222222 | -0.222222 | NaN | NaN | 4.0 | -4.0 | -5.0 | -7.0 | NaN | NaN | 8.0 | 8.0 | 16.0 | 25.0 | 36.0 | NaN |
2160 | 2017-02-15 00:00:00 | 0 | 28.0 | 22.0 | 0000 | 2017-02-15 | 2017-02-15 | 2017 | 2 | 15 | 0 | 1 | 1 | 0 | 1 | 2 | 7 | 3 | -6.0 | 0.0 | 1.0 | -1.0 | 2.0 | -6.0 | 8.0 | NaN | NaN | NaN | NaN | 6.0 | 8.0 | 12.0 | 8.0 | 11.0 | 9.0 | 15.0 | 7.0 | NaN | NaN | NaN | -1.000000 | 0.000000 | 0.083333 | -0.125000 | 0.181818 | -0.666667 | 0.533333 | 0.533333 | 0.533333 | NaN | NaN | -5.0 | -3.0 | -9.0 | -1.0 | NaN | NaN | 18.0 | 29.0 | 38.0 | 53.0 | 60.0 | NaN |
2161 | 2017-02-15 00:30:00 | 0 | 28.0 | 17.0 | 0030 | 2017-02-15 | 2017-02-15 | 2017 | 2 | 15 | 0 | 1 | 1 | 30 | 1 | 2 | 7 | 3 | 7.0 | 0.0 | -4.0 | 4.0 | 2.0 | -7.0 | 9.0 | NaN | NaN | NaN | NaN | 11.0 | 4.0 | 4.0 | 4.0 | 8.0 | 6.0 | 13.0 | 4.0 | NaN | NaN | NaN | 0.636364 | 0.000000 | -1.000000 | 1.000000 | 0.250000 | -1.166667 | 0.692308 | 0.692308 | 0.692308 | NaN | NaN | 3.0 | 5.0 | -2.0 | 7.0 | NaN | NaN | 15.0 | 23.0 | 29.0 | 42.0 | 46.0 | NaN |
2208 | 2017-02-16 00:00:00 | 0 | 12.0 | -10.0 | 0000 | 2017-02-16 | 2017-02-16 | 2017 | 2 | 16 | 0 | 1 | 1 | 0 | 1 | 3 | 7 | 3 | 13.0 | -6.0 | -9.0 | 1.0 | 0.0 | 1.0 | 5.0 | NaN | NaN | NaN | NaN | 22.0 | 6.0 | 9.0 | 12.0 | 18.0 | 18.0 | 17.0 | 12.0 | NaN | NaN | NaN | 0.590909 | -1.000000 | -1.000000 | 0.083333 | 0.000000 | 0.055556 | 0.294118 | 0.294118 | 0.294118 | NaN | NaN | 4.0 | 4.0 | 5.0 | 10.0 | NaN | NaN | 31.0 | 49.0 | 67.0 | 84.0 | 96.0 | NaN |
2209 | 2017-02-16 00:30:00 | 0 | 20.0 | 5.0 | 0030 | 2017-02-16 | 2017-02-16 | 2017 | 2 | 16 | 0 | 1 | 1 | 30 | 1 | 3 | 7 | 3 | 1.0 | 7.0 | 3.0 | -4.0 | -2.0 | 3.0 | 1.0 | NaN | NaN | NaN | NaN | 15.0 | 11.0 | 14.0 | 4.0 | 11.0 | 13.0 | 10.0 | 9.0 | NaN | NaN | NaN | 0.066667 | 0.636364 | 0.214286 | -1.000000 | -0.181818 | 0.230769 | 0.100000 | 0.100000 | 0.100000 | NaN | NaN | 4.0 | 2.0 | 5.0 | 6.0 | NaN | NaN | 29.0 | 40.0 | 53.0 | 63.0 | 72.0 | NaN |
2256 | 2017-02-17 00:00:00 | 0 | 26.0 | 11.0 | 0000 | 2017-02-17 | 2017-02-17 | 2017 | 2 | 17 | 0 | 1 | 1 | 0 | 1 | 4 | 7 | 3 | -14.0 | 13.0 | 5.0 | -9.0 | 0.0 | -6.0 | 11.0 | NaN | NaN | NaN | NaN | 15.0 | 22.0 | 29.0 | 9.0 | 24.0 | 24.0 | 30.0 | 19.0 | NaN | NaN | NaN | -0.933333 | 0.590909 | 0.172414 | -1.000000 | 0.000000 | -0.250000 | 0.366667 | 0.366667 | 0.366667 | NaN | NaN | -9.0 | -9.0 | -15.0 | -4.0 | NaN | NaN | 44.0 | 68.0 | 92.0 | 122.0 | 141.0 | NaN |
2257 | 2017-02-17 00:30:00 | 0 | 24.0 | 14.0 | 0030 | 2017-02-17 | 2017-02-17 | 2017 | 2 | 17 | 0 | 1 | 1 | 30 | 1 | 4 | 7 | 3 | -21.0 | 1.0 | 10.0 | 3.0 | 6.0 | -6.0 | 0.0 | NaN | NaN | NaN | NaN | 10.0 | 15.0 | 31.0 | 14.0 | 21.0 | 15.0 | 21.0 | 21.0 | NaN | NaN | NaN | -2.100000 | 0.066667 | 0.322581 | 0.214286 | 0.285714 | -0.400000 | 0.000000 | 0.000000 | 0.000000 | NaN | NaN | -11.0 | -5.0 | -11.0 | -11.0 | NaN | NaN | 41.0 | 62.0 | 77.0 | 98.0 | 119.0 | NaN |
2304 | 2017-02-18 00:00:00 | 0 | 56.0 | 9.0 | 0000 | 2017-02-18 | 2017-02-18 | 2017 | 2 | 18 | 0 | 1 | 1 | 0 | 1 | 5 | 7 | 3 | -19.0 | -14.0 | -7.0 | 5.0 | 11.0 | -7.0 | 8.0 | NaN | NaN | NaN | NaN | 47.0 | 15.0 | 66.0 | 29.0 | 73.0 | 62.0 | 69.0 | 61.0 | NaN | NaN | NaN | -0.404255 | -0.933333 | -0.106061 | 0.172414 | 0.150685 | -0.112903 | 0.115942 | 0.115942 | 0.115942 | NaN | NaN | -26.0 | -15.0 | -22.0 | -14.0 | NaN | NaN | 113.0 | 186.0 | 248.0 | 317.0 | 378.0 | NaN |
2305 | 2017-02-18 00:30:00 | 0 | 71.0 | 15.0 | 0030 | 2017-02-18 | 2017-02-18 | 2017 | 2 | 18 | 0 | 1 | 1 | 30 | 1 | 5 | 7 | 3 | -11.0 | -21.0 | 2.0 | 10.0 | 7.0 | -8.0 | -8.0 | NaN | NaN | NaN | NaN | 56.0 | 10.0 | 67.0 | 31.0 | 65.0 | 58.0 | 66.0 | 74.0 | NaN | NaN | NaN | -0.196429 | -2.100000 | 0.029851 | 0.322581 | 0.107692 | -0.137931 | -0.121212 | -0.121212 | -0.121212 | NaN | NaN | -9.0 | -2.0 | -10.0 | -18.0 | NaN | NaN | 123.0 | 188.0 | 246.0 | 312.0 | 386.0 | NaN |
2352 | 2017-02-19 00:00:00 | 0 | 87.0 | -3.0 | 0000 | 2017-02-19 | 2017-02-19 | 2017 | 2 | 19 | 0 | 1 | 1 | 0 | 1 | 6 | 8 | 3 | 22.0 | -19.0 | -16.0 | -7.0 | 22.0 | 1.0 | 19.0 | -11.0 | NaN | NaN | NaN | 90.0 | 47.0 | 68.0 | 66.0 | 84.0 | 62.0 | 61.0 | 42.0 | 53.0 | NaN | NaN | 0.244444 | -0.404255 | -0.235294 | -0.106061 | 0.261905 | 0.016129 | 0.311475 | 0.311475 | 0.311475 | NaN | NaN | 6.0 | 28.0 | 29.0 | 48.0 | 37.0 | NaN | 158.0 | 242.0 | 304.0 | 365.0 | 407.0 | 460.0 |
2353 | 2017-02-19 00:30:00 | 0 | 81.0 | -24.0 | 0030 | 2017-02-19 | 2017-02-19 | 2017 | 2 | 19 | 0 | 1 | 1 | 30 | 1 | 6 | 8 | 3 | 22.0 | -11.0 | 5.0 | 2.0 | -1.0 | -3.0 | 15.0 | -16.0 | NaN | NaN | NaN | 105.0 | 56.0 | 83.0 | 67.0 | 78.0 | 79.0 | 82.0 | 67.0 | 83.0 | NaN | NaN | 0.209524 | -0.196429 | 0.060241 | 0.029851 | -0.012821 | -0.037975 | 0.182927 | 0.182927 | 0.182927 | NaN | NaN | 27.0 | 26.0 | 23.0 | 38.0 | 22.0 | NaN | 188.0 | 266.0 | 345.0 | 427.0 | 494.0 | 577.0 |
# 手動でクロスバリデーション期間の設定
## valid期間は一週間で、それをずらしていく
t_start = datetime.datetime(2017, 7, 1)
t_end = datetime.datetime(2019, 12, 1)
num_valid = 20
list_term = []
for i in range(num_valid):
list_term += [
[
t_start + datetime.timedelta(days=7*i), # trainの最初の日
t_end + datetime.timedelta(days=-7*(num_valid-i)), # trainの最後の次の日 = validの最初の日
t_end + datetime.timedelta(days=-7*(num_valid-i-1)), # validの最後の次の日
]
]
# testデータ作成
target = "y_diff"
feature_c = [
"id","month","day","hour","yobi","week_number_year","peak","ampm","minute","quarter","week_number_month",
]
feature_r = [
## diff
"lag_7_y_diff","lag_8_y_diff","lag_14_y_diff","lag_15_y_diff","lag_21_y_diff","lag_28_y_diff","lag_35_y_diff","lag_42_y_diff","lag_49_y_diff","lag_364_y_diff","lag_182_y_diff",
## y
"lag_7_y","lag_8_y","lag_14_y","lag_15_y","lag_21_y","lag_28_y","lag_35_y","lag_42_y","lag_49_y","lag_364_y","lag_182_y",
## ratio
"lag_7_y_ratio","lag_8_y_ratio","lag_14_y_ratio","lag_15_y_ratio","lag_21_y_ratio","lag_28_y_ratio","lag_35_y_ratio","lag_42_y_ratio","lag_49_y_ratio","lag_364_y_ratio","lag_182_y_ratio",
## sum
"lag_7_14_diff_sum","lag_7_14_21_diff_sum","lag_7_14_21_28_diff_sum","lag_7_14_21_28_35_diff_sum","lag_7_14_21_28_35_42_diff_sum","lag_7_14_21_28_35_42_49_diff_sum",
"lag_7_14_sum","lag_7_14_21_sum","lag_7_14_21_28_sum","lag_7_14_21_28_35_sum","lag_7_14_21_28_35_42_sum","lag_7_14_21_28_35_42_49_sum",
]
feature = feature_r + feature_c
test_X = data_df[data_df["ds"] >= t_end][["ds"]+feature].copy().reset_index(drop=True)
test_X.head()
ds | lag_7_y_diff | lag_8_y_diff | lag_14_y_diff | lag_15_y_diff | lag_21_y_diff | lag_28_y_diff | lag_35_y_diff | lag_42_y_diff | lag_49_y_diff | lag_364_y_diff | lag_182_y_diff | lag_7_y | lag_8_y | lag_14_y | lag_15_y | lag_21_y | lag_28_y | lag_35_y | lag_42_y | lag_49_y | lag_364_y | lag_182_y | lag_7_y_ratio | lag_8_y_ratio | lag_14_y_ratio | lag_15_y_ratio | lag_21_y_ratio | lag_28_y_ratio | lag_35_y_ratio | lag_42_y_ratio | lag_49_y_ratio | lag_364_y_ratio | lag_182_y_ratio | lag_7_14_diff_sum | lag_7_14_21_diff_sum | lag_7_14_21_28_diff_sum | lag_7_14_21_28_35_diff_sum | lag_7_14_21_28_35_42_diff_sum | lag_7_14_21_28_35_42_49_diff_sum | lag_7_14_sum | lag_7_14_21_sum | lag_7_14_21_28_sum | lag_7_14_21_28_35_sum | lag_7_14_21_28_35_42_sum | lag_7_14_21_28_35_42_49_sum | id | month | day | hour | yobi | week_number_year | peak | ampm | minute | quarter | week_number_month | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2019-12-01 00:00:00 | -9.0 | 9.0 | 25.0 | 2.0 | -6.0 | -17.0 | 22.0 | 4.0 | -7.0 | 24.0 | 16.0 | 49.0 | 41.0 | 58.0 | 32.0 | 33.0 | 39.0 | 56.0 | 34.0 | 30.0 | 41.0 | 30.0 | -0.183673 | 0.219512 | 0.431034 | 0.062500 | -0.181818 | -0.435897 | 0.392857 | 0.392857 | 0.392857 | 0.585366 | 0.533333 | 16.0 | 10.0 | -7.0 | 15.0 | 19.0 | 12.0 | 107.0 | 140.0 | 179.0 | 235.0 | 269.0 | 299.0 | 0 | 12 | 1 | 0 | 6 | 48 | 1 | 1 | 0 | 4 | 1 |
1 | 2019-12-01 00:30:00 | 4.0 | 4.0 | 16.0 | 5.0 | -8.0 | 1.0 | 11.0 | -5.0 | 10.0 | 42.0 | 14.0 | 64.0 | 50.0 | 60.0 | 46.0 | 44.0 | 52.0 | 51.0 | 40.0 | 45.0 | 63.0 | 37.0 | 0.062500 | 0.080000 | 0.266667 | 0.108696 | -0.181818 | 0.019231 | 0.215686 | 0.215686 | 0.215686 | 0.666667 | 0.378378 | 20.0 | 12.0 | 13.0 | 24.0 | 19.0 | 29.0 | 124.0 | 168.0 | 220.0 | 271.0 | 311.0 | 356.0 | 0 | 12 | 1 | 0 | 6 | 48 | 1 | 1 | 30 | 4 | 1 |
2 | 2019-12-01 01:00:00 | 11.0 | 24.0 | 12.0 | 8.0 | -36.0 | 50.0 | -7.0 | -3.0 | 4.0 | 41.0 | 29.0 | 85.0 | 64.0 | 74.0 | 40.0 | 62.0 | 98.0 | 48.0 | 55.0 | 58.0 | 69.0 | 47.0 | 0.129412 | 0.375000 | 0.162162 | 0.200000 | -0.580645 | 0.510204 | -0.145833 | -0.145833 | -0.145833 | 0.594203 | 0.617021 | 23.0 | -13.0 | 37.0 | 30.0 | 27.0 | 31.0 | 159.0 | 221.0 | 319.0 | 367.0 | 422.0 | 480.0 | 0 | 12 | 1 | 1 | 6 | 48 | 1 | 1 | 0 | 4 | 1 |
3 | 2019-12-01 01:30:00 | -10.0 | 1.0 | -2.0 | 1.0 | -37.0 | 42.0 | 11.0 | 4.0 | 2.0 | 33.0 | 20.0 | 58.0 | 51.0 | 68.0 | 50.0 | 70.0 | 107.0 | 65.0 | 54.0 | 50.0 | 59.0 | 33.0 | -0.172414 | 0.019608 | -0.029412 | 0.020000 | -0.528571 | 0.392523 | 0.169231 | 0.169231 | 0.169231 | 0.559322 | 0.606061 | -12.0 | -49.0 | -7.0 | 4.0 | 8.0 | 10.0 | 126.0 | 196.0 | 303.0 | 368.0 | 422.0 | 472.0 | 0 | 12 | 1 | 1 | 6 | 48 | 1 | 1 | 30 | 4 | 1 |
4 | 2019-12-01 02:00:00 | -8.0 | 9.0 | 14.0 | -12.0 | 14.0 | -24.0 | 29.0 | -1.0 | -3.0 | 45.0 | 21.0 | 62.0 | 42.0 | 70.0 | 33.0 | 56.0 | 42.0 | 66.0 | 37.0 | 38.0 | 70.0 | 42.0 | -0.129032 | 0.214286 | 0.200000 | -0.363636 | 0.250000 | -0.571429 | 0.439394 | 0.439394 | 0.439394 | 0.642857 | 0.500000 | 6.0 | 20.0 | -4.0 | 25.0 | 24.0 | 21.0 | 132.0 | 188.0 | 230.0 | 296.0 | 333.0 | 371.0 | 0 | 12 | 1 | 2 | 6 | 48 | 1 | 1 | 0 | 4 | 1 |
start = time.time()
print(datetime.datetime.now())
params = {
"objective" : "regression_l2",
"metric" : "rmse",
'verbosity': -1,
'boosting_type': 'gbdt',
"max_depth": 10,
"seed" : 810, # 鳩
}
valid_scores = []
models = []
preds = []
for i,term in enumerate(list_term):
print(i)
print(datetime.datetime.now())
X_train = data_df[(term[0] <= data_df["ds"])&(data_df["ds"] < term[1])][["ds"]+feature].copy().reset_index(drop=True)
X_valid = data_df[(term[1] <= data_df["ds"])&(data_df["ds"] < term[2])][["ds"]+feature].copy().reset_index(drop=True)
y_train = data_df[(term[0] <= data_df["ds"])&(data_df["ds"] < term[1])][[target]].copy().reset_index(drop=True)
y_valid = data_df[(term[1] <= data_df["ds"])&(data_df["ds"] < term[2])][[target]].copy().reset_index(drop=True)
train_set = lgb.Dataset(X_train.drop(columns=["ds"]), y_train, categorical_feature=feature_c)
valid_set = lgb.Dataset(X_valid.drop(columns=["ds"]), y_valid, categorical_feature=feature_c)
# optunaやろうかやるまいか。。あとでやる
best_booster = lgb.train(
params=params,
num_boost_round=100,
train_set=train_set,
valid_sets=[valid_set],
callbacks=[
lgb.early_stopping(stopping_rounds=10,verbose=True),
lgb.log_evaluation(0)
],
)
y_valid_pred = best_booster.predict(X_valid.drop(columns=["ds"]))
score = np.sqrt(mean_squared_error(y_valid, y_valid_pred))
print(score)
valid_scores.append(score)
models.append(best_booster)
X_valid.loc[:,target] = y_valid
X_valid.loc[:,target+"_pred"] = y_valid_pred
preds += [X_valid[["ds","id",target,target+"_pred"]]]
df_pred = pd.concat(preds, axis=0)
print(datetime.datetime.now())
print(time.time() - start)
2023-10-18 02:55:32.494141 0 2023-10-18 02:55:32.497922 Training until validation scores don't improve for 10 rounds Early stopping, best iteration is: [49] valid_0's rmse: 16.5224 16.52237810292792 1 2023-10-18 02:56:32.054683 Training until validation scores don't improve for 10 rounds Early stopping, best iteration is: [78] valid_0's rmse: 15.702 15.701957711633412 2 2023-10-18 02:57:52.047473 Training until validation scores don't improve for 10 rounds Early stopping, best iteration is: [66] valid_0's rmse: 12.8013 12.801286112953457 3 2023-10-18 02:58:58.224308 Training until validation scores don't improve for 10 rounds Early stopping, best iteration is: [38] valid_0's rmse: 13.9681 13.968099840822498 4 2023-10-18 02:59:50.335213 Training until validation scores don't improve for 10 rounds Early stopping, best iteration is: [75] valid_0's rmse: 12.1229 12.122861402636937 5 2023-10-18 03:01:09.962083 Training until validation scores don't improve for 10 rounds Early stopping, best iteration is: [71] valid_0's rmse: 14.1581 14.158075557274952 6 2023-10-18 03:02:24.338493 Training until validation scores don't improve for 10 rounds Did not meet early stopping. Best iteration is: [92] valid_0's rmse: 13.9122 13.91217434196716 7 2023-10-18 03:03:46.196818 Training until validation scores don't improve for 10 rounds Did not meet early stopping. Best iteration is: [100] valid_0's rmse: 17.09 17.09002184506239 8 2023-10-18 03:05:13.650979 Training until validation scores don't improve for 10 rounds Early stopping, best iteration is: [86] valid_0's rmse: 15.829 15.829000725192014 9 2023-10-18 03:06:33.812730 Training until validation scores don't improve for 10 rounds Did not meet early stopping. Best iteration is: [100] valid_0's rmse: 14.0112 14.011171739690957 10 2023-10-18 03:07:55.894757 Training until validation scores don't improve for 10 rounds Early stopping, best iteration is: [87] valid_0's rmse: 19.1044 19.10442255745607 11 2023-10-18 03:09:20.164350 Training until validation scores don't improve for 10 rounds Early stopping, best iteration is: [45] valid_0's rmse: 16.5177 16.51769254240633 12 2023-10-18 03:10:18.986233 Training until validation scores don't improve for 10 rounds Early stopping, best iteration is: [72] valid_0's rmse: 18.1565 18.156510100431635 13 2023-10-18 03:11:33.026930 Training until validation scores don't improve for 10 rounds Early stopping, best iteration is: [53] valid_0's rmse: 17.4281 17.428071987919047 14 2023-10-18 03:12:40.956040 Training until validation scores don't improve for 10 rounds Did not meet early stopping. Best iteration is: [100] valid_0's rmse: 14.4566 14.456644067454894 15 2023-10-18 03:14:02.067742 Training until validation scores don't improve for 10 rounds Did not meet early stopping. Best iteration is: [100] valid_0's rmse: 17.7746 17.774621285910698 16 2023-10-18 03:15:23.509473 Training until validation scores don't improve for 10 rounds Did not meet early stopping. Best iteration is: [100] valid_0's rmse: 16.6244 16.62441312120392 17 2023-10-18 03:16:50.346785 Training until validation scores don't improve for 10 rounds Early stopping, best iteration is: [57] valid_0's rmse: 17.0008 17.000768402177975 18 2023-10-18 03:17:53.399734 Training until validation scores don't improve for 10 rounds Early stopping, best iteration is: [7] valid_0's rmse: 19.0798 19.079818231499463 19 2023-10-18 03:18:25.933257 Training until validation scores don't improve for 10 rounds Early stopping, best iteration is: [10] valid_0's rmse: 35.6021 35.60208220972919 2023-10-18 03:19:00.035495 1407.5421886444092
print(valid_scores)
print(f'cv: {np.mean(valid_scores):.4f} ± {np.std(valid_scores):.4f}')
[16.52237810292792, 15.701957711633412, 12.801286112953457, 13.968099840822498, 12.122861402636937, 14.158075557274952, 13.91217434196716, 17.09002184506239, 15.829000725192014, 14.011171739690957, 19.10442255745607, 16.51769254240633, 18.156510100431635, 17.428071987919047, 14.456644067454894, 17.774621285910698, 16.62441312120392, 17.000768402177975, 19.079818231499463, 35.60208220972919] cv: 16.8931 ± 4.7115
importance = pd.DataFrame({
"feature":feature# + feature_p,
})
for i in range(num_valid):
importance.loc[:,"imp_"+str(i)] = models[i].feature_importance(importance_type='gain')
importance.loc[:,"imp"] = importance[["imp_"+str(i) for i in range(num_valid)]].mean(axis=1)
importance = importance.sort_values( ["imp"], ascending=False ).reset_index(drop=True)
# 可視化用に縦持ち
importance_p = pd.melt(
importance, id_vars=["feature"], value_vars=["imp_"+str(i) for i in range(num_valid-2)],
var_name="cv", value_name="imp"
)
fig, ax = plt.subplots(1, 1, figsize=(20,5))
sns.boxplot(x='feature', y='imp', data=importance_p, showfliers=True, ax=ax)
sns.stripplot(x='feature', y='imp', data=importance_p, jitter=True, color='black', ax=ax)
plt.xticks(rotation=90)
plt.show()
plt.close()
plt.clf()
<Figure size 640x480 with 0 Axes>
df_p_test = pd.DataFrame({
"ds":test_X["ds"],
"id":test_X["id"],
})
for i in range(num_valid):
df_p_test.loc[:,"p_"+str(i)] = models[i].predict(test_X.drop(columns=["ds"]))
df_p_test.loc[:,target] = df_p_test[["p_"+str(i) for i in range(num_valid)]].mean(axis=1)
df_p_test
ds | id | p_0 | p_1 | p_2 | p_3 | p_4 | p_5 | p_6 | p_7 | p_8 | p_9 | p_10 | p_11 | p_12 | p_13 | p_14 | p_15 | p_16 | p_17 | p_18 | p_19 | y_diff | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2019-12-01 00:00:00 | 0 | -5.987569 | -4.049480 | -2.067799 | -5.172304 | -2.043512 | -4.290158 | -3.436173 | -2.300683 | -3.268234 | -5.334087 | -3.667078 | -3.098998 | -3.690946 | -2.037640 | 7.927288 | -3.125983 | -4.903559 | -4.355229 | -4.000627 | -0.384659 | -2.964372 |
1 | 2019-12-01 00:30:00 | 0 | -11.811568 | 2.289212 | -8.894862 | -9.626971 | -9.649868 | -10.609826 | -9.155092 | -9.203097 | 1.780453 | -10.915441 | -10.262607 | -10.062258 | -12.674401 | -11.621274 | 0.224474 | -13.590294 | -11.299707 | -11.125552 | -4.876711 | -7.273418 | -8.417940 |
2 | 2019-12-01 01:00:00 | 0 | -15.055681 | -4.068192 | -13.777418 | -10.537198 | -15.521889 | -15.886448 | -16.819746 | -14.041582 | -3.321415 | -15.650388 | -11.715205 | -16.937093 | -13.987021 | -17.516257 | -7.281736 | -17.691119 | -16.420388 | -17.124032 | -9.128959 | -11.269493 | -13.187563 |
3 | 2019-12-01 01:30:00 | 0 | 10.219280 | 11.808957 | 12.172895 | 8.108707 | 11.806605 | 11.592320 | 12.158343 | 11.963290 | 10.056736 | 9.432975 | 12.889696 | 12.664564 | 13.199889 | 10.386991 | 14.643005 | 14.091954 | 9.485976 | 10.987640 | 2.984438 | 8.054777 | 10.935452 |
4 | 2019-12-01 02:00:00 | 0 | -4.954675 | -1.958903 | -1.397884 | -6.001234 | -3.377880 | -5.113123 | -1.969360 | -3.524124 | -4.601961 | -5.495884 | -3.774563 | -3.776555 | -4.275754 | -1.856756 | -1.133228 | -2.355394 | -3.318899 | -1.562502 | -4.388309 | -4.611658 | -3.472432 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
26539 | 2019-12-07 21:30:00 | 78 | 39.406997 | 45.442531 | 43.116963 | 36.853059 | 43.610210 | 41.367584 | 43.153560 | 43.057959 | 39.556898 | 39.216493 | 40.554808 | 35.595738 | 40.114734 | 40.594344 | 43.752460 | 48.734825 | 42.478621 | 40.953912 | 14.758771 | 19.186908 | 39.075369 |
26540 | 2019-12-07 22:00:00 | 78 | 39.060970 | 38.470825 | 39.197638 | 34.032954 | 40.335457 | 41.823266 | 44.737772 | 39.697671 | 39.069606 | 39.638004 | 40.001643 | 36.770446 | 42.713502 | 40.306960 | 40.676187 | 43.018999 | 44.148941 | 40.036759 | 15.372432 | 18.601487 | 37.885576 |
26541 | 2019-12-07 22:30:00 | 78 | 35.992159 | 40.059395 | 41.784433 | 31.284896 | 37.995332 | 37.971215 | 40.875624 | 39.934740 | 40.460008 | 40.015087 | 42.138984 | 34.654532 | 40.106285 | 35.164505 | 41.538022 | 40.197062 | 40.256109 | 38.643334 | 12.533972 | 17.573552 | 36.458962 |
26542 | 2019-12-07 23:00:00 | 78 | 20.466418 | 20.919298 | 21.413820 | 18.004469 | 25.704675 | 24.753557 | 21.830074 | 25.101810 | 20.625811 | 21.970171 | 21.333877 | 14.610272 | 24.434872 | 19.812786 | 21.725774 | 21.097146 | 23.520261 | 20.426885 | 4.935743 | 8.447192 | 20.056746 |
26543 | 2019-12-07 23:30:00 | 78 | 36.981026 | 38.614770 | 35.195329 | 31.876444 | 36.788047 | 40.001321 | 41.397470 | 41.504350 | 39.366595 | 37.042793 | 44.023278 | 36.916089 | 42.292673 | 32.699400 | 40.859369 | 38.772997 | 43.523346 | 38.131795 | 15.048237 | 23.368167 | 36.720175 |
26544 rows × 23 columns
# 原系列に戻す関数
## 超絶汚い希ガス・・・
def reverse_diff2org(data_df, d, colname):
d = d[["ds","id",colname]].copy()
# cumsumするための初期値
init_s = d["ds"].min() + datetime.timedelta(days=-7)
init_e = d["ds"].min()
d_init = data_df.loc[((init_s<=data_df["ds"])&(data_df["ds"]<init_e)), ["ds","id","y"]].rename(columns={'y':colname})
# 原系列に戻す
d_org = pd.concat([d_init, d], axis=0).reset_index(drop=True)
d_org.loc[:,"hour_minute"] = d_org["ds"].dt.strftime('%H%M')
d_org.loc[:,"yobi"] = d_org["ds"].dt.weekday
d_org.loc[:,"y_pred"] = d_org[["id","yobi","hour_minute",colname]].groupby(["id","yobi","hour_minute"]).cumsum().agg(np.ceil) # 切り上げ
d_org.loc[d_org["y_pred"]<0,"y_pred"] = 0
d_org.loc[:,"y_pred"] = d_org["y_pred"].astype(int)
# 初期値を削除
d_org = d_org[d_org["ds"]>=init_e]
# 正解の値をマージ(validの評価用)
d_org = pd.merge(d_org, data_df[["ds", "id", "y"]], how="left", on=["ds", "id"])
return d_org
df_p_test_org = reverse_diff2org(data_df, d=df_p_test[["ds","id","y_diff"]], colname="y_diff")
df_p_test_org
ds | id | y_diff | hour_minute | yobi | y_pred | y | |
---|---|---|---|---|---|---|---|
0 | 2019-12-01 00:00:00 | 0 | -2.964372 | 0000 | 6 | 47 | NaN |
1 | 2019-12-01 00:30:00 | 0 | -8.417940 | 0030 | 6 | 56 | NaN |
2 | 2019-12-01 01:00:00 | 0 | -13.187563 | 0100 | 6 | 72 | NaN |
3 | 2019-12-01 01:30:00 | 0 | 10.935452 | 0130 | 6 | 69 | NaN |
4 | 2019-12-01 02:00:00 | 0 | -3.472432 | 0200 | 6 | 59 | NaN |
... | ... | ... | ... | ... | ... | ... | ... |
26539 | 2019-12-07 21:30:00 | 78 | 39.075369 | 2130 | 5 | 115 | NaN |
26540 | 2019-12-07 22:00:00 | 78 | 37.885576 | 2200 | 5 | 123 | NaN |
26541 | 2019-12-07 22:30:00 | 78 | 36.458962 | 2230 | 5 | 109 | NaN |
26542 | 2019-12-07 23:00:00 | 78 | 20.056746 | 2300 | 5 | 109 | NaN |
26543 | 2019-12-07 23:30:00 | 78 | 36.720175 | 2330 | 5 | 115 | NaN |
26544 rows × 7 columns
# 予測結果の確認
plot_d_y = data_df[data_df["ds"]>="2019-11-01"]
plot_d_p = df_p_test_org
fig, ax = plt.subplots(79, 1, figsize=(20, 79*4))
for i in range(79):
ax[i].plot(plot_d_y[plot_d_y["id"]==i]['ds'], plot_d_y[plot_d_y["id"]==i]["y"])
ax[i].plot(plot_d_p[plot_d_p["id"]==i]['ds'], plot_d_p[plot_d_p["id"]==i]["y_pred"])
ax[i].set_title(str(i))
plt.show()
plt.close()
plt.clf()
# 画像は添付をご確認ください
Output hidden; open in https://colab.research.google.com to view.
# sub用データ作成(たて→よこ)
df_sub = df_p_test_org.copy()
df_sub.loc[:,"id"] = df_sub["id"].astype(str)
df_sub = df_sub.pivot(
index="ds",
columns="id",
values="y_pred" # , y_pred, y_maze
).reset_index()[["ds"]+list(map(str, range(79)))]
df_sub.columns = [["tpep_pickup_datetime"]+list(map(str, range(79)))]
df_sub.head()
tpep_pickup_datetime | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2019-12-01 00:00:00 | 47 | 9 | 23 | 13 | 13 | 9 | 5 | 21 | 10 | 42 | 18 | 296 | 64 | 4 | 8 | 5 | 197 | 18 | 29 | 479 | 53 | 32 | 144 | 12 | 101 | 209 | 134 | 226 | 7 | 48 | 3 | 111 | 90 | 11 | 50 | 111 | 190 | 34 | 125 | 8 | 7 | 309 | 21 | 6 | 136 | 164 | 106 | 140 | 179 | 22 | 153 | 2 | 16 | 161 | 3 | 21 | 94 | 3 | 13 | 7 | 94 | 252 | 137 | 32 | 57 | 239 | 74 | 143 | 58 | 121 | 8 | 97 | 316 | 31 | 20 | 2 | 21 | 22 | 110 |
1 | 2019-12-01 00:30:00 | 56 | 11 | 12 | 9 | 10 | 4 | 4 | 21 | 7 | 34 | 17 | 249 | 76 | 2 | 6 | 4 | 198 | 17 | 17 | 522 | 43 | 26 | 147 | 9 | 91 | 206 | 109 | 244 | 4 | 53 | 4 | 70 | 85 | 0 | 46 | 92 | 127 | 21 | 133 | 11 | 8 | 366 | 20 | 7 | 161 | 119 | 90 | 118 | 184 | 16 | 134 | 4 | 10 | 132 | 5 | 21 | 87 | 4 | 12 | 5 | 90 | 220 | 124 | 33 | 49 | 198 | 59 | 99 | 49 | 88 | 6 | 78 | 317 | 35 | 21 | 2 | 24 | 21 | 116 |
2 | 2019-12-01 01:00:00 | 72 | 15 | 10 | 10 | 11 | 6 | 3 | 16 | 8 | 20 | 26 | 266 | 79 | 2 | 7 | 3 | 217 | 20 | 18 | 643 | 35 | 23 | 156 | 11 | 90 | 196 | 103 | 285 | 7 | 52 | 7 | 54 | 85 | 5 | 38 | 97 | 89 | 17 | 159 | 8 | 8 | 455 | 18 | 5 | 183 | 121 | 76 | 103 | 192 | 16 | 116 | 5 | 12 | 135 | 3 | 23 | 87 | 3 | 11 | 7 | 81 | 192 | 113 | 32 | 44 | 192 | 39 | 75 | 31 | 68 | 6 | 99 | 323 | 25 | 24 | 4 | 15 | 15 | 100 |
3 | 2019-12-01 01:30:00 | 69 | 14 | 6 | 7 | 7 | 3 | 2 | 15 | 10 | 12 | 17 | 196 | 59 | 1 | 7 | 2 | 202 | 15 | 13 | 621 | 29 | 25 | 140 | 12 | 75 | 159 | 80 | 293 | 8 | 53 | 6 | 32 | 74 | 3 | 29 | 88 | 58 | 12 | 155 | 7 | 8 | 500 | 13 | 4 | 196 | 78 | 50 | 88 | 168 | 14 | 113 | 3 | 10 | 86 | 3 | 17 | 86 | 4 | 6 | 9 | 62 | 159 | 101 | 32 | 29 | 160 | 33 | 50 | 25 | 48 | 5 | 97 | 301 | 30 | 22 | 6 | 12 | 13 | 89 |
4 | 2019-12-01 02:00:00 | 59 | 11 | 5 | 5 | 4 | 4 | 2 | 15 | 7 | 9 | 15 | 170 | 48 | 1 | 5 | 2 | 175 | 11 | 11 | 559 | 23 | 20 | 114 | 6 | 55 | 134 | 66 | 254 | 5 | 53 | 6 | 11 | 50 | 2 | 15 | 68 | 29 | 8 | 147 | 7 | 7 | 482 | 10 | 3 | 178 | 45 | 39 | 70 | 139 | 9 | 81 | 4 | 5 | 79 | 2 | 16 | 67 | 3 | 7 | 7 | 43 | 125 | 77 | 27 | 24 | 123 | 20 | 31 | 19 | 31 | 4 | 100 | 249 | 23 | 18 | 4 | 10 | 7 | 74 |
df_sub.to_csv(path+'submit/'+'chk.csv',index=False, header=True)
mini_forest
model評価 importanceの確認にて、謎のrange(num_valid-2)がありますが、色々試行錯誤していた時の直し忘れでした、、、
-2の結果、importanceがCV直近2期間を除外した図になっておりますのでご了承ください(最終的なサブミットでは全期間採用)