def sarimax_preparation_main(volume, test_volume, weather_train_file, weather_train_new_file, weather_test_file):
train_data = volume.pivot(columns='id', values='volume')
test_data = test_volume.pivot(columns='id', values='volume')
tmp = pd.DataFrame({'T1D0':np.NaN,'T1D1':np.NaN,'T2D0':np.NaN,'T3D0':np.NaN,'T3D1':np.NaN},index=pd.date_range(start=datetime(2016,10,18)+Day(7),end=datetime(2016,10,25)+Day(7),freq='20min',closed='left'))
tmp.set_value(test_data.index,test_data.columns, test_data.values)
train_data = pd.concat((train_data, tmp))
peakDummies = pd.get_dummies(train_data.index.map(peak_time))
peakDummies.index = train_data.index
dayDummies = pd.get_dummies(train_data.index.map(day_class))
dayDummies.index = train_data.index
train_data = pd.concat([train_data,peakDummies, dayDummies],axis=1)
weather_train = pd.read_csv(weather_train_file)
weather_train_new = pd.read_csv(weather_train_new_file)
weather_test = pd.read_csv(weather_test_file)
weather_full = pd.concat([weather_train, weather_train_new, weather_test]).reset_index()
weather_full.precipitation = weather_full.precipitation * 4
weather_full['precipitation'] = weather_full.precipitation.map(
precipitation_grade)
rain_dummies = pd.get_dummies(weather_full.precipitation)
weather_feature = weather_full[['date', 'hour']].join(rain_dummies)
weather_feature.index = weather_feature.apply(get_py_datetime, axis=1)
weather_feature = weather_feature.resample('20min').first()
weather_feature = weather_feature.fillna(method='ffill')
weather_feature['diff'] = np.abs(weather_feature.index.map(
lambda dt: dt.hour) - weather_feature.hour)
weather_feature[weather_feature['diff'] >= 3] = np.nan
del weather_feature['diff'],weather_feature['date'],weather_feature['hour']
train_data = train_data.join(weather_feature)
train_data.to_csv('sarimax_data.csv',index=True)
评论列表
文章目录