Python_时间序列处理及可视化_美国能源消耗数据集分析

数据集(PJME_hourly.csvPJMW_hourly.csv),可以在Kaggle官网下载。这里列出几个基本的任务。

任务:

  1. 读取数据,创建以时间列为索引的时间序列,截取2014年数据进行分析
  2. 时间序列数据清理:删除重复值,按时间排序
  3. 时间序列可视化:输出折线图、相关分析、时间序列重采样并绘图
    
    """
    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()
    

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值