本文是主要对某地2017年环境空气质量整体状况进行评价、分析。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from datetime import datetime
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
%matplotlib inline
plt.style.use("ggplot")
path="air_quality_2016_2017.csv"
data=pd.read_csv(path)
#将DateTime列转为日期格式
data['DateTime']=pd.to_datetime(data['DateTime'])
#将DateTime列设为索引
data=data.set_index('DateTime')
data.head()
SO2 | NO2 | CO | O38 | PM10 | PM2.5 | |
---|---|---|---|---|---|---|
DateTime | ||||||
2017-01-01 | 11.25 | 76.50 | 1.05825 | 96.25 | 92.50 | 54.00 |
2017-01-02 | 16.50 | 114.50 | 1.29700 | 157.00 | 132.25 | 72.00 |
2017-01-03 | 13.00 | 125.25 | 1.32525 | 80.25 | 129.50 | 85.25 |
2017-01-04 | 10.50 | 84.50 | 0.88750 | 106.00 | 90.75 | 46.75 |
2017-01-05 | 14.00 | 136.75 | 1.14225 | 101.25 | 153.75 | 81.50 |
#将2016年和2017年数据分开
data_2016=data['2016']
data_2017=data['2017']
1 总体情况
1.1 定义评价用函数
#AQI计算相关函数
def iaqi_SO2(a):
'''计算SO2的分指数'''
iaqi=0
#iaqi分段
n=[0,50,100,150,200,300,400,500]
#24小时平均值分段
c=[0,50,150,475,800,1600,2100,2620]
if a>=c[0] and a<=c[1]:
iaqi=n[0]+(a-c[0])*(n[1]-n[0])/(c[1]-c[0])
return iaqi
elif a>=c[1] and a<=c[2]:
iaqi=n[1]+(a-c[1])*(n[2]-n[1])/(c[2]-c[1])
return iaqi
elif a>=c[2] and a<=c[3]:
iaqi=n[2]+(a-c[2])*(n[3]-n[2])/(c[3]-c[2])
return iaqi
elif a>=c[3] and a<=c[4]:
iaqi=n[3]+(a-c[3])*(n[4]-n[3])/(c[4]-c[3])
return iaqi
elif a>=c[4] and a<=c[5]:
iaqi=n[4]+(a-c[4])*(n[5]-n[4])/(c[5]-c[4])
return iaqi
elif a>=c[5] and a<=c[6]:
iaqi=n[5]+(a-c[5])*(n[6]-n[5])/(c[6]-c[5])
return iaqi
elif a>=c[6] and a<=c[7]:
iaqi=n[6]+(a-c[6])*(n[7]-n[6])/(c[7]-c[6])
return iaqi
def iaqi_NO2(a):
'''计算NO2的分指数'''
iaqi=0
#iaqi分段
n=[0,50,100,150,200,300,400,500]
#24小时平均值分段
c=[0,40,80,180,280,565,750,940]
if a>=c[0] and a<=c[1]:
iaqi=n[0]+(a-c[0])*(n[1]-n[0])/(c[1]-c[0])
return iaqi
elif a>=c[1] and a<=c[2]:
iaqi=n[1]+(a-c[1])*(n[2]-n[1])/(c[2]-c[1])
return iaqi
elif a>=c[2] and a<=c[3]:
iaqi=n[2]+(a-c[2])*(n[3]-n[2])/(c[3]-c[2])
return iaqi
elif a>=c[3] and a<=c[4]:
iaqi=n[3]+(a-c[3])*(n[4]-n[3])/(c[4]-c[3])
return iaqi
elif a>=c[4] and a<=c[5]:
iaqi=n[4]+(a-c[4])*(n[5]-n[4])/(c[5]-c[4])
return iaqi
elif a>=c[5] and a<=c[6]:
iaqi=n[5]+(a-c[5])*(n[6]-n[5])/(c[6]-c[5])
return iaqi
elif a>=c[6] and a<=c[7]:
iaqi=n[6]+(a-c[6])*(n[7]-n[6])/(c[7]-c[6])
def iaqi_PM10(a):
'''计算PM10的分指数'''
iaqi=0
#iaqi分段
n=[0,50,100,150,200,300,400,500]
#24小时平均值分段
c=[0,50,150,250,350,420,500,600]
if a>=c[0] and a<=c[1]:
iaqi=n[0]+(a-c[0])*(n[1]-