1
0
Fork 0

增加carbon、water、load

This commit is contained in:
Mrliu1118 2025-02-12 16:59:05 +08:00
parent 61cfdc304f
commit 89dcac3729
25 changed files with 53546 additions and 493 deletions

0
carbon/__init__.py Normal file
View File

View File

@ -0,0 +1,24 @@
import joblib
import numpy as np
def load_carbon_model(path):
gbm = joblib.load(path)
return gbm
def carbon_forecast(inputs: np.ndarray, model):
"""_summary_
Args:
inputs (np.ndarray): 输入序列
model (_type_): _description_
"""
out = model.predict([inputs])
return out
if __name__ == '__main__':
model = load_carbon_model('./models/carbon_pred.joblib')
inputs = np.random.randn(24)
print(inputs.shape)
out = carbon_forecast(inputs, model)
print(out)

67
carbon/carbon_train.py Normal file
View File

@ -0,0 +1,67 @@
import pandas as pd
import numpy as np
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
import joblib
from logzero import logger
def time_series_to_supervised(data, columns, n_in=24, n_out=1,dropnan=True):
"""
:param data:作为列表或2D NumPy数组的观察序列需要
:param n_in:作为输入的滞后观察数X值可以在[1..len数据]之间可选默认为1
:param n_out:作为输出的观测数量y值可以在[0..len数据]之间可选的默认为1
:param dropnan:Boolean是否删除具有NaN值的行可选的默认为True
:return:
"""
logger.info(f"正在处理训练数据size{data.shape}")
n_vars = 1 if type(data) is list else data.shape[1]
df = pd.DataFrame(data)
origNames = columns
cols, names = list(), list()
cols.append(df.shift(0))
names += [('%s' % origNames[j]) for j in range(n_vars)]
n_in = max(1, n_in)
for i in range(n_in-1, 0, -1):
time = '(t-%d)' % i
cols.append(df.shift(i))
names += [('%s%s' % (origNames[j], time)) for j in range(n_vars)]
n_out = max(n_out, 0)
for i in range(1, n_out+1):
time = '(t+%d)' % i
cols.append(df.shift(-i))
names += [('%s%s' % (origNames[j], time)) for j in range(n_vars)]
agg = pd.concat(cols, axis=1)
agg.columns = names
if dropnan:
agg.dropna(inplace=True)
return agg
def train_model(train_data: pd.DataFrame):
"""训练模型的函数,需要根据模型类型实际调整
Args:
data (pd.DataFrame): 训练集
"""
# 特征和输出列名,需要根据业务场景灵活处理
fea_cols = train_data.columns[:-1].tolist()
out_cols = train_data.columns[-1:].tolist()
logger.info(f"特征列: {fea_cols}, 输出列: {out_cols}")
X = train_data[fea_cols]
y = train_data[out_cols]
train_X,test_X,train_y,test_y = train_test_split(X, y, test_size=0.2, random_state=42)
valid_X,test_X,valid_y,test_y = train_test_split(test_X, test_y, test_size=0.5, random_state=42)
# 参数
other_params = {'learning_rate': 0.1, 'n_estimators': 150, 'max_depth': 10, 'min_child_weight': 1, 'seed': 0, 'subsample': 0.8, 'colsample_bytree': 0.8, 'gamma': 0, 'reg_alpha': 0, 'reg_lambda': 1}
print(train_X.shape, train_y.shape)
gbm = xgb.XGBRegressor(objective='reg:squarederror', early_stopping_rounds=20,**other_params)
gbm.fit(train_X.values, train_y.values, eval_set=[(valid_X.values, valid_y.values)])
y_pred = gbm.predict(test_X.values)
logger.info(f"Root Mean Squared Error on Test set: {np.sqrt(mean_squared_error(test_y, y_pred))}")
logger.info(f"R2 score on Test set: {r2_score(test_y, y_pred)}")
joblib.dump(gbm, './models/carbon_pred.joblib')
logger.info(f"save_path: ./models/carbon_pred.joblib")
if __name__ == '__main__':
data = pd.read_csv('./data/carbon_data_hourly.csv', index_col=0)
agg = time_series_to_supervised(data.values, data.columns, 24, 1)
train_model(agg)

View File

