赞
踩
数据集(PJME_hourly.csv,PJMW_hourly.csv),可以在Kaggle官网下载。这里列出几个基本的任务。
任务:
-
- """
- 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()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。