• pandas可视化PM2.5的一个小例子


    首先导入数据,并且查看数据的样式

    1 import pandas as pd
    2 import matplotlib.pyplot as plt
    3 file_path = './PM2.5/BeijingPM20100101_20151231.csv'
    4 
    5 df = pd.read_csv(file_path)
    6 print(df.head())

     现在,要以PM_US Post和PM_Dongsi这两列为Y轴,时间X轴来画折线图。

    这里可以发现几个问题,首先;时间中年月日小时是分开的,需要将其合并为2010-01-01 05:00这样可读的pandas类型。第二:PM_US Post这一列有NaN值,需要处理掉。

    解决方法:针对第一个问题,可以使用pd.PeriodIndex()方法(效果如下图)。针对第二个问题,可以选择删除NAN的数据,因为空数据不多。

    1 #把分开的时间字符串通过PeriodIndex方法转换为pands的时间类型
    2 period = pd.PeriodIndex(year=df['year'], month=df['month'],day=df['day'],hour=df['hour'],freq='H')
    3 print(period)

     全部代码:

     1 import pandas as pd
     2 import matplotlib.pyplot as plt
     3 file_path = './PM2.5/BeijingPM20100101_20151231.csv'
     4 
     5 df = pd.read_csv(file_path)
     6 #把分开的时间字符串通过PeriodIndex方法转换为pands的时间类型
     7 period = pd.PeriodIndex(year=df['year'], month=df['month'],day=df['day'],hour=df['hour'],freq='H')
     8 
     9 #将整合的时间添加到数据中去
    10 df['datetime'] = period
    11 
    12 #将datetime设置为索引,原地修改
    13 df.set_index('datetime', inplace=True)
    14 
    15 #由于数据量太多,画图时不美观,所以以一周进行降采样(取平均值)
    16 df = df.resample('7D').mean()
    17 
    18 #处理q缺失数据 (PM_US POST列),删除
    19 data = df['PM_US Post']  #删除应该是data = df['PM_US Post'].dropna() ,d但这里不删除,因为PM_Dongsi 这列数据缺失有点多。
    20 
    21 
    22 #画图
    23 _x = data.index
    24 #重新格式化日期显示格式
    25 _x = [i.strftime('%Y-%m-%d') for i in _x]
    26 _y = data.values
    27 
    28 _x_china = [i.strftime('%Y-%m-%d') for i in data_china.index]
    29 _y_china = data_china.values
    30 
    31 
    32 plt.figure(figsize = (20,8))
    33 plt.plot(range(len(_x)), _y, label='US_POST_PM2.5')
    34 plt.plot(range(len(_x)), _y_china, label = 'China_POST_PM2.5')
    35 
    36 plt.xticks(range(0,len(_x),10),list( _x)[::10],rotation = 45)
    37 
    38 plt.legend()
    39 plt.show()

    --------------------成功,肯定是需要一点一滴积累的--------------------
  • 相关阅读:
    apiCode/1/1.1/1.1.1
    ZOJ 3195 Design the city LCA转RMQ
    IOS学习之路十二(UITableView下拉刷新页面)
    ASP.NET 缓存技术分析
    电信支撑系统
    android提权
    awk
    linux高效shell命令总结
    C关键字typedef及argc,argv,env参数含义
    2013年6月编程语言排行榜,C语言位据第一位
  • 原文地址:https://www.cnblogs.com/GouQ/p/12641927.html
Copyright © 2020-2023  润新知