接上篇python开发:空气质量历史数据分析(一),从数据中读取小时数据后,按照每天的AQI 24小时数据(缺失数据置为空)求每天的AQI均值,按月统计AQI的每天变化情况。
根据月份计算天数,python中提供了现有的函数,根据年份和月份计算每月的天数,导入calendar库,使用其中的monthrange,计算每月有几天,返回的结果是一个元组,第一个为此月第一天是星期几,第一个参数就是当月的天数。
import calendar
def MonthDay(_year, _month):
return (calendar.monthrange(_year, _month))[1]
循环月份中的每一天,读取每个小时中的数据,使用timedelta加上天数,新建空的DataFrame,存储整个月份的数据,循环过程中,将每天的数据添加到月数据的df中,直接使用mean()函数计算每天的小时平均值,为了不漏掉每天的数据,将没有数据的天数,也加上空数据。
for idx in range(daycount):
nowdate = startDate + timedelta(days=idx)
monthdata = pd.DataFrame(columns=["datetime", "type", "AQI", 'level'])
monthdata = monthdata.append(
{'datetime': nowdate, 'type': 'AQI', 'AQI': daydata['AQI'].mean()},
ignore_index=True)
monthdata = monthdata.append(
{'datetime': nowdate, 'type': 'AQI', 'AQI': np.nan},
ignore_index=True)
每天的AQI数据值:
参照上一篇,可以按月根据每天变化,绘制折线图,使用下边代码,可以自动旋转日期,让显示效果更好。
plt.gcf().autofmt_xdate()