@ -0,0 +1,567 @@
date,Value
2022-01-01 00:00:00,72.076
2022-01-01 01:00:00,64.442
2022-01-01 02:00:00,64.084
2022-01-01 03:00:00,60.842
2022-01-01 04:00:00,61.798
2022-01-01 05:00:00,66.538
2022-01-01 06:00:00,72.626
2022-01-01 07:00:00,75.181
2022-01-01 08:00:00,68.397
2022-01-01 09:00:00,67.668
2022-01-01 10:00:00,67.021
2022-01-01 11:00:00,71.118
2022-01-01 12:00:00,811.791
2022-01-01 13:00:00,70.55
2022-01-01 14:00:00,62.929
2022-01-01 15:00:00,64.519
2022-01-01 16:00:00,60.544
2022-01-01 17:00:00,64.687
2022-01-01 18:00:00,64.736
2022-01-01 19:00:00,73.698
2022-01-01 20:00:00,72.559
2022-01-01 21:00:00,63.221
2022-01-01 22:00:00,65.418
2022-01-01 23:00:00,65.593
2022-01-02 00:00:00,71.677
2022-01-02 01:00:00,800.131
2022-01-02 02:00:00,72.708
2022-01-02 03:00:00,65.117
2022-01-02 04:00:00,66.532
2022-01-02 05:00:00,61.975
2022-01-02 06:00:00,62.031
2022-01-02 07:00:00,67.875
2022-01-02 08:00:00,74.184
2022-01-02 09:00:00,77.029
2022-01-02 10:00:00,66.156
2022-01-02 11:00:00,66.651
2022-01-02 12:00:00,67.625
2022-01-02 13:00:00,75.857
2022-01-02 14:00:00,823.74
2022-01-02 15:00:00,81.264
2022-01-02 16:00:00,71.058
2022-01-02 17:00:00,73.361
2022-01-02 18:00:00,68.703
2022-01-02 19:00:00,68.985
2022-01-02 20:00:00,73.936
2022-01-02 21:00:00,80.968
2022-01-02 22:00:00,81.962
2022-01-02 23:00:00,72.95
2022-01-03 00:00:00,74.746
2022-01-03 01:00:00,78.924
2022-01-03 02:00:00,84.49
2022-01-03 03:00:00,911.346
2022-01-03 04:00:00,87.215
2022-01-03 05:00:00,75.943
2022-01-03 06:00:00,75.092
2022-01-03 07:00:00,68.641
2022-01-03 08:00:00,74.916
2022-01-03 09:00:00,80.942
2022-01-03 10:00:00,90.667
2022-01-03 11:00:00,89.046
2022-01-03 12:00:00,80.975
2022-01-03 13:00:00,77.369
2022-01-03 14:00:00,78.058
2022-01-03 15:00:00,83.279
2022-01-03 16:00:00,962.143
2022-01-03 17:00:00,85.191
2022-01-03 18:00:00,71.476
2022-01-03 19:00:00,67.829
2022-01-03 20:00:00,69.051
2022-01-03 21:00:00,74.201
2022-01-03 22:00:00,81.372
2022-01-03 23:00:00,88.003
2022-01-04 00:00:00,91.836
2022-01-04 01:00:00,85.066
2022-01-04 02:00:00,79.494
2022-01-04 03:00:00,79.291
2022-01-04 04:00:00,87.107
2022-01-04 05:00:00,959.916
2022-01-04 06:00:00,93.946
2022-01-04 07:00:00,83.91
2022-01-04 08:00:00,83.689
2022-01-04 09:00:00,78.077
2022-01-04 10:00:00,83.19
2022-01-04 11:00:00,88.15
2022-01-04 12:00:00,96.579
2022-01-04 13:00:00,97.246
2022-01-04 14:00:00,84.463
2022-01-04 15:00:00,86.071
2022-01-04 16:00:00,86.09
2022-01-04 17:00:00,94.293
2022-01-04 18:00:00,1055.704
2022-01-04 19:00:00,100.568
2022-01-04 20:00:00,94.862
2022-01-04 21:00:00,93.21
2022-01-04 22:00:00,81.245
2022-01-04 23:00:00,82.785
2022-01-05 00:00:00,91.484
2022-01-05 01:00:00,107.126
2022-01-05 02:00:00,106.245
2022-01-05 03:00:00,95.662
2022-01-05 04:00:00,90.03
2022-01-05 05:00:00,91.239
2022-01-05 06:00:00,102.138
2022-01-05 07:00:00,1136.594
2022-01-05 08:00:00,108.164
2022-01-05 09:00:00,94.766
2022-01-05 10:00:00,95.724
2022-01-05 11:00:00,86.386
2022-01-05 12:00:00,89.002
2022-01-05 13:00:00,99.05
2022-01-05 14:00:00,111.044
2022-01-05 15:00:00,107.758
2022-01-05 16:00:00,95.891
2022-01-05 17:00:00,94.541
2022-01-05 18:00:00,92.986
2022-01-05 19:00:00,105.056
2022-01-05 20:00:00,1180.367
2022-01-05 21:00:00,113.136
2022-01-05 22:00:00,97.313
2022-01-05 23:00:00,95.335
2022-01-06 00:00:00,86.587
2022-01-06 01:00:00,90.83
2022-01-06 02:00:00,94.419
2022-01-06 03:00:00,109.995
2022-01-06 04:00:00,109.179
2022-01-06 05:00:00,96.39
2022-01-06 06:00:00,92.24
2022-01-06 07:00:00,95.165
2022-01-06 08:00:00,101.367
2022-01-06 09:00:00,1181.956
2022-01-06 10:00:00,105.965
2022-01-06 11:00:00,90.912
2022-01-06 12:00:00,93.568
2022-01-06 13:00:00,86.575
2022-01-06 14:00:00,90.75
2022-01-06 15:00:00,99.98
2022-01-06 16:00:00,119.945
2022-01-06 17:00:00,126.652
2022-01-06 18:00:00,107.675
2022-01-06 19:00:00,100.677
2022-01-06 20:00:00,101.663
2022-01-06 21:00:00,117.417
2022-01-06 22:00:00,1241.778
2022-01-06 23:00:00,119.436
2022-01-07 00:00:00,103.635
2022-01-07 01:00:00,108.149
2022-01-07 02:00:00,94.329
2022-01-07 03:00:00,98.181
2022-01-07 04:00:00,112.983
2022-01-07 05:00:00,119.701
2022-01-07 06:00:00,125.724
2022-01-07 07:00:00,107.179
2022-01-07 08:00:00,108.583
2022-01-07 09:00:00,107.546
2022-01-07 10:00:00,112.167
2022-01-07 11:00:00,1317.614
2022-01-07 12:00:00,125.429
2022-01-07 13:00:00,109.359
2022-01-07 14:00:00,107.966
2022-01-07 15:00:00,100.317
2022-01-07 16:00:00,107.595
2022-01-07 17:00:00,113.584
2022-01-07 18:00:00,126.626
2022-01-07 19:00:00,124.309
2022-01-07 20:00:00,111.9
2022-01-07 21:00:00,108.331
2022-01-07 22:00:00,107.034
2022-01-07 23:00:00,124.95
2022-01-08 00:00:00,1367.401
2022-01-08 01:00:00,126.887
2022-01-08 02:00:00,109.086
2022-01-08 03:00:00,106.803
2022-01-08 04:00:00,95.341
2022-01-08 05:00:00,101.892
2022-01-08 06:00:00,116.698
2022-01-08 07:00:00,134.789
2022-01-08 08:00:00,122.28
2022-01-08 09:00:00,112.03
2022-01-08 10:00:00,107.235
2022-01-08 11:00:00,107.317
2022-01-08 12:00:00,117.127
2022-01-08 13:00:00,1357.485
2022-01-08 14:00:00,124.043
2022-01-08 15:00:00,106.754
2022-01-08 16:00:00,108.607
2022-01-08 17:00:00,102.222
2022-01-08 18:00:00,112.257
2022-01-08 19:00:00,126.2
2022-01-08 20:00:00,140.582
2022-01-08 21:00:00,139.268
2022-01-08 22:00:00,117.773
2022-01-08 23:00:00,113.515
2022-01-09 00:00:00,111.217
2022-01-09 01:00:00,124.314
2022-01-09 02:00:00,1426.753
2022-01-09 03:00:00,133.468
2022-01-09 04:00:00,120.783
2022-01-09 05:00:00,115.584
2022-01-09 06:00:00,106.49
2022-01-09 07:00:00,111.2
2022-01-09 08:00:00,128.537
2022-01-09 09:00:00,141.139
2022-01-09 10:00:00,148.031
2022-01-09 11:00:00,121.057
2022-01-09 12:00:00,117.165
2022-01-09 13:00:00,116.659
2022-01-09 14:00:00,131.695
2022-01-09 15:00:00,1491.807
2022-01-09 16:00:00,132.233
2022-01-09 17:00:00,124.345
2022-01-09 18:00:00,122.803
2022-01-09 19:00:00,111.194
2022-01-09 20:00:00,115.915
2022-01-09 21:00:00,126.031
2022-01-09 22:00:00,138.083
2022-01-09 23:00:00,139.614
2022-01-10 00:00:00,124.594
2022-01-10 01:00:00,119.943
2022-01-10 02:00:00,120.824
2022-01-10 03:00:00,143.264
2022-01-10 04:00:00,1518.844
2022-01-10 05:00:00,132.923
2022-01-10 06:00:00,116.26
2022-01-10 07:00:00,121.806
2022-01-10 08:00:00,115.909
2022-01-10 09:00:00,118.556
2022-01-10 10:00:00,130.719
2022-01-10 11:00:00,143.146
2022-01-10 12:00:00,146.257
2022-01-10 13:00:00,134.042
2022-01-10 14:00:00,128.8
2022-01-10 15:00:00,122.119
2022-01-10 16:00:00,137.027
2022-01-10 17:00:00,1547.564
2022-01-10 18:00:00,143.148
2022-01-10 19:00:00,117.505
2022-01-10 20:00:00,118.823
2022-01-10 21:00:00,111.147
2022-01-10 22:00:00,122.745
2022-01-10 23:00:00,131.945
2022-01-11 00:00:00,144.042
2022-01-11 01:00:00,144.107
2022-01-11 02:00:00,129.099
2022-01-11 03:00:00,124.058
2022-01-11 04:00:00,127.928
2022-01-11 05:00:00,133.633
2022-01-11 06:00:00,1548.18
2022-01-11 07:00:00,137.39
2022-01-11 08:00:00,121.125
2022-01-11 09:00:00,126.201
2022-01-11 10:00:00,118.33
2022-01-11 11:00:00,121.946
2022-01-11 12:00:00,129.054
2022-01-11 13:00:00,148.563
2022-01-11 14:00:00,142.166
2022-01-11 15:00:00,132.766
2022-01-11 16:00:00,126.405
2022-01-11 17:00:00,126.014
2022-01-11 18:00:00,139.605
2022-01-11 19:00:00,1569.566
2022-01-11 20:00:00,139.269
2022-01-11 21:00:00,128.056
2022-01-11 22:00:00,134.599
2022-01-11 23:00:00,119.596
2022-01-12 00:00:00,120.469
2022-01-12 01:00:00,136.697
2022-01-12 02:00:00,157.967
2022-01-12 03:00:00,156.392
2022-01-12 04:00:00,133.435
2022-01-12 05:00:00,130.321
2022-01-12 06:00:00,131.799
2022-01-12 07:00:00,143.919
2022-01-12 08:00:00,1632.52
2022-01-12 09:00:00,153.119
2022-01-12 10:00:00,131.25
2022-01-12 11:00:00,132.54
2022-01-12 12:00:00,120.392
2022-01-12 13:00:00,126.496
2022-01-12 14:00:00,146.639
2022-01-12 15:00:00,153.375
2022-01-12 16:00:00,151.757
2022-01-12 17:00:00,133.235
2022-01-12 18:00:00,129.229
2022-01-12 19:00:00,124.074
2022-01-12 20:00:00,136.675
2022-01-12 21:00:00,1638.781
2022-01-12 22:00:00,143.097
2022-01-12 23:00:00,127.774
2022-01-13 00:00:00,127.348
2022-01-13 01:00:00,118.414
2022-01-13 02:00:00,125.516
2022-01-13 03:00:00,138.913
2022-01-13 04:00:00,159.638
2022-01-13 05:00:00,167.717
2022-01-13 06:00:00,137.474
2022-01-13 07:00:00,132.871
2022-01-13 08:00:00,134.591
2022-01-13 09:00:00,147.39
2022-01-13 10:00:00,1660.744
2022-01-13 11:00:00,153.915
2022-01-13 12:00:00,138.446
2022-01-13 13:00:00,138.362
2022-01-13 14:00:00,124.885
2022-01-13 15:00:00,135.014
2022-01-13 16:00:00,147.23
2022-01-13 17:00:00,160.939
2022-01-13 18:00:00,162.998
2022-01-13 19:00:00,144.095
2022-01-13 20:00:00,143.399
2022-01-13 21:00:00,147.318
2022-01-13 22:00:00,155.809
2022-01-13 23:00:00,1752.41
2022-01-14 00:00:00,162.245
2022-01-14 01:00:00,135.873
2022-01-14 02:00:00,138.495
2022-01-14 03:00:00,130.325
2022-01-14 04:00:00,136.525
2022-01-14 05:00:00,147.624
2022-01-14 06:00:00,169.108
2022-01-14 07:00:00,164.925
2022-01-14 08:00:00,152.353
2022-01-14 09:00:00,152.153
2022-01-14 10:00:00,146.425
2022-01-14 11:00:00,160.993
2022-01-14 12:00:00,1797.045
2022-01-14 13:00:00,159.602
2022-01-14 14:00:00,138.682
2022-01-14 15:00:00,144.143
2022-01-14 16:00:00,133.418
2022-01-14 17:00:00,146.249
2022-01-14 18:00:00,158.591
2022-01-14 19:00:00,174.995
2022-01-14 20:00:00,174.745
2022-01-14 21:00:00,156.709
2022-01-14 22:00:00,147.334
2022-01-14 23:00:00,139.397
2022-01-15 00:00:00,154.318
2022-01-15 01:00:00,1828.184
2022-01-15 02:00:00,161.387
2022-01-15 03:00:00,138.081
2022-01-15 04:00:00,145.169
2022-01-15 05:00:00,137.504
2022-01-15 06:00:00,144.891
2022-01-15 07:00:00,157.377
2022-01-15 08:00:00,179.42
2022-01-15 09:00:00,173.707
2022-01-15 10:00:00,154.874
2022-01-15 11:00:00,147.523
2022-01-15 12:00:00,142.095
2022-01-15 13:00:00,154.387
2022-01-15 14:00:00,1836.415
2022-01-15 15:00:00,172.903
2022-01-15 16:00:00,155.75
2022-01-15 17:00:00,152.347
2022-01-15 18:00:00,137.295
2022-01-15 19:00:00,151.232
2022-01-15 20:00:00,165.771
2022-01-15 21:00:00,172.816
2022-01-15 22:00:00,179.476
2022-01-15 23:00:00,158.627
2022-01-16 00:00:00,156.631
2022-01-16 01:00:00,155.015
2022-01-16 02:00:00,169.514
2022-01-16 03:00:00,1927.376
2022-01-16 04:00:00,171.379
2022-01-16 05:00:00,146.187
2022-01-16 06:00:00,151.068
2022-01-16 07:00:00,136.46
2022-01-16 08:00:00,148.784
2022-01-16 09:00:00,159.457
2022-01-16 10:00:00,176.898
2022-01-16 11:00:00,180.673
2022-01-16 12:00:00,153.202
2022-01-16 13:00:00,146.64
2022-01-16 14:00:00,142.367
2022-01-16 15:00:00,156.713
2022-01-16 16:00:00,1869.826
2022-01-16 17:00:00,159.356
2022-01-16 18:00:00,139.482
2022-01-16 19:00:00,146.594
2022-01-16 20:00:00,138.353
2022-01-16 21:00:00,147.956
2022-01-16 22:00:00,161.561
2022-01-16 23:00:00,179.351
2022-01-17 00:00:00,177.391
2022-01-17 01:00:00,162.681
2022-01-17 02:00:00,156.051
2022-01-17 03:00:00,153.318
2022-01-17 04:00:00,167.785
2022-01-17 05:00:00,1889.879
2022-01-17 06:00:00,175.518
2022-01-17 07:00:00,152.63
2022-01-17 08:00:00,150.919
2022-01-17 09:00:00,138.322
2022-01-17 10:00:00,147.491
2022-01-17 11:00:00,160.056
2022-01-17 12:00:00,178.656
2022-01-17 13:00:00,181.673
2022-01-17 14:00:00,161.942
2022-01-17 15:00:00,155.337
2022-01-17 16:00:00,156.001
2022-01-17 17:00:00,172.427
2022-01-17 18:00:00,1930.971
2022-01-17 19:00:00,175.35
2022-01-17 20:00:00,157.548
2022-01-17 21:00:00,149.42
2022-01-17 22:00:00,138.155
2022-01-17 23:00:00,153.824
2022-01-18 00:00:00,164.022
2022-01-18 01:00:00,178.541
2022-01-18 02:00:00,175.913
2022-01-18 03:00:00,163.182
2022-01-18 04:00:00,155.596
2022-01-18 05:00:00,156.598
2022-01-18 06:00:00,174.92
2022-01-18 07:00:00,1943.069
2022-01-18 08:00:00,175.514
2022-01-18 09:00:00,153.555
2022-01-18 10:00:00,159.857
2022-01-18 11:00:00,140.548
2022-01-18 12:00:00,151.645
2022-01-18 13:00:00,171.133
2022-01-18 14:00:00,184.087
2022-01-18 15:00:00,186.022
2022-01-18 16:00:00,169.222
2022-01-18 17:00:00,160.682
2022-01-18 18:00:00,155.899
2022-01-18 19:00:00,175.664
2022-01-18 20:00:00,1983.829
2022-01-18 21:00:00,166.165
2022-01-18 22:00:00,154.226
2022-01-18 23:00:00,156.997
2022-01-19 00:00:00,138.082
2022-01-19 01:00:00,153.221
2022-01-19 02:00:00,166.169
2022-01-19 03:00:00,184.807
2022-01-19 04:00:00,186.844
2022-01-19 05:00:00,160.475
2022-01-19 06:00:00,159.328
2022-01-19 07:00:00,156.604
2022-01-19 08:00:00,170.779
2022-01-19 09:00:00,1953.699
2022-01-19 10:00:00,174.337
2022-01-19 11:00:00,159.772
2022-01-19 12:00:00,155.545
2022-01-19 13:00:00,144.038
2022-01-19 14:00:00,154.284
2022-01-19 15:00:00,170.559
2022-01-19 16:00:00,183.582
2022-01-19 17:00:00,188.407
2022-01-19 18:00:00,167.18
2022-01-19 19:00:00,159.36
2022-01-19 20:00:00,156.666
2022-01-19 21:00:00,173.557
2022-01-19 22:00:00,1987.288
2022-01-19 23:00:00,177.865
2022-01-20 00:00:00,163.114
2022-01-20 01:00:00,156.693
2022-01-20 02:00:00,144.524
2022-01-20 03:00:00,152.626
2022-01-20 04:00:00,168.239
2022-01-20 05:00:00,184.592
2022-01-20 06:00:00,179.993
2022-01-20 07:00:00,160.76
2022-01-20 08:00:00,150.605
2022-01-20 09:00:00,152.302
2022-01-20 10:00:00,168.073
2022-01-20 11:00:00,1959.387
2022-01-20 12:00:00,169.01
2022-01-20 13:00:00,138.457
2022-01-20 14:00:00,134.157
2022-01-20 15:00:00,125.161
2022-01-20 16:00:00,131.317
2022-01-20 17:00:00,147.22
2022-01-20 18:00:00,157.083
2022-01-20 19:00:00,161.543
2022-01-20 20:00:00,137.175
2022-01-20 21:00:00,138.952
2022-01-20 22:00:00,136.236
2022-01-20 23:00:00,164.564
2022-01-21 00:00:00,1740.874
2022-01-21 01:00:00,169.541
2022-01-21 02:00:00,149.732
2022-01-21 03:00:00,142.659
2022-01-21 04:00:00,125.288
2022-01-21 05:00:00,141.697
2022-01-21 06:00:00,163.128
2022-01-21 07:00:00,177.165
2022-01-21 08:00:00,176.655
2022-01-21 09:00:00,148.406
2022-01-21 10:00:00,132.129
2022-01-21 11:00:00,135.919
2022-01-21 12:00:00,165.3
2022-01-21 13:00:00,1827.618
2022-01-21 14:00:00,166.309
2022-01-21 15:00:00,135.738
2022-01-21 16:00:00,133.862
2022-01-21 17:00:00,123.65
2022-01-21 18:00:00,135.488
2022-01-21 19:00:00,155.016
2022-01-21 20:00:00,173.728
2022-01-21 21:00:00,169.987
2022-01-21 22:00:00,141.456
2022-01-21 23:00:00,128.32
2022-01-22 00:00:00,123.628
2022-01-22 01:00:00,135.527
2022-01-22 02:00:00,1722.711
2022-01-22 03:00:00,129.542
2022-01-22 04:00:00,115.247
2022-01-22 05:00:00,105.084
2022-01-22 06:00:00,94.674
2022-01-22 07:00:00,114.96
2022-01-22 08:00:00,131.167
2022-01-22 09:00:00,158.331
2022-01-22 10:00:00,151.36
2022-01-22 11:00:00,127.184
2022-01-22 12:00:00,121.741
2022-01-22 13:00:00,127.974
2022-01-22 14:00:00,133.974
2022-01-22 15:00:00,1511.237
2022-01-22 16:00:00,137.055
2022-01-22 17:00:00,122.562
2022-01-22 18:00:00,128.606
2022-01-22 19:00:00,110.959
2022-01-22 20:00:00,118.029
2022-01-22 21:00:00,137.026
2022-01-22 22:00:00,151.952
2022-01-22 23:00:00,149.701
2022-01-23 00:00:00,132.785
2022-01-23 01:00:00,121.075
2022-01-23 02:00:00,120.445
2022-01-23 03:00:00,141.155
2022-01-23 04:00:00,1571.349
2022-01-23 05:00:00,153.85
2022-01-23 06:00:00,140.102
2022-01-23 07:00:00,132.664
2022-01-23 08:00:00,106.751
2022-01-23 09:00:00,117.672
2022-01-23 10:00:00,136.577
2022-01-23 11:00:00,149.776
2022-01-23 12:00:00,148.995
2022-01-23 13:00:00,126.983
2022-01-23 14:00:00,112.3
2022-01-23 15:00:00,118.837
2022-01-23 16:00:00,124.629
2022-01-23 17:00:00,1569.137
2022-01-23 18:00:00,130.232
2022-01-23 19:00:00,122.417
2022-01-23 20:00:00,106.412
2022-01-23 21:00:00,88.646
2022-01-23 22:00:00,104.498
2022-01-23 23:00:00,126.28
2022-01-24 00:00:00,140.283
2022-01-24 01:00:00,135.156
2022-01-24 02:00:00,118.653
2022-01-24 03:00:00,98.469
2022-01-24 04:00:00,90.263
2022-01-24 05:00:00,91.658
2022-01-24 06:00:00,1352.967
2022-01-24 07:00:00,113.495
2022-01-24 08:00:00,92.416
2022-01-24 09:00:00,72.84
2022-01-24 10:00:00,71.41
2022-01-24 11:00:00,82.51
2022-01-24 12:00:00,115.772
2022-01-24 13:00:00,135.958
1 date Value
2 2022-01-01 00:00:00 72.076
3 2022-01-01 01:00:00 64.442
4 2022-01-01 02:00:00 64.084
5 2022-01-01 03:00:00 60.842
6 2022-01-01 04:00:00 61.798
7 2022-01-01 05:00:00 66.538
8 2022-01-01 06:00:00 72.626
9 2022-01-01 07:00:00 75.181
10 2022-01-01 08:00:00 68.397
11 2022-01-01 09:00:00 67.668
12 2022-01-01 10:00:00 67.021
13 2022-01-01 11:00:00 71.118
14 2022-01-01 12:00:00 811.791
15 2022-01-01 13:00:00 70.55
16 2022-01-01 14:00:00 62.929
17 2022-01-01 15:00:00 64.519
18 2022-01-01 16:00:00 60.544
19 2022-01-01 17:00:00 64.687
20 2022-01-01 18:00:00 64.736
21 2022-01-01 19:00:00 73.698
22 2022-01-01 20:00:00 72.559
23 2022-01-01 21:00:00 63.221
24 2022-01-01 22:00:00 65.418
25 2022-01-01 23:00:00 65.593
26 2022-01-02 00:00:00 71.677
27 2022-01-02 01:00:00 800.131
28 2022-01-02 02:00:00 72.708
29 2022-01-02 03:00:00 65.117
30 2022-01-02 04:00:00 66.532
31 2022-01-02 05:00:00 61.975
32 2022-01-02 06:00:00 62.031
33 2022-01-02 07:00:00 67.875
34 2022-01-02 08:00:00 74.184
35 2022-01-02 09:00:00 77.029
36 2022-01-02 10:00:00 66.156
37 2022-01-02 11:00:00 66.651
38 2022-01-02 12:00:00 67.625
39 2022-01-02 13:00:00 75.857
40 2022-01-02 14:00:00 823.74
41 2022-01-02 15:00:00 81.264
42 2022-01-02 16:00:00 71.058
43 2022-01-02 17:00:00 73.361
44 2022-01-02 18:00:00 68.703
45 2022-01-02 19:00:00 68.985
46 2022-01-02 20:00:00 73.936
47 2022-01-02 21:00:00 80.968
48 2022-01-02 22:00:00 81.962
49 2022-01-02 23:00:00 72.95
50 2022-01-03 00:00:00 74.746
51 2022-01-03 01:00:00 78.924
52 2022-01-03 02:00:00 84.49
53 2022-01-03 03:00:00 911.346
54 2022-01-03 04:00:00 87.215
55 2022-01-03 05:00:00 75.943
56 2022-01-03 06:00:00 75.092
57 2022-01-03 07:00:00 68.641
58 2022-01-03 08:00:00 74.916
59 2022-01-03 09:00:00 80.942
60 2022-01-03 10:00:00 90.667
61 2022-01-03 11:00:00 89.046
62 2022-01-03 12:00:00 80.975
63 2022-01-03 13:00:00 77.369
64 2022-01-03 14:00:00 78.058
65 2022-01-03 15:00:00 83.279
66 2022-01-03 16:00:00 962.143
67 2022-01-03 17:00:00 85.191
68 2022-01-03 18:00:00 71.476
69 2022-01-03 19:00:00 67.829
70 2022-01-03 20:00:00 69.051
71 2022-01-03 21:00:00 74.201
72 2022-01-03 22:00:00 81.372
73 2022-01-03 23:00:00 88.003
74 2022-01-04 00:00:00 91.836
75 2022-01-04 01:00:00 85.066
76 2022-01-04 02:00:00 79.494
77 2022-01-04 03:00:00 79.291
78 2022-01-04 04:00:00 87.107
79 2022-01-04 05:00:00 959.916
80 2022-01-04 06:00:00 93.946
81 2022-01-04 07:00:00 83.91
82 2022-01-04 08:00:00 83.689
83 2022-01-04 09:00:00 78.077
84 2022-01-04 10:00:00 83.19
85 2022-01-04 11:00:00 88.15
86 2022-01-04 12:00:00 96.579
87 2022-01-04 13:00:00 97.246
88 2022-01-04 14:00:00 84.463
89 2022-01-04 15:00:00 86.071
90 2022-01-04 16:00:00 86.09
91 2022-01-04 17:00:00 94.293
92 2022-01-04 18:00:00 1055.704
93 2022-01-04 19:00:00 100.568
94 2022-01-04 20:00:00 94.862
95 2022-01-04 21:00:00 93.21
96 2022-01-04 22:00:00 81.245
97 2022-01-04 23:00:00 82.785
98 2022-01-05 00:00:00 91.484
99 2022-01-05 01:00:00 107.126
100 2022-01-05 02:00:00 106.245
101 2022-01-05 03:00:00 95.662
102 2022-01-05 04:00:00 90.03
103 2022-01-05 05:00:00 91.239
104 2022-01-05 06:00:00 102.138
105 2022-01-05 07:00:00 1136.594
106 2022-01-05 08:00:00 108.164
107 2022-01-05 09:00:00 94.766
108 2022-01-05 10:00:00 95.724
109 2022-01-05 11:00:00 86.386
110 2022-01-05 12:00:00 89.002
111 2022-01-05 13:00:00 99.05
112 2022-01-05 14:00:00 111.044
113 2022-01-05 15:00:00 107.758
114 2022-01-05 16:00:00 95.891
115 2022-01-05 17:00:00 94.541
116 2022-01-05 18:00:00 92.986
117 2022-01-05 19:00:00 105.056
118 2022-01-05 20:00:00 1180.367
119 2022-01-05 21:00:00 113.136
120 2022-01-05 22:00:00 97.313
121 2022-01-05 23:00:00 95.335
122 2022-01-06 00:00:00 86.587
123 2022-01-06 01:00:00 90.83
124 2022-01-06 02:00:00 94.419
125 2022-01-06 03:00:00 109.995
126 2022-01-06 04:00:00 109.179
127 2022-01-06 05:00:00 96.39
128 2022-01-06 06:00:00 92.24
129 2022-01-06 07:00:00 95.165
130 2022-01-06 08:00:00 101.367
131 2022-01-06 09:00:00 1181.956
132 2022-01-06 10:00:00 105.965
133 2022-01-06 11:00:00 90.912
134 2022-01-06 12:00:00 93.568
135 2022-01-06 13:00:00 86.575
136 2022-01-06 14:00:00 90.75
137 2022-01-06 15:00:00 99.98
138 2022-01-06 16:00:00 119.945
139 2022-01-06 17:00:00 126.652
140 2022-01-06 18:00:00 107.675
141 2022-01-06 19:00:00 100.677
142 2022-01-06 20:00:00 101.663
143 2022-01-06 21:00:00 117.417
144 2022-01-06 22:00:00 1241.778
145 2022-01-06 23:00:00 119.436
146 2022-01-07 00:00:00 103.635
147 2022-01-07 01:00:00 108.149
148 2022-01-07 02:00:00 94.329
149 2022-01-07 03:00:00 98.181
150 2022-01-07 04:00:00 112.983
151 2022-01-07 05:00:00 119.701
152 2022-01-07 06:00:00 125.724
153 2022-01-07 07:00:00 107.179
154 2022-01-07 08:00:00 108.583
155 2022-01-07 09:00:00 107.546
156 2022-01-07 10:00:00 112.167
157 2022-01-07 11:00:00 1317.614
158 2022-01-07 12:00:00 125.429
159 2022-01-07 13:00:00 109.359
160 2022-01-07 14:00:00 107.966
161 2022-01-07 15:00:00 100.317
162 2022-01-07 16:00:00 107.595
163 2022-01-07 17:00:00 113.584
164 2022-01-07 18:00:00 126.626
165 2022-01-07 19:00:00 124.309
166 2022-01-07 20:00:00 111.9
167 2022-01-07 21:00:00 108.331
168 2022-01-07 22:00:00 107.034
169 2022-01-07 23:00:00 124.95
170 2022-01-08 00:00:00 1367.401
171 2022-01-08 01:00:00 126.887
172 2022-01-08 02:00:00 109.086
173 2022-01-08 03:00:00 106.803
174 2022-01-08 04:00:00 95.341
175 2022-01-08 05:00:00 101.892
176 2022-01-08 06:00:00 116.698
177 2022-01-08 07:00:00 134.789
178 2022-01-08 08:00:00 122.28
179 2022-01-08 09:00:00 112.03
180 2022-01-08 10:00:00 107.235
181 2022-01-08 11:00:00 107.317
182 2022-01-08 12:00:00 117.127
183 2022-01-08 13:00:00 1357.485
184 2022-01-08 14:00:00 124.043
185 2022-01-08 15:00:00 106.754
186 2022-01-08 16:00:00 108.607
187 2022-01-08 17:00:00 102.222
188 2022-01-08 18:00:00 112.257
189 2022-01-08 19:00:00 126.2
190 2022-01-08 20:00:00 140.582
191 2022-01-08 21:00:00 139.268
192 2022-01-08 22:00:00 117.773
193 2022-01-08 23:00:00 113.515
194 2022-01-09 00:00:00 111.217
195 2022-01-09 01:00:00 124.314
196 2022-01-09 02:00:00 1426.753
197 2022-01-09 03:00:00 133.468
198 2022-01-09 04:00:00 120.783
199 2022-01-09 05:00:00 115.584
200 2022-01-09 06:00:00 106.49
201 2022-01-09 07:00:00 111.2
202 2022-01-09 08:00:00 128.537
203 2022-01-09 09:00:00 141.139
204 2022-01-09 10:00:00 148.031
205 2022-01-09 11:00:00 121.057
206 2022-01-09 12:00:00 117.165
207 2022-01-09 13:00:00 116.659
208 2022-01-09 14:00:00 131.695
209 2022-01-09 15:00:00 1491.807
210 2022-01-09 16:00:00 132.233
211 2022-01-09 17:00:00 124.345
212 2022-01-09 18:00:00 122.803
213 2022-01-09 19:00:00 111.194
214 2022-01-09 20:00:00 115.915
215 2022-01-09 21:00:00 126.031
216 2022-01-09 22:00:00 138.083
217 2022-01-09 23:00:00 139.614
218 2022-01-10 00:00:00 124.594
219 2022-01-10 01:00:00 119.943
220 2022-01-10 02:00:00 120.824
221 2022-01-10 03:00:00 143.264
222 2022-01-10 04:00:00 1518.844
223 2022-01-10 05:00:00 132.923
224 2022-01-10 06:00:00 116.26
225 2022-01-10 07:00:00 121.806
226 2022-01-10 08:00:00 115.909
227 2022-01-10 09:00:00 118.556
228 2022-01-10 10:00:00 130.719
229 2022-01-10 11:00:00 143.146
230 2022-01-10 12:00:00 146.257
231 2022-01-10 13:00:00 134.042
232 2022-01-10 14:00:00 128.8
233 2022-01-10 15:00:00 122.119
234 2022-01-10 16:00:00 137.027
235 2022-01-10 17:00:00 1547.564
236 2022-01-10 18:00:00 143.148
237 2022-01-10 19:00:00 117.505
238 2022-01-10 20:00:00 118.823
239 2022-01-10 21:00:00 111.147
240 2022-01-10 22:00:00 122.745
241 2022-01-10 23:00:00 131.945
242 2022-01-11 00:00:00 144.042
243 2022-01-11 01:00:00 144.107
244 2022-01-11 02:00:00 129.099
245 2022-01-11 03:00:00 124.058
246 2022-01-11 04:00:00 127.928
247 2022-01-11 05:00:00 133.633
248 2022-01-11 06:00:00 1548.18
249 2022-01-11 07:00:00 137.39
250 2022-01-11 08:00:00 121.125
251 2022-01-11 09:00:00 126.201
252 2022-01-11 10:00:00 118.33
253 2022-01-11 11:00:00 121.946
254 2022-01-11 12:00:00 129.054
255 2022-01-11 13:00:00 148.563
256 2022-01-11 14:00:00 142.166
257 2022-01-11 15:00:00 132.766
258 2022-01-11 16:00:00 126.405
259 2022-01-11 17:00:00 126.014
260 2022-01-11 18:00:00 139.605
261 2022-01-11 19:00:00 1569.566
262 2022-01-11 20:00:00 139.269
263 2022-01-11 21:00:00 128.056
264 2022-01-11 22:00:00 134.599
265 2022-01-11 23:00:00 119.596
266 2022-01-12 00:00:00 120.469
267 2022-01-12 01:00:00 136.697
268 2022-01-12 02:00:00 157.967
269 2022-01-12 03:00:00 156.392
270 2022-01-12 04:00:00 133.435
271 2022-01-12 05:00:00 130.321
272 2022-01-12 06:00:00 131.799
273 2022-01-12 07:00:00 143.919
274 2022-01-12 08:00:00 1632.52
275 2022-01-12 09:00:00 153.119
276 2022-01-12 10:00:00 131.25
277 2022-01-12 11:00:00 132.54
278 2022-01-12 12:00:00 120.392
279 2022-01-12 13:00:00 126.496
280 2022-01-12 14:00:00 146.639
281 2022-01-12 15:00:00 153.375
282 2022-01-12 16:00:00 151.757
283 2022-01-12 17:00:00 133.235
284 2022-01-12 18:00:00 129.229
285 2022-01-12 19:00:00 124.074
286 2022-01-12 20:00:00 136.675
287 2022-01-12 21:00:00 1638.781
288 2022-01-12 22:00:00 143.097
289 2022-01-12 23:00:00 127.774
290 2022-01-13 00:00:00 127.348
291 2022-01-13 01:00:00 118.414
292 2022-01-13 02:00:00 125.516
293 2022-01-13 03:00:00 138.913
294 2022-01-13 04:00:00 159.638
295 2022-01-13 05:00:00 167.717
296 2022-01-13 06:00:00 137.474
297 2022-01-13 07:00:00 132.871
298 2022-01-13 08:00:00 134.591
299 2022-01-13 09:00:00 147.39
300 2022-01-13 10:00:00 1660.744
301 2022-01-13 11:00:00 153.915
302 2022-01-13 12:00:00 138.446
303 2022-01-13 13:00:00 138.362
304 2022-01-13 14:00:00 124.885
305 2022-01-13 15:00:00 135.014
306 2022-01-13 16:00:00 147.23
307 2022-01-13 17:00:00 160.939
308 2022-01-13 18:00:00 162.998
309 2022-01-13 19:00:00 144.095
310 2022-01-13 20:00:00 143.399
311 2022-01-13 21:00:00 147.318
312 2022-01-13 22:00:00 155.809
313 2022-01-13 23:00:00 1752.41
314 2022-01-14 00:00:00 162.245
315 2022-01-14 01:00:00 135.873
316 2022-01-14 02:00:00 138.495
317 2022-01-14 03:00:00 130.325
318 2022-01-14 04:00:00 136.525
319 2022-01-14 05:00:00 147.624
320 2022-01-14 06:00:00 169.108
321 2022-01-14 07:00:00 164.925
322 2022-01-14 08:00:00 152.353
323 2022-01-14 09:00:00 152.153
324 2022-01-14 10:00:00 146.425
325 2022-01-14 11:00:00 160.993
326 2022-01-14 12:00:00 1797.045
327 2022-01-14 13:00:00 159.602
328 2022-01-14 14:00:00 138.682
329 2022-01-14 15:00:00 144.143
330 2022-01-14 16:00:00 133.418
331 2022-01-14 17:00:00 146.249
332 2022-01-14 18:00:00 158.591
333 2022-01-14 19:00:00 174.995
334 2022-01-14 20:00:00 174.745
335 2022-01-14 21:00:00 156.709
336 2022-01-14 22:00:00 147.334
337 2022-01-14 23:00:00 139.397
338 2022-01-15 00:00:00 154.318
339 2022-01-15 01:00:00 1828.184
340 2022-01-15 02:00:00 161.387
341 2022-01-15 03:00:00 138.081
342 2022-01-15 04:00:00 145.169
343 2022-01-15 05:00:00 137.504
344 2022-01-15 06:00:00 144.891
345 2022-01-15 07:00:00 157.377
346 2022-01-15 08:00:00 179.42
347 2022-01-15 09:00:00 173.707
348 2022-01-15 10:00:00 154.874
349 2022-01-15 11:00:00 147.523
350 2022-01-15 12:00:00 142.095
351 2022-01-15 13:00:00 154.387
352 2022-01-15 14:00:00 1836.415
353 2022-01-15 15:00:00 172.903
354 2022-01-15 16:00:00 155.75
355 2022-01-15 17:00:00 152.347
356 2022-01-15 18:00:00 137.295
357 2022-01-15 19:00:00 151.232
358 2022-01-15 20:00:00 165.771
359 2022-01-15 21:00:00 172.816
360 2022-01-15 22:00:00 179.476
361 2022-01-15 23:00:00 158.627
362 2022-01-16 00:00:00 156.631
363 2022-01-16 01:00:00 155.015
364 2022-01-16 02:00:00 169.514
365 2022-01-16 03:00:00 1927.376
366 2022-01-16 04:00:00 171.379
367 2022-01-16 05:00:00 146.187
368 2022-01-16 06:00:00 151.068
369 2022-01-16 07:00:00 136.46
370 2022-01-16 08:00:00 148.784
371 2022-01-16 09:00:00 159.457
372 2022-01-16 10:00:00 176.898
373 2022-01-16 11:00:00 180.673
374 2022-01-16 12:00:00 153.202
375 2022-01-16 13:00:00 146.64
376 2022-01-16 14:00:00 142.367
377 2022-01-16 15:00:00 156.713
378 2022-01-16 16:00:00 1869.826
379 2022-01-16 17:00:00 159.356
380 2022-01-16 18:00:00 139.482
381 2022-01-16 19:00:00 146.594
382 2022-01-16 20:00:00 138.353
383 2022-01-16 21:00:00 147.956
384 2022-01-16 22:00:00 161.561
385 2022-01-16 23:00:00 179.351
386 2022-01-17 00:00:00 177.391
387 2022-01-17 01:00:00 162.681
388 2022-01-17 02:00:00 156.051
389 2022-01-17 03:00:00 153.318
390 2022-01-17 04:00:00 167.785
391 2022-01-17 05:00:00 1889.879
392 2022-01-17 06:00:00 175.518
393 2022-01-17 07:00:00 152.63
394 2022-01-17 08:00:00 150.919
395 2022-01-17 09:00:00 138.322
396 2022-01-17 10:00:00 147.491
397 2022-01-17 11:00:00 160.056
398 2022-01-17 12:00:00 178.656
399 2022-01-17 13:00:00 181.673
400 2022-01-17 14:00:00 161.942
401 2022-01-17 15:00:00 155.337
402 2022-01-17 16:00:00 156.001
403 2022-01-17 17:00:00 172.427
404 2022-01-17 18:00:00 1930.971
405 2022-01-17 19:00:00 175.35
406 2022-01-17 20:00:00 157.548
407 2022-01-17 21:00:00 149.42
408 2022-01-17 22:00:00 138.155
409 2022-01-17 23:00:00 153.824
410 2022-01-18 00:00:00 164.022
411 2022-01-18 01:00:00 178.541
412 2022-01-18 02:00:00 175.913
413 2022-01-18 03:00:00 163.182
414 2022-01-18 04:00:00 155.596
415 2022-01-18 05:00:00 156.598
416 2022-01-18 06:00:00 174.92
417 2022-01-18 07:00:00 1943.069
418 2022-01-18 08:00:00 175.514
419 2022-01-18 09:00:00 153.555
420 2022-01-18 10:00:00 159.857
421 2022-01-18 11:00:00 140.548
422 2022-01-18 12:00:00 151.645
423 2022-01-18 13:00:00 171.133
424 2022-01-18 14:00:00 184.087
425 2022-01-18 15:00:00 186.022
426 2022-01-18 16:00:00 169.222
427 2022-01-18 17:00:00 160.682
428 2022-01-18 18:00:00 155.899
429 2022-01-18 19:00:00 175.664
430 2022-01-18 20:00:00 1983.829
431 2022-01-18 21:00:00 166.165
432 2022-01-18 22:00:00 154.226
433 2022-01-18 23:00:00 156.997
434 2022-01-19 00:00:00 138.082
435 2022-01-19 01:00:00 153.221
436 2022-01-19 02:00:00 166.169
437 2022-01-19 03:00:00 184.807
438 2022-01-19 04:00:00 186.844
439 2022-01-19 05:00:00 160.475
440 2022-01-19 06:00:00 159.328
441 2022-01-19 07:00:00 156.604
442 2022-01-19 08:00:00 170.779
443 2022-01-19 09:00:00 1953.699
444 2022-01-19 10:00:00 174.337
445 2022-01-19 11:00:00 159.772
446 2022-01-19 12:00:00 155.545
447 2022-01-19 13:00:00 144.038
448 2022-01-19 14:00:00 154.284
449 2022-01-19 15:00:00 170.559
450 2022-01-19 16:00:00 183.582
451 2022-01-19 17:00:00 188.407
452 2022-01-19 18:00:00 167.18
453 2022-01-19 19:00:00 159.36
454 2022-01-19 20:00:00 156.666
455 2022-01-19 21:00:00 173.557
456 2022-01-19 22:00:00 1987.288
457 2022-01-19 23:00:00 177.865
458 2022-01-20 00:00:00 163.114
459 2022-01-20 01:00:00 156.693
460 2022-01-20 02:00:00 144.524
461 2022-01-20 03:00:00 152.626
462 2022-01-20 04:00:00 168.239
463 2022-01-20 05:00:00 184.592
464 2022-01-20 06:00:00 179.993
465 2022-01-20 07:00:00 160.76
466 2022-01-20 08:00:00 150.605
467 2022-01-20 09:00:00 152.302
468 2022-01-20 10:00:00 168.073
469 2022-01-20 11:00:00 1959.387
470 2022-01-20 12:00:00 169.01
471 2022-01-20 13:00:00 138.457
472 2022-01-20 14:00:00 134.157
473 2022-01-20 15:00:00 125.161
474 2022-01-20 16:00:00 131.317
475 2022-01-20 17:00:00 147.22
476 2022-01-20 18:00:00 157.083
477 2022-01-20 19:00:00 161.543
478 2022-01-20 20:00:00 137.175
479 2022-01-20 21:00:00 138.952
480 2022-01-20 22:00:00 136.236
481 2022-01-20 23:00:00 164.564
482 2022-01-21 00:00:00 1740.874
483 2022-01-21 01:00:00 169.541
484 2022-01-21 02:00:00 149.732
485 2022-01-21 03:00:00 142.659
486 2022-01-21 04:00:00 125.288
487 2022-01-21 05:00:00 141.697
488 2022-01-21 06:00:00 163.128
489 2022-01-21 07:00:00 177.165
490 2022-01-21 08:00:00 176.655
491 2022-01-21 09:00:00 148.406
492 2022-01-21 10:00:00 132.129
493 2022-01-21 11:00:00 135.919
494 2022-01-21 12:00:00 165.3
495 2022-01-21 13:00:00 1827.618
496 2022-01-21 14:00:00 166.309
497 2022-01-21 15:00:00 135.738
498 2022-01-21 16:00:00 133.862
499 2022-01-21 17:00:00 123.65
500 2022-01-21 18:00:00 135.488
501 2022-01-21 19:00:00 155.016
502 2022-01-21 20:00:00 173.728
503 2022-01-21 21:00:00 169.987
504 2022-01-21 22:00:00 141.456
505 2022-01-21 23:00:00 128.32
506 2022-01-22 00:00:00 123.628
507 2022-01-22 01:00:00 135.527
508 2022-01-22 02:00:00 1722.711
509 2022-01-22 03:00:00 129.542
510 2022-01-22 04:00:00 115.247
511 2022-01-22 05:00:00 105.084
512 2022-01-22 06:00:00 94.674
513 2022-01-22 07:00:00 114.96
514 2022-01-22 08:00:00 131.167
515 2022-01-22 09:00:00 158.331
516 2022-01-22 10:00:00 151.36
517 2022-01-22 11:00:00 127.184
518 2022-01-22 12:00:00 121.741
519 2022-01-22 13:00:00 127.974
520 2022-01-22 14:00:00 133.974
521 2022-01-22 15:00:00 1511.237
522 2022-01-22 16:00:00 137.055
523 2022-01-22 17:00:00 122.562
524 2022-01-22 18:00:00 128.606
525 2022-01-22 19:00:00 110.959
526 2022-01-22 20:00:00 118.029
527 2022-01-22 21:00:00 137.026
528 2022-01-22 22:00:00 151.952
529 2022-01-22 23:00:00 149.701
530 2022-01-23 00:00:00 132.785
531 2022-01-23 01:00:00 121.075
532 2022-01-23 02:00:00 120.445
533 2022-01-23 03:00:00 141.155
534 2022-01-23 04:00:00 1571.349
535 2022-01-23 05:00:00 153.85
536 2022-01-23 06:00:00 140.102
537 2022-01-23 07:00:00 132.664
538 2022-01-23 08:00:00 106.751
539 2022-01-23 09:00:00 117.672
540 2022-01-23 10:00:00 136.577
541 2022-01-23 11:00:00 149.776
542 2022-01-23 12:00:00 148.995
543 2022-01-23 13:00:00 126.983
544 2022-01-23 14:00:00 112.3
545 2022-01-23 15:00:00 118.837
546 2022-01-23 16:00:00 124.629
547 2022-01-23 17:00:00 1569.137
548 2022-01-23 18:00:00 130.232
549 2022-01-23 19:00:00 122.417
550 2022-01-23 20:00:00 106.412
551 2022-01-23 21:00:00 88.646
552 2022-01-23 22:00:00 104.498
553 2022-01-23 23:00:00 126.28
554 2022-01-24 00:00:00 140.283
555 2022-01-24 01:00:00 135.156
556 2022-01-24 02:00:00 118.653
557 2022-01-24 03:00:00 98.469
558 2022-01-24 04:00:00 90.263
559 2022-01-24 05:00:00 91.658
560 2022-01-24 06:00:00 1352.967
561 2022-01-24 07:00:00 113.495
562 2022-01-24 08:00:00 92.416
563 2022-01-24 09:00:00 72.84
564 2022-01-24 10:00:00 71.41
565 2022-01-24 11:00:00 82.51
566 2022-01-24 12:00:00 115.772
567 2022-01-24 13:00:00 135.958

