因为使用之前使用Python获取全国375个城市的空气质量监测数据介绍的爬取方法只能获取最新时刻的数据。
此文的历史数据使用网友分享的中国空气质量历年数据,解压后数据如下所示:
此次使用城市_20180101-20181231.zip
数据,进而分析大家比较关注的PM2.5的数据。
2.计算各城市每天PM2.5的平均值:
代码如下:
import os
import pandas as pd
# 计算每天PM2.5的平均值
for file in os.listdir('./城市_20180101-20181231'):
# 指定engine为Python可以解决中文路径报错问题
data = pd.read_csv(os.path.join('./城市_20180101-20181231',file),engine='python', encoding='utf-8')
df = data[data['type'] == 'PM2.5']
del df['hour']
del df['type']
df.set_index('date',inplace=True)
# 计算平均值
df_mean = df.mean()
df_pm25 = pd.DataFrame(df_mean,columns=[file.split('.')[0][-8:]])
# 保存为csv文件
df_pm25.to_csv('./results/{}.csv'.format(file.split('.')[0][-8:]))
数据结果如下:
3.计算每个城市全年的PM2.5日平均值:
代码如下:
import os
import pandas as pd
def Allfile():
for file in os.listdir('./城市_20180101-20181231'):
# 指定engine为Python可以解决中文路径报错问题
data = pd.read_csv(os.path.join('./城市_20180101-20181231', file), engine='python', encoding='utf-8')
df = data[data['type'] == 'PM2.5']
del df['hour']
del df['type']
df.set_index('date', inplace=True)
# 计算平均值
df_mean = df.mean()
yield pd.DataFrame(df_mean, columns=[file.split('.')[0][-8:]])
df_all = pd.concat(Allfile(),axis=1)
# 保存为csv文件
df_all.to_csv('./PM25.csv', encoding='utf-8')
数据结果如下:
4.计算每个城市的超标天数及月数:
超标天数及月数判定标准采用《环境空气质量标准(GB3095-2012)》中的数据:
代码如下:
import pandas as pd
df = pd.read_csv('./PM25.csv',encoding='gb18030')
df.dropna(inplace=True)
df.set_index('城市',inplace=True)
# print(df)
# 计算每个城市一年中大于75的天数
df.gt(75).sum(axis=1)
df_pm25 = pd.DataFrame(df.gt(75).sum(axis=1),columns=['超标天数'])
# 按每个月30天计算,求得每个城市超标的月数
df_pm25['超标月数'] = df_pm25['超标天数'] / 30.0
# 保存为csv文件
df_pm25.to_csv('./PM25超标统计.csv', encoding='utf-8')
数据结果如下:
5.进一步分析:
可以将得到的数据关联上位置信息(例如坐标值),从而可以在ArcGIS中做进一步分析。