当前位置:   article > 正文

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

pjmw

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

任务:

  1. 读取数据,创建以时间列为索引的时间序列,截取2014年数据进行分析
  2. 时间序列数据清理:删除重复值,按时间排序
  3. 时间序列可视化:输出折线图、相关分析、时间序列重采样并绘图
    1. """
    2. Created on Sat Dec 11 15:24:31 2021
    3. @author: Zitong Hu
    4. """
    5. import seaborn as sns
    6. import pandas as pd
    7. import matplotlib.pyplot as plt
    8. import datetime
    9. pjme_file = pd.read_csv('PJME_hourly.csv')
    10. pjmw_file = pd.read_csv('PJMW_hourly.csv')
    11. # 读取数据
    12. # TODO
    13. df_1=pjme_file
    14. df_2=pjmw_file
    15. print('raw data:')
    16. print(df_1.head())
    17. print(df_2.head())
    18. print('*'*40)
    19. # 通过to_datetime 将时间列字符串转换为pandas的Timestamp格式,格式为:2014-11-02 02:00:00
    20. # TODO
    21. df_1["Datetime"]=pd.to_datetime(df_1.Datetime)
    22. df_2["Datetime"]=pd.to_datetime(df_2.Datetime)
    23. # 对时间列进行统计
    24. print(df_1.head())
    25. print('df1:')
    26. print(df_1['Datetime'].describe())
    27. print('\ndf2:')
    28. print(df_2['Datetime'].describe())
    29. print('*'*40)
    30. # # TODO:将时间列作为行索引
    31. df_1=df_1.set_index("Datetime")
    32. df_2=df_2.set_index("Datetime")
    33. # # 第一行的时间并不等于上面的开始时间,这说明样本并不是按照时间顺序严格排序的
    34. # # 时间序列数据清理:
    35. # # 1. 出现重复的时间戳及样本需要移除
    36. # # 2. 样本排序混乱
    37. # # 选取2014年的数据
    38. df_1 = df_1.loc["2014"]
    39. df_2 = df_2.loc["2014"]
    40. #print(df_1.head())
    41. #print(df_2.head())
    42. # # TODO:删除重复时间的条目,按时间升序排序
    43. df_1=df_1.drop_duplicates()
    44. df_1=df_1.sort_values(by='Datetime')
    45. #print(df_1.head())
    46. df_2=df_2.drop_duplicates()
    47. df_2=df_2.sort_values(by='Datetime')
    48. #print(df_2.head())
    49. # # 时间序列可视化
    50. fig,ax = plt.subplots(2,1)
    51. df_1['2014-12'].plot(ax=ax[0])
    52. df_2['2014-12'].plot(ax=ax[1])
    53. plt.show()
    54. plt.figure()
    55. # # TODO:对多元的时间序列进行相关分析,用seaborn可视化(散点图)
    56. df_3=pd.merge(df_1, df_2,on='Datetime')
    57. sns.regplot(x='PJME_MW',y='PJMW_MW',data=df_3)
    58. plt.show()
    59. # TODO:时间序列重采样,聚合操作为平均(mean)
    60. day_df = df_1.resample('D').mean()
    61. week_df = df_1.resample("w").mean()
    62. month_df = df_1.resample("m").mean()
    63. quarter_df = df_1.resample("Q").mean()
    64. fig,ax = plt.subplots(4,1, figsize=(6,8))
    65. day_df.plot(ax=ax[0])
    66. week_df.plot(ax=ax[1])
    67. month_df.plot(ax=ax[2])
    68. quarter_df.plot(ax=ax[3])
    69. plt.show()

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/896886
推荐阅读
相关标签
  

闽ICP备14008679号