File diff suppressed because it is too large Load Diff

231
carbon/matrix2series.ipynb Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

0
load/__init__.py Normal file
View File

32993
load/data/Load_original.csv Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

25
load/load_inference.py Normal file
View File

@ -0,0 +1,25 @@
import joblib
import numpy as np
def load_load_model(path):
gbm = joblib.load(path)
return gbm
def load_forecast(inputs: np.ndarray, model):
"""_summary_
Args:
inputs (np.ndarray): 输入序列
model (_type_): _description_
"""
out = model.predict([inputs])
return out
if __name__ == '__main__':
model = load_load_model('./models/load_pred.joblib')
inputs = np.random.randn(24)
print(inputs.shape)
out = load_forecast(inputs, model)
print(out)

73
load/load_train.py Normal file
View File

@ -0,0 +1,73 @@
import pandas as pd
import numpy as np
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
import joblib
from logzero import logger
def time_series_to_supervised(data, columns, n_in=24, n_out=1,dropnan=True):
"""
:param data:作为列表或2D NumPy数组的观察序列需要
:param n_in:作为输入的滞后观察数X值可以在[1..len数据]之间可选默认为1
:param n_out:作为输出的观测数量y值可以在[0..len数据]之间可选的默认为1
:param dropnan:Boolean是否删除具有NaN值的行可选的默认为True
:return:
"""
logger.info(f"正在处理训练数据size{data.shape}")
n_vars = 1 if type(data) is list else data.shape[1]
df = pd.DataFrame(data)
origNames = columns
cols, names = list(), list()
cols.append(df.shift(0))
names += [('%s' % origNames[j]) for j in range(n_vars)]
n_in = max(1, n_in)
for i in range(n_in-1, 0, -1):
time = '(t-%d)' % i
cols.append(df.shift(i))
names += [('%s%s' % (origNames[j], time)) for j in range(n_vars)]
n_out = max(n_out, 0)
for i in range(1, n_out+1):
time = '(t+%d)' % i
cols.append(df.shift(-i))
names += [('%s%s' % (origNames[j], time)) for j in range(n_vars)]
agg = pd.concat(cols, axis=1)
agg.columns = names
if dropnan:
agg.dropna(inplace=True)
return agg
def train_model(train_data: pd.DataFrame):
"""训练模型的函数,需要根据模型类型实际调整
Args:
data (pd.DataFrame): 训练集
"""
# 特征和输出列名,需要根据业务场景灵活处理
fea_cols = train_data.columns[:-1].tolist()
out_cols = train_data.columns[-1:].tolist()
logger.info(fea_cols, out_cols)
X = train_data[fea_cols]
y = train_data[out_cols]
train_X,test_X,train_y,test_y = train_test_split(X, y, test_size=0.2, random_state=42)
valid_X,test_X,valid_y,test_y = train_test_split(test_X, test_y, test_size=0.5, random_state=42)
# 参数
other_params = {'learning_rate': 0.1, 'n_estimators': 150, 'max_depth': 10, 'min_child_weight': 1, 'seed': 0, 'subsample': 0.8, 'colsample_bytree': 0.8, 'gamma': 0, 'reg_alpha': 0, 'reg_lambda': 1}
print(train_X.shape, train_y.shape)
gbm = xgb.XGBRegressor(objective='reg:squarederror',**other_params)
gbm.fit(train_X.values, train_y.values, eval_set=[(valid_X.values, valid_y.values)], early_stopping_rounds=20)
y_pred = gbm.predict(test_X.values)
logger.info(f"Root Mean Squared Error on Test set: {np.sqrt(mean_squared_error(test_y, y_pred))}")
logger.info(f"R2 score on Test set: {r2_score(test_y, y_pred)}")
joblib.dump(gbm, './models/load_pred.joblib')
logger.info(f"save_path: ./models/load_pred.joblib")
if __name__ == '__main__':
data = pd.read_csv('./data/load_data_hourly.csv', index_col=0)
agg = time_series_to_supervised(data.values, data.columns, 24, 1)
train_model(agg)

