#第十届泰迪杯B题电力负荷预测源代码及可视化数据图
包括全部问题的代码,现在的数据分析是根据官网暂时发布的数据进行的分析,后续会继续更新代码!
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('darkgrid')
import pandas as pd
#-*-coding:utf-8-*-
#文件名: ch.py
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
label = pd.read_csv('附件1-区域15分钟负荷数据.csv')
industry = pd.read_csv('附件2-行业日负荷数据.csv')
weather = pd.read_csv('附件3-气象数据.csv')
label = label.rename(columns={'数据时间':'日期1'})
label['日期'] = label['日期1'].apply(lambda x: x.split(' ')[0])
weather.loc[:, '日期'] = pd.to_datetime(weather.loc[:, '日期'], format='%Y年%m月%d日', errors='coerce')
label.loc[:, '日期'] = pd.to_datetime(label.loc[:, '日期'], format='%Y/%m/%d', errors='coerce')
# weather['日期']=weather['日期'].astype('datetime64[ns]')
def make_weather_fetures(data_df):
weather['start_weather'] = weather['天气状况'].apply(lambda x: x.split('/')[0])
weather['end_weather'] = weather['天气状况'].apply(lambda x: x.split('/')[1])
weather['最高温度'] = weather['最高温度'].map(lambda d: d.replace('℃','')).astype(int)
weather['最低温度'] = weather['最低温度'].map(lambda d: d.replace('℃','')).astype(int)
#label encoding
le1 = LabelEncoder()
le1.fit(weather['夜晚风力风向'])
weather['白天风力风向'] = le1.transform(weather['白天风力风向'])
weather['夜晚风力风向'] = le1.transform(weather['夜晚风力风向'])
le2 = LabelEncoder()
le2.fit(pd.concat([weather['start_weather'],weather['end_weather']]))
weather['start_weather'] = le2.transform(weather['start_weather'])
weather['end_weather'] = le2.transform(weather['end_weather'])
return data_df.drop(['天气状况','Unnamed: 6'],axis=1)
weather = make_weather_fetures(weather)
train = label.merge(weather,on='日期',how='left')
def make_time_fetures(data_df):
data_df['日期1']=data_df['日期'].astype('datetime64[ns]')
data_df['year']= data_df['日期1'].dt.year
data_df['month']= data_df['日期1'].dt.month
data_df['qua']= data_df['日期1'].dt.quarter
data_df['day'] = data_df['日期1'].dt.day
data_df['hour'] = data_df['日期1'].dt.hour
data_df['weekday'] = data_df['日期1'].dt.weekday
data_df=pd.get_dummies(data_df,columns=['weekday'])
return data_df.drop(['日期1','日期'],axis=1)
train = make_time_fetures(train)
train.to_csv('洗好的数据.csv',index=0)
train1= pd.read_csv('洗好的数据.csv')
train1
下载链接最新的AotoTS预测模型,其精度和拟合程度都比LSTM和ARIMA的要高,预测结果更加准确,文件里面详细写明了调参方式