数据集(PJME_hourly.csv,PJMW_hourly.csv),可以在Kaggle官网下载。这里列出几个基本的任务。
任务:
- 读取数据,创建以时间列为索引的时间序列,截取2014年数据进行分析
- 时间序列数据清理:删除重复值,按时间排序
- 时间序列可视化:输出折线图、相关分析、时间序列重采样并绘图
""" Created on Sat Dec 11 15:24:31 2021 @author: Zitong Hu """ import seaborn as sns import pandas as pd import matplotlib.pyplot as plt import datetime pjme_file = pd.read_csv('PJME_hourly.csv') pjmw_file = pd.read_csv('PJMW_hourly.csv') # 读取数据 # TODO df_1=pjme_file df_2=pjmw_file print('raw data:') print(df_1.head()) print(df_2.head()) print('*'*40) # 通过to_datetime 将时间列字符串转换为pandas的Timestamp格式,格式为:2014-11-02 02:00:00 # TODO df_1["Datetime"]=pd.to_datetime(df_1.Datetime) df_2["Datetime"]=pd.to_datetime(df_2.Datetime) # 对时间列进行统计 print(df_1.head()) print('df1:') print(df_1['Datetime'].describe()) print('\ndf2:') print(df_2['Datetime'].describe()) print('*'*40) # # TODO:将时间列作为行索引 df_1=df_1.set_index("Datetime") df_2=df_2.set_index("Datetime") # # 第一行的时间并不等于上面的开始时间,这说明样本并不是按照时间顺序严格排序的 # # 时间序列数据清理: # # 1. 出现重复的时间戳及样本需要移除 # # 2. 样本排序混乱 # # 选取2014年的数据 df_1 = df_1.loc["2014"] df_2 = df_2.loc["2014"] #print(df_1.head()) #print(df_2.head()) # # TODO:删除重复时间的条目,按时间升序排序 df_1=df_1.drop_duplicates() df_1=df_1.sort_values(by='Datetime') #print(df_1.head()) df_2=df_2.drop_duplicates() df_2=df_2.sort_values(by='Datetime') #print(df_2.head()) # # 时间序列可视化 fig,ax = plt.subplots(2,1) df_1['2014-12'].plot(ax=ax[0]) df_2['2014-12'].plot(ax=ax[1]) plt.show() plt.figure() # # TODO:对多元的时间序列进行相关分析,用seaborn可视化(散点图) df_3=pd.merge(df_1, df_2,on='Datetime') sns.regplot(x='PJME_MW',y='PJMW_MW',data=df_3) plt.show() # TODO:时间序列重采样,聚合操作为平均(mean) day_df = df_1.resample('D').mean() week_df = df_1.resample("w").mean() month_df = df_1.resample("m").mean() quarter_df = df_1.resample("Q").mean() fig,ax = plt.subplots(4,1, figsize=(6,8)) day_df.plot(ax=ax[0]) week_df.plot(ax=ax[1]) month_df.plot(ax=ax[2]) quarter_df.plot(ax=ax[3]) plt.show()