422
load/matrix2series.ipynb Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -2,8 +2,13 @@
"cells": [
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"execution_count": 9,
"metadata": {
"ExecuteTime": {
"start_time": "2025-02-09T19:14:42.420799Z",
"end_time": "2025-02-09T19:14:42.448185Z"
}
},
"outputs": [],
"source": [
"import pandas as pd\n",
@ -12,205 +17,20 @@
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"execution_count": 10,
"metadata": {
"ExecuteTime": {
"start_time": "2025-02-09T19:14:42.979075Z",
"end_time": "2025-02-09T19:14:43.042942Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>光伏用户编号</th>\n",
" <th>综合倍率</th>\n",
" <th>时间</th>\n",
" <th>p1</th>\n",
" <th>p2</th>\n",
" <th>p3</th>\n",
" <th>p4</th>\n",
" <th>p5</th>\n",
" <th>p6</th>\n",
" <th>p7</th>\n",
" <th>...</th>\n",
" <th>p87</th>\n",
" <th>p88</th>\n",
" <th>p89</th>\n",
" <th>p90</th>\n",
" <th>p91</th>\n",
" <th>p92</th>\n",
" <th>p93</th>\n",
" <th>p94</th>\n",
" <th>p95</th>\n",
" <th>p96</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>f1</td>\n",
" <td>80</td>\n",
" <td>2022-1-3 0:00</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>0.0</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0001</td>\n",
" <td>...</td>\n",
" <td>-0.0031</td>\n",
" <td>-0.0032</td>\n",
" <td>-0.0032</td>\n",
" <td>-0.0033</td>\n",
" <td>-0.0001</td>\n",
" <td>-0.0001</td>\n",
" <td>-0.0003</td>\n",
" <td>-0.0003</td>\n",
" <td>-0.0003</td>\n",
" <td>-0.0001</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>f1</td>\n",
" <td>80</td>\n",
" <td>2022-1-4 0:00</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" <td>0.0</td>\n",
" <td>-0.0001</td>\n",
" <td>-0.0001</td>\n",
" <td>...</td>\n",
" <td>-0.0032</td>\n",
" <td>-0.0032</td>\n",
" <td>-0.0032</td>\n",
" <td>-0.0031</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0001</td>\n",
" <td>-0.0001</td>\n",
" <td>-0.0001</td>\n",
" <td>-0.0001</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>f1</td>\n",
" <td>80</td>\n",
" <td>2022-1-5 0:00</td>\n",
" <td>-0.0003</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>0.0</td>\n",
" <td>-0.0001</td>\n",
" <td>-0.0001</td>\n",
" <td>...</td>\n",
" <td>-0.0016</td>\n",
" <td>-0.0016</td>\n",
" <td>-0.0016</td>\n",
" <td>-0.0017</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0001</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>f1</td>\n",
" <td>80</td>\n",
" <td>2022-1-6 0:00</td>\n",
" <td>-0.0003</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0003</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>...</td>\n",
" <td>-0.0016</td>\n",
" <td>-0.0016</td>\n",
" <td>-0.0016</td>\n",
" <td>-0.0016</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>f1</td>\n",
" <td>80</td>\n",
" <td>2022-1-7 0:00</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0001</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" <td>0.0</td>\n",
" <td>-0.0001</td>\n",
" <td>-0.0003</td>\n",
" <td>...</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 99 columns</p>\n",
"</div>"
],
"text/plain": [
" 光伏用户编号 综合倍率 时间 p1 p2 p3 p4 p5 p6 \\\n",
"0 f1 80 2022-1-3 0:00 0.0000 0.0000 0.0000 0.0000 0.0 0.0000 \n",
"1 f1 80 2022-1-4 0:00 -0.0001 0.0000 -0.0001 0.0000 0.0 -0.0001 \n",
"2 f1 80 2022-1-5 0:00 -0.0003 -0.0001 0.0000 0.0000 0.0 -0.0001 \n",
"3 f1 80 2022-1-6 0:00 -0.0003 0.0000 -0.0003 -0.0001 0.0 0.0000 \n",
"4 f1 80 2022-1-7 0:00 0.0000 -0.0001 -0.0001 0.0000 0.0 -0.0001 \n",
"\n",
" p7 ... p87 p88 p89 p90 p91 p92 p93 \\\n",
"0 -0.0001 ... -0.0031 -0.0032 -0.0032 -0.0033 -0.0001 -0.0001 -0.0003 \n",
"1 -0.0001 ... -0.0032 -0.0032 -0.0032 -0.0031 -0.0001 0.0000 -0.0001 \n",
"2 -0.0001 ... -0.0016 -0.0016 -0.0016 -0.0017 0.0000 0.0000 0.0000 \n",
"3 0.0000 ... -0.0016 -0.0016 -0.0016 -0.0016 0.0000 0.0000 0.0000 \n",
"4 -0.0003 ... 0.0000 -0.0001 0.0000 0.0000 0.0000 -0.0001 0.0000 \n",
"\n",
" p94 p95 p96 \n",
"0 -0.0003 -0.0003 -0.0001 \n",
"1 -0.0001 -0.0001 -0.0001 \n",
"2 0.0000 0.0000 -0.0001 \n",
"3 -0.0001 0.0000 0.0000 \n",
"4 0.0000 0.0000 0.0000 \n",
"\n",
"[5 rows x 99 columns]"
]
"text/plain": " 光伏用户编号 综合倍率 时间 p1 p2 p3 p4 p5 p6 \\\n0 f1 80 2022-1-3 0:00 0.0000 0.0000 0.0000 0.0000 0.0 0.0000 \n1 f1 80 2022-1-4 0:00 -0.0001 0.0000 -0.0001 0.0000 0.0 -0.0001 \n2 f1 80 2022-1-5 0:00 -0.0003 -0.0001 0.0000 0.0000 0.0 -0.0001 \n3 f1 80 2022-1-6 0:00 -0.0003 0.0000 -0.0003 -0.0001 0.0 0.0000 \n4 f1 80 2022-1-7 0:00 0.0000 -0.0001 -0.0001 0.0000 0.0 -0.0001 \n\n p7 ... p87 p88 p89 p90 p91 p92 p93 \\\n0 -0.0001 ... -0.0031 -0.0032 -0.0032 -0.0033 -0.0001 -0.0001 -0.0003 \n1 -0.0001 ... -0.0032 -0.0032 -0.0032 -0.0031 -0.0001 0.0000 -0.0001 \n2 -0.0001 ... -0.0016 -0.0016 -0.0016 -0.0017 0.0000 0.0000 0.0000 \n3 0.0000 ... -0.0016 -0.0016 -0.0016 -0.0016 0.0000 0.0000 0.0000 \n4 -0.0003 ... 0.0000 -0.0001 0.0000 0.0000 0.0000 -0.0001 0.0000 \n\n p94 p95 p96 \n0 -0.0003 -0.0003 -0.0001 \n1 -0.0001 -0.0001 -0.0001 \n2 0.0000 0.0000 -0.0001 \n3 -0.0001 0.0000 0.0000 \n4 0.0000 0.0000 0.0000 \n\n[5 rows x 99 columns]",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>光伏用户编号</th>\n <th>综合倍率</th>\n <th>时间</th>\n <th>p1</th>\n <th>p2</th>\n <th>p3</th>\n <th>p4</th>\n <th>p5</th>\n <th>p6</th>\n <th>p7</th>\n <th>...</th>\n <th>p87</th>\n <th>p88</th>\n <th>p89</th>\n <th>p90</th>\n <th>p91</th>\n <th>p92</th>\n <th>p93</th>\n <th>p94</th>\n <th>p95</th>\n <th>p96</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>f1</td>\n <td>80</td>\n <td>2022-1-3 0:00</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>0.0</td>\n <td>0.0000</td>\n <td>-0.0001</td>\n <td>...</td>\n <td>-0.0031</td>\n <td>-0.0032</td>\n <td>-0.0032</td>\n <td>-0.0033</td>\n <td>-0.0001</td>\n <td>-0.0001</td>\n <td>-0.0003</td>\n <td>-0.0003</td>\n <td>-0.0003</td>\n <td>-0.0001</td>\n </tr>\n <tr>\n <th>1</th>\n <td>f1</td>\n <td>80</td>\n <td>2022-1-4 0:00</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n <td>0.0</td>\n <td>-0.0001</td>\n <td>-0.0001</td>\n <td>...</td>\n <td>-0.0032</td>\n <td>-0.0032</td>\n <td>-0.0032</td>\n <td>-0.0031</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n <td>-0.0001</td>\n <td>-0.0001</td>\n <td>-0.0001</td>\n <td>-0.0001</td>\n </tr>\n <tr>\n <th>2</th>\n <td>f1</td>\n <td>80</td>\n <td>2022-1-5 0:00</td>\n <td>-0.0003</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>0.0</td>\n <td>-0.0001</td>\n <td>-0.0001</td>\n <td>...</td>\n <td>-0.0016</td>\n <td>-0.0016</td>\n <td>-0.0016</td>\n <td>-0.0017</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>-0.0001</td>\n </tr>\n <tr>\n <th>3</th>\n <td>f1</td>\n <td>80</td>\n <td>2022-1-6 0:00</td>\n <td>-0.0003</td>\n <td>0.0000</td>\n <td>-0.0003</td>\n <td>-0.0001</td>\n <td>0.0</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>...</td>\n <td>-0.0016</td>\n <td>-0.0016</td>\n <td>-0.0016</td>\n <td>-0.0016</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n <td>0.0000</td>\n </tr>\n <tr>\n <th>4</th>\n <td>f1</td>\n <td>80</td>\n <td>2022-1-7 0:00</td>\n <td>0.0000</td>\n <td>-0.0001</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n <td>0.0</td>\n <td>-0.0001</td>\n <td>-0.0003</td>\n <td>...</td>\n <td>0.0000</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>0.0000</td>\n </tr>\n </tbody>\n</table>\n<p>5 rows × 99 columns</p>\n</div>"
},
"execution_count": 3,
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
@ -222,8 +42,13 @@
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"execution_count": 11,
"metadata": {
"ExecuteTime": {
"start_time": "2025-02-09T19:14:44.457393Z",
"end_time": "2025-02-09T19:14:44.483344Z"
}
},
"outputs": [],
"source": [
"use_data = data[data['光伏用户编号']=='f1'].sort_values(by='时间').drop(columns=data.columns[:3])"
@ -231,205 +56,20 @@
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"execution_count": 12,
"metadata": {
"ExecuteTime": {
"start_time": "2025-02-09T19:14:46.754912Z",
"end_time": "2025-02-09T19:14:46.763512Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>p1</th>\n",
" <th>p2</th>\n",
" <th>p3</th>\n",
" <th>p4</th>\n",
" <th>p5</th>\n",
" <th>p6</th>\n",
" <th>p7</th>\n",
" <th>p8</th>\n",
" <th>p9</th>\n",
" <th>p10</th>\n",
" <th>...</th>\n",
" <th>p87</th>\n",
" <th>p88</th>\n",
" <th>p89</th>\n",
" <th>p90</th>\n",
" <th>p91</th>\n",
" <th>p92</th>\n",
" <th>p93</th>\n",
" <th>p94</th>\n",
" <th>p95</th>\n",
" <th>p96</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0001</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0003</td>\n",
" <td>0.0000</td>\n",
" <td>...</td>\n",
" <td>-0.0017</td>\n",
" <td>-0.0017</td>\n",
" <td>-0.0017</td>\n",
" <td>-0.0017</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>-0.0001</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0003</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" <td>...</td>\n",
" <td>-0.0032</td>\n",
" <td>-0.0031</td>\n",
" <td>-0.0032</td>\n",
" <td>-0.0032</td>\n",
" <td>-0.0017</td>\n",
" <td>-0.0017</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>-0.0001</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0001</td>\n",
" <td>-0.0001</td>\n",
" <td>...</td>\n",
" <td>-0.0023</td>\n",
" <td>-0.0016</td>\n",
" <td>-0.0016</td>\n",
" <td>-0.0019</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0003</td>\n",
" <td>0.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0001</td>\n",
" <td>-0.0001</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0001</td>\n",
" <td>...</td>\n",
" <td>-0.0032</td>\n",
" <td>-0.0033</td>\n",
" <td>-0.0032</td>\n",
" <td>-0.0033</td>\n",
" <td>-0.0017</td>\n",
" <td>-0.0016</td>\n",
" <td>-0.0017</td>\n",
" <td>-0.0019</td>\n",
" <td>-0.0015</td>\n",
" <td>-0.0017</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0001</td>\n",
" <td>-0.0001</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>...</td>\n",
" <td>-0.0016</td>\n",
" <td>-0.0017</td>\n",
" <td>-0.0017</td>\n",
" <td>-0.0016</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0001</td>\n",
" <td>0.0000</td>\n",
" <td>-0.0001</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 96 columns</p>\n",
"</div>"
],
"text/plain": [
" p1 p2 p3 p4 p5 p6 p7 p8 p9 \\\n",
"7 0.0000 0.0000 0.0000 -0.0001 -0.0001 0.0000 0.0000 0.0000 -0.0003 \n",
"8 -0.0001 -0.0001 0.0000 0.0000 -0.0001 0.0000 -0.0003 0.0000 -0.0001 \n",
"9 -0.0001 -0.0001 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0001 \n",
"10 0.0000 0.0000 0.0000 -0.0001 0.0000 -0.0001 -0.0001 -0.0001 0.0000 \n",
"11 0.0000 0.0000 -0.0001 0.0000 -0.0001 -0.0001 -0.0001 0.0000 0.0000 \n",
"\n",
" p10 ... p87 p88 p89 p90 p91 p92 p93 \\\n",
"7 0.0000 ... -0.0017 -0.0017 -0.0017 -0.0017 -0.0001 0.0000 -0.0001 \n",
"8 0.0000 ... -0.0032 -0.0031 -0.0032 -0.0032 -0.0017 -0.0017 -0.0001 \n",
"9 -0.0001 ... -0.0023 -0.0016 -0.0016 -0.0019 0.0000 -0.0001 0.0000 \n",
"10 -0.0001 ... -0.0032 -0.0033 -0.0032 -0.0033 -0.0017 -0.0016 -0.0017 \n",
"11 0.0000 ... -0.0016 -0.0017 -0.0017 -0.0016 0.0000 0.0000 0.0000 \n",
"\n",
" p94 p95 p96 \n",
"7 0.0000 0.0000 0.0000 \n",
"8 0.0000 -0.0001 0.0000 \n",
"9 0.0000 -0.0003 0.0000 \n",
"10 -0.0019 -0.0015 -0.0017 \n",
"11 -0.0001 0.0000 -0.0001 \n",
"\n",
"[5 rows x 96 columns]"
]
"text/plain": " p1 p2 p3 p4 p5 p6 p7 p8 p9 \\\n7 0.0000 0.0000 0.0000 -0.0001 -0.0001 0.0000 0.0000 0.0000 -0.0003 \n8 -0.0001 -0.0001 0.0000 0.0000 -0.0001 0.0000 -0.0003 0.0000 -0.0001 \n9 -0.0001 -0.0001 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0001 \n10 0.0000 0.0000 0.0000 -0.0001 0.0000 -0.0001 -0.0001 -0.0001 0.0000 \n11 0.0000 0.0000 -0.0001 0.0000 -0.0001 -0.0001 -0.0001 0.0000 0.0000 \n\n p10 ... p87 p88 p89 p90 p91 p92 p93 \\\n7 0.0000 ... -0.0017 -0.0017 -0.0017 -0.0017 -0.0001 0.0000 -0.0001 \n8 0.0000 ... -0.0032 -0.0031 -0.0032 -0.0032 -0.0017 -0.0017 -0.0001 \n9 -0.0001 ... -0.0023 -0.0016 -0.0016 -0.0019 0.0000 -0.0001 0.0000 \n10 -0.0001 ... -0.0032 -0.0033 -0.0032 -0.0033 -0.0017 -0.0016 -0.0017 \n11 0.0000 ... -0.0016 -0.0017 -0.0017 -0.0016 0.0000 0.0000 0.0000 \n\n p94 p95 p96 \n7 0.0000 0.0000 0.0000 \n8 0.0000 -0.0001 0.0000 \n9 0.0000 -0.0003 0.0000 \n10 -0.0019 -0.0015 -0.0017 \n11 -0.0001 0.0000 -0.0001 \n\n[5 rows x 96 columns]",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>p1</th>\n <th>p2</th>\n <th>p3</th>\n <th>p4</th>\n <th>p5</th>\n <th>p6</th>\n <th>p7</th>\n <th>p8</th>\n <th>p9</th>\n <th>p10</th>\n <th>...</th>\n <th>p87</th>\n <th>p88</th>\n <th>p89</th>\n <th>p90</th>\n <th>p91</th>\n <th>p92</th>\n <th>p93</th>\n <th>p94</th>\n <th>p95</th>\n <th>p96</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>7</th>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>-0.0001</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>-0.0003</td>\n <td>0.0000</td>\n <td>...</td>\n <td>-0.0017</td>\n <td>-0.0017</td>\n <td>-0.0017</td>\n <td>-0.0017</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>0.0000</td>\n </tr>\n <tr>\n <th>8</th>\n <td>-0.0001</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n <td>-0.0003</td>\n <td>0.0000</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n <td>...</td>\n <td>-0.0032</td>\n <td>-0.0031</td>\n <td>-0.0032</td>\n <td>-0.0032</td>\n <td>-0.0017</td>\n <td>-0.0017</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n </tr>\n <tr>\n <th>9</th>\n <td>-0.0001</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>-0.0001</td>\n <td>-0.0001</td>\n <td>...</td>\n <td>-0.0023</td>\n <td>-0.0016</td>\n <td>-0.0016</td>\n <td>-0.0019</td>\n <td>0.0000</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>-0.0003</td>\n <td>0.0000</td>\n </tr>\n <tr>\n <th>10</th>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n <td>-0.0001</td>\n <td>-0.0001</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n <td>-0.0001</td>\n <td>...</td>\n <td>-0.0032</td>\n <td>-0.0033</td>\n <td>-0.0032</td>\n <td>-0.0033</td>\n <td>-0.0017</td>\n <td>-0.0016</td>\n <td>-0.0017</td>\n <td>-0.0019</td>\n <td>-0.0015</td>\n <td>-0.0017</td>\n </tr>\n <tr>\n <th>11</th>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n <td>-0.0001</td>\n <td>-0.0001</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>...</td>\n <td>-0.0016</td>\n <td>-0.0017</td>\n <td>-0.0017</td>\n <td>-0.0016</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>-0.0001</td>\n <td>0.0000</td>\n <td>-0.0001</td>\n </tr>\n </tbody>\n</table>\n<p>5 rows × 96 columns</p>\n</div>"
},
"execution_count": 24,
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
@ -440,8 +80,38 @@
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"execution_count": 13,
"outputs": [
{
"data": {
"text/plain": " p1 p2 p3 p4 p5 p6 p7 p8 p9 \\\n458 -0.0012 -0.0012 -0.0011 -0.0011 -0.0011 -0.0011 -0.0011 -0.0013 -0.0012 \n459 -0.0012 -0.0011 -0.0012 -0.0012 -0.0011 -0.0012 -0.0012 -0.0011 -0.0011 \n460 -0.0012 -0.0011 -0.0012 -0.0012 -0.0011 -0.0011 -0.0011 -0.0011 -0.0012 \n461 -0.0012 -0.0012 -0.0011 -0.0011 -0.0012 -0.0011 -0.0011 -0.0012 -0.0011 \n462 -0.0011 -0.0011 -0.0011 -0.0011 -0.0011 -0.0012 -0.0011 -0.0012 -0.0011 \n\n p10 ... p87 p88 p89 p90 p91 p92 p93 \\\n458 -0.0013 ... -0.0011 -0.0011 -0.0012 -0.0012 -0.0012 -0.0011 -0.0012 \n459 -0.0011 ... -0.0033 -0.0036 -0.0011 -0.0013 -0.0011 -0.0011 -0.0011 \n460 -0.0011 ... -0.0011 -0.0012 -0.0012 -0.0012 -0.0012 -0.0011 -0.0011 \n461 -0.0011 ... -0.0011 -0.0013 -0.0011 -0.0012 -0.0011 -0.0012 -0.0012 \n462 -0.0011 ... -0.0012 -0.0011 -0.0012 -0.0011 -0.0012 -0.0012 -0.0011 \n\n p94 p95 p96 \n458 -0.0011 -0.0012 -0.0012 \n459 -0.0011 -0.0011 -0.0011 \n460 -0.0011 -0.0011 -0.0011 \n461 -0.0011 -0.0012 -0.0012 \n462 -0.0011 -0.0011 -0.0011 \n\n[5 rows x 96 columns]",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>p1</th>\n <th>p2</th>\n <th>p3</th>\n <th>p4</th>\n <th>p5</th>\n <th>p6</th>\n <th>p7</th>\n <th>p8</th>\n <th>p9</th>\n <th>p10</th>\n <th>...</th>\n <th>p87</th>\n <th>p88</th>\n <th>p89</th>\n <th>p90</th>\n <th>p91</th>\n <th>p92</th>\n <th>p93</th>\n <th>p94</th>\n <th>p95</th>\n <th>p96</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>458</th>\n <td>-0.0012</td>\n <td>-0.0012</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0013</td>\n <td>-0.0012</td>\n <td>-0.0013</td>\n <td>...</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0012</td>\n <td>-0.0012</td>\n <td>-0.0012</td>\n <td>-0.0011</td>\n <td>-0.0012</td>\n <td>-0.0011</td>\n <td>-0.0012</td>\n <td>-0.0012</td>\n </tr>\n <tr>\n <th>459</th>\n <td>-0.0012</td>\n <td>-0.0011</td>\n <td>-0.0012</td>\n <td>-0.0012</td>\n <td>-0.0011</td>\n <td>-0.0012</td>\n <td>-0.0012</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>...</td>\n <td>-0.0033</td>\n <td>-0.0036</td>\n <td>-0.0011</td>\n <td>-0.0013</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n </tr>\n <tr>\n <th>460</th>\n <td>-0.0012</td>\n <td>-0.0011</td>\n <td>-0.0012</td>\n <td>-0.0012</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0012</td>\n <td>-0.0011</td>\n <td>...</td>\n <td>-0.0011</td>\n <td>-0.0012</td>\n <td>-0.0012</td>\n <td>-0.0012</td>\n <td>-0.0012</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n </tr>\n <tr>\n <th>461</th>\n <td>-0.0012</td>\n <td>-0.0012</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0012</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0012</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>...</td>\n <td>-0.0011</td>\n <td>-0.0013</td>\n <td>-0.0011</td>\n <td>-0.0012</td>\n <td>-0.0011</td>\n <td>-0.0012</td>\n <td>-0.0012</td>\n <td>-0.0011</td>\n <td>-0.0012</td>\n <td>-0.0012</td>\n </tr>\n <tr>\n <th>462</th>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0012</td>\n <td>-0.0011</td>\n <td>-0.0012</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>...</td>\n <td>-0.0012</td>\n <td>-0.0011</td>\n <td>-0.0012</td>\n <td>-0.0011</td>\n <td>-0.0012</td>\n <td>-0.0012</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n <td>-0.0011</td>\n </tr>\n </tbody>\n</table>\n<p>5 rows × 96 columns</p>\n</div>"
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"use_data[-5:]"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"start_time": "2025-02-09T19:14:48.513486Z",
"end_time": "2025-02-09T19:14:48.531632Z"
}
}
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"ExecuteTime": {
"start_time": "2025-02-09T19:14:57.816980Z",
"end_time": "2025-02-09T19:14:57.827730Z"
}
},
"outputs": [],
"source": [
"# 生成日期范围484天\n",
@ -452,8 +122,13 @@
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"execution_count": 15,
"metadata": {
"ExecuteTime": {
"start_time": "2025-02-09T19:14:59.274699Z",
"end_time": "2025-02-09T19:14:59.284894Z"
}
},
"outputs": [],
"source": [
"# 创建完整的时间索引\n",
@ -462,74 +137,20 @@
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"execution_count": 16,
"metadata": {
"ExecuteTime": {
"start_time": "2025-02-09T19:15:02.587749Z",
"end_time": "2025-02-09T19:15:02.608881Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>index</th>\n",
" <th>0</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2022-01-03 00:00:00</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2022-01-03 01:00:00</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2022-01-03 02:00:00</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2022-01-03 03:00:00</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2022-01-03 04:00:00</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" index 0\n",
"0 2022-01-03 00:00:00 0.0\n",
"1 2022-01-03 01:00:00 0.0\n",
"2 2022-01-03 02:00:00 0.0\n",
"3 2022-01-03 03:00:00 0.0\n",
"4 2022-01-03 04:00:00 0.0"
]
"text/plain": " index 0\n0 2022-01-03 00:00:00 0.0\n1 2022-01-03 01:00:00 0.0\n2 2022-01-03 02:00:00 0.0\n3 2022-01-03 03:00:00 0.0\n4 2022-01-03 04:00:00 0.0",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>index</th>\n <th>0</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>2022-01-03 00:00:00</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>1</th>\n <td>2022-01-03 01:00:00</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>2</th>\n <td>2022-01-03 02:00:00</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>3</th>\n <td>2022-01-03 03:00:00</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>4</th>\n <td>2022-01-03 04:00:00</td>\n <td>0.0</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"execution_count": 30,
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
@ -548,6 +169,31 @@
"hourly_data.head()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"outputs": [
{
"data": {
"text/plain": " index 0\n0 2022-01-03 00:00:00 0.0\n1 2022-01-03 01:00:00 0.0\n2 2022-01-03 02:00:00 0.0\n3 2022-01-03 03:00:00 0.0\n4 2022-01-03 04:00:00 0.0\n... ... ...\n11611 2023-05-01 19:00:00 0.0\n11612 2023-05-01 20:00:00 0.0\n11613 2023-05-01 21:00:00 0.0\n11614 2023-05-01 22:00:00 0.0\n11615 2023-05-01 23:00:00 0.0\n\n[11616 rows x 2 columns]",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>index</th>\n <th>0</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>2022-01-03 00:00:00</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>1</th>\n <td>2022-01-03 01:00:00</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>2</th>\n <td>2022-01-03 02:00:00</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>3</th>\n <td>2022-01-03 03:00:00</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>4</th>\n <td>2022-01-03 04:00:00</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>11611</th>\n <td>2023-05-01 19:00:00</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>11612</th>\n <td>2023-05-01 20:00:00</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>11613</th>\n <td>2023-05-01 21:00:00</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>11614</th>\n <td>2023-05-01 22:00:00</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>11615</th>\n <td>2023-05-01 23:00:00</td>\n <td>0.0</td>\n </tr>\n </tbody>\n</table>\n<p>11616 rows × 2 columns</p>\n</div>"
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"hourly_data"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"start_time": "2025-02-09T19:15:46.762887Z",
"end_time": "2025-02-09T19:15:46.771869Z"
}
}
},
{
"cell_type": "code",
"execution_count": 31,
@ -608,9 +254,23 @@
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"metadata": {
"ExecuteTime": {
"start_time": "2025-02-09T16:59:07.276741Z",
"end_time": "2025-02-09T16:59:07.278428Z"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"outputs": [],
"source": [],
"metadata": {
"collapsed": false
}
}
],
"metadata": {

Binary file not shown.

View File

@ -2,8 +2,8 @@ import joblib
import numpy as np
def load_model(path:str):
gbm = joblib.load('./models/pv_pred.joblib')
def load_model(path):
gbm = joblib.load(path)
return gbm
def pv_forecast(inputs: np.ndarray, model):
@ -17,9 +17,10 @@ def pv_forecast(inputs: np.ndarray, model):
return out
if __name__ == '__main__':
model = load_model('./models/pv_pred.joblib')
inputs = np.random.randn(24)
print(inputs.shape)
out = pv_forecast(inputs, model)
print(out)
# if __name__ == '__main__':
# model = load_model('models/pv_pred.joblib')
# inputs = np.random.randn(24)
#
# print(inputs.shape)
# out = pv_forecast(inputs, model)
# print(out)

View File

@ -49,16 +49,22 @@ def train_model(train_data: pd.DataFrame):
logger.info(fea_cols, out_cols)
X = train_data[fea_cols]
y = train_data[out_cols]
# 8:1:1
train_X,test_X,train_y,test_y = train_test_split(X, y, test_size=0.2, random_state=42)
valid_X,test_X,valid_y,test_y = train_test_split(test_X, test_y, test_size=0.5, random_state=42)
# 参数
other_params = {'learning_rate': 0.1, 'n_estimators': 150, 'max_depth': 10, 'min_child_weight': 1, 'seed': 0, 'subsample': 0.8, 'colsample_bytree': 0.8, 'gamma': 0, 'reg_alpha': 0, 'reg_lambda': 1}
print(train_X.shape, train_y.shape)
print("测试集test_X:",test_X.shape, "测试集test_y:",test_y.shape)
gbm = xgb.XGBRegressor(objective='reg:squarederror',**other_params)
gbm.fit(train_X.values, train_y.values, eval_set=[(valid_X.values, valid_y.values)], early_stopping_rounds=20)
gbm.fit(train_X.values,
train_y.values,
eval_set=[(valid_X.values, valid_y.values)],
early_stopping_rounds=20)
y_pred = gbm.predict(test_X.values)

108
run.py
View File

@ -1,35 +1,103 @@
from flask import request, Flask, jsonify
from pv.pv_inference import load_model, pv_forecast
from carbon.carbon_inference import load_carbon_model,carbon_forecast
from water.water_inference import load_water_model,water_forecast
from load.load_inference import load_load_model,load_forecast
from logzero import logger
import numpy as np
app = Flask(__name__)
gbm_pv = load_model('./pv/models/pv_pred.joblib')
# todo: 写一个flask接口
pv_model_gbm = load_model('./pv/models/pv_pred.joblib')
carbon_model_gbm = load_carbon_model('./carbon/models/carbon_pred.joblib')
water_model_gbm = load_water_model('./water/models/water_pred.joblib')
load_model_gbm = load_load_model('./load/models/load_pred.joblib')
@app.route('/pv', methods=['POST'])
def run_pv_forecast():
"""todo: 需要测试
Returns:
_type_: _description_
"""
data = request.data
if not data or 'inputs' not in data:
return jsonify({"error": "Invalid data"}), 400
else:
# todo: 这里需要写个判断inputs是否合规的逻辑
inputs = data.get('inputs').reshape(1, 24)
try:
data = request.json
if not data or 'inputs' not in data:
return jsonify({"error": "Invalid data"}), 400
inputs = data.get('inputs')
# 转为1维数组
inputs = np.array(inputs)
if inputs.ndim != 1:
inputs = inputs.flatten()
logger.info(f"pv history inputs: {inputs}")
out = pv_forecast(inputs, gbm_pv)
results = {"result": out}
# 调用预测函数
out = pv_forecast(inputs, pv_model_gbm)
# 将 NumPy 数组转换为列表
results = {"result": out.tolist()} # 使用 .tolist() 转换为列表
return jsonify(results), 200
except Exception as e:
logger.error(f"Error in pv_forecast: {e}", exc_info=True)
return jsonify({"error": str(e)}), 500
@app.route('/carbon', methods=['POST'])
def run_carbon_forecast():
"""
todo: 封装其他的预测
"""
pass
try:
data = request.json
if not data or 'inputs' not in data:
return jsonify({"error": "Invalid data"}), 400
inputs = data.get('inputs')
# 转为1维数组
inputs = np.array(inputs)
if inputs.ndim != 1:
inputs = inputs.flatten()
logger.info(f"carbon history inputs: {inputs}")
# 调用预测函数
out = carbon_forecast(inputs, carbon_model_gbm)
# 将 NumPy 数组转换为列表
results = {"result": out.tolist()} # 使用 .tolist() 转换为列表
return jsonify(results), 200
except Exception as e:
logger.error(f"Error in carbon_forecast: {e}", exc_info=True)
return jsonify({"error": str(e)}), 500
@app.route('/water', methods=['POST'])
def run_water_forecast():
try:
data = request.json
if not data or 'inputs' not in data:
return jsonify({"error": "Invalid data"}), 400
inputs = data.get('inputs')
# 转为1维数组
inputs = np.array(inputs)
if inputs.ndim != 1:
inputs = inputs.flatten()
logger.info(f"water history inputs: {inputs}")
# 调用预测函数
out = water_forecast(inputs, water_model_gbm)
# 将 NumPy 数组转换为列表
results = {"result": out.tolist()} # 使用 .tolist() 转换为列表
return jsonify(results), 200
except Exception as e:
logger.error(f"Error in water_forecast: {e}", exc_info=True)
return jsonify({"error": str(e)}), 500
@app.route('/load', methods=['POST'])
def run_load_forecast():
try:
data = request.json
if not data or 'inputs' not in data:
return jsonify({"error": "Invalid data"}), 400
inputs = data.get('inputs')
# 转为1维数组
inputs = np.array(inputs)
if inputs.ndim != 1:
inputs = inputs.flatten()
logger.info(f"load history inputs: {inputs}")
# 调用预测函数
out = load_forecast(inputs, load_model_gbm)
# 将 NumPy 数组转换为列表
results = {"result": out.tolist()} # 使用 .tolist() 转换为列表
return jsonify(results), 200
except Exception as e:
logger.error(f"Error in load_forecast: {e}", exc_info=True)
return jsonify({"error": str(e)}), 500
if __name__=='__main__':
app.run(host='0.0.0.0', port='2467')

21
test.py Normal file
View File

@ -0,0 +1,21 @@
import requests
import pandas as pd
import numpy as np
# 这里使用的是load进行预测可改(load/pv/water/carbon)
url = "http://127.0.0.1:2467/load"
data = {
"inputs":(np.random.randn(24)*100).tolist()
}
response = requests.post(url, json=data)
print("Status Code:", response.status_code) # 打印状态码
print("Response Content:", response.text) # 打印响应内容
if response.status_code == 200:
try:
print(response.json()) # 尝试解析 JSON
except requests.exceptions.JSONDecodeError as e:
print("JSON Decode Error:", e)
else:
print("Error:", response.status_code)

0
water/__init__.py Normal file
View File

File diff suppressed because it is too large Load Diff

Binary file not shown.

25
water/water_inference.py Normal file
View File

@ -0,0 +1,25 @@
import joblib
import numpy as np
def load_water_model(path):
gbm = joblib.load(path)
return gbm
def water_forecast(inputs: np.ndarray, model):
"""_summary_
Args:
inputs (np.ndarray): 输入序列
model (_type_): _description_
"""
out = model.predict([inputs])
return out
if __name__ == '__main__':
model = load_water_model('./models/water_pred.joblib')
inputs = np.random.randn(24)
print(inputs.shape)
out = water_forecast(inputs, model)
print(out)

73
water/water_train.py Normal file
View File

@ -0,0 +1,73 @@
import pandas as pd
import numpy as np
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
import joblib
from logzero import logger
def time_series_to_supervised(data, columns, n_in=24, n_out=1,dropnan=True):
"""
:param data:作为列表或2D NumPy数组的观察序列需要
:param n_in:作为输入的滞后观察数X值可以在[1..len数据]之间可选默认为1
:param n_out:作为输出的观测数量y值可以在[0..len数据]之间可选的默认为1
:param dropnan:Boolean是否删除具有NaN值的行可选的默认为True
:return:
"""
logger.info(f"正在处理训练数据size{data.shape}")
n_vars = 1 if type(data) is list else data.shape[1]
df = pd.DataFrame(data)
origNames = columns
cols, names = list(), list()
cols.append(df.shift(0))
names += [('%s' % origNames[j]) for j in range(n_vars)]
n_in = max(1, n_in)
for i in range(n_in-1, 0, -1):
time = '(t-%d)' % i
cols.append(df.shift(i))
names += [('%s%s' % (origNames[j], time)) for j in range(n_vars)]
n_out = max(n_out, 0)
for i in range(1, n_out+1):
time = '(t+%d)' % i
cols.append(df.shift(-i))
names += [('%s%s' % (origNames[j], time)) for j in range(n_vars)]
agg = pd.concat(cols, axis=1)
agg.columns = names
if dropnan:
agg.dropna(inplace=True)
return agg
def train_model(train_data: pd.DataFrame):
"""训练模型的函数,需要根据模型类型实际调整
Args:
data (pd.DataFrame): 训练集
"""
# 特征和输出列名,需要根据业务场景灵活处理
fea_cols = train_data.columns[:-1].tolist()
out_cols = train_data.columns[-1:].tolist()
logger.info(fea_cols, out_cols)
X = train_data[fea_cols]
y = train_data[out_cols]
train_X,test_X,train_y,test_y = train_test_split(X, y, test_size=0.2, random_state=42)
valid_X,test_X,valid_y,test_y = train_test_split(test_X, test_y, test_size=0.5, random_state=42)
# 参数
other_params = {'learning_rate': 0.1, 'n_estimators': 150, 'max_depth': 10, 'min_child_weight': 1, 'seed': 0, 'subsample': 0.8, 'colsample_bytree': 0.8, 'gamma': 0, 'reg_alpha': 0, 'reg_lambda': 1}
print(train_X.shape, train_y.shape)
gbm = xgb.XGBRegressor(objective='reg:squarederror',**other_params)
gbm.fit(train_X.values, train_y.values, eval_set=[(valid_X.values, valid_y.values)], early_stopping_rounds=20)
y_pred = gbm.predict(test_X.values)
logger.info(f"Root Mean Squared Error on Test set: {np.sqrt(mean_squared_error(test_y, y_pred))}")
logger.info(f"R2 score on Test set: {r2_score(test_y, y_pred)}")
joblib.dump(gbm, './models/water_pred.joblib')
logger.info(f"save_path: ./models/water_pred.joblib")
if __name__ == '__main__':
data = pd.read_csv('./data/preprocessed_example.csv', index_col=0)
agg = time_series_to_supervised(data.values, data.columns, 24, 1)
train_model(agg)