这是我之前工作做的一个项目
import os
import pandas as pd
import numpy
path = "E:/工作/负荷预测/历史负荷数据-每天" #文件夹目录
files= os.listdir(path) #得到文件夹下的所有文件名称
data_history = pd.DataFrame()
for file in files: #遍历文件夹
if not os.path.isdir(file): #判断是否是文件夹,不是文件夹才打开
f = open(path+"/"+file)
try:
df = pd.read_csv(f)
except UnicodeDecodeError:
print(path+"/"+file)
data_history = pd.concat([data_history,df],ignore_index=True)
data_history = data_history.sort_values(by=['bs','time'])
import sys
import warnings
from pandas.plotting import register_matplotlib_converters
import numpy as np
from datetime import datetime,timedelta
from statsmodels.tsa.arima_model import ARIMA
from statsmodels.tsa.arima_model import ARMA
import statsmodels.api as sm
from sklearn.metrics import mean_squared_error
import matplotlib.pylab as plt
import seaborn as sea
%matplotlib inline
from matplotlib.pylab import rcParams
#绘制图像的背景长高
rcParams['figure.figsize'] = 50,22
#用来正常显示中文标签
rcParams['font.sans-serif']=['SimHei']
#用来正常显示负号
rcParams['axes.unicode_minus'] = False
#所有警告只出现一次,避免警告占用太多输出页面,在进行循环时这项设置尤其有用
warnings.filterwarnings(action='once')
data_history = data_history.pivot(index='bs',columns='time',values='value')
#很多台区在2017-08-14之前都存在负荷空值,要把这些时间段去掉
data_history = data_history.iloc[:,41:]
#将索引变为列,方便之后格式转换
data_time_series.index.names=['time_series']
data_time_series=data_time_series.reset_index()
data_time_series.head()
#将含有时序数据的字段转化为datetime64格式
# dateparse = lambda dates: pd.datetime.strptime(dates, '%Y-%m-%d')
# dateparse('2017/08/01')
#data_time_series['time_series'] = data_time_series['time_series'].apply(dateparse)
date_index = pd.date_range('14/8/2017', '29/8/2019',freq='D')
#检验我们截取的历史负荷的这个时间段是否有遗漏的日期
print(date_index[~date_index.isin(data_time_series['time_series'])])
#将日期索引用datetime64格式的日期代替(python的日期格式我也不太懂,但是用这种格式的日期没