AQI分析与预测

背景信息

AQI(Air Quality Index),指空气质量指数,用来衡量空气清洁或污染的程度。值越小,表示空气质量越好。近年来,因为环境问题,空气质量也越来越受到人们的重视。

任务说明

我期望能够对全国城市空气质量进行研究与分析,希望能够解决如下疑问:

  • 哪些城市的空气质量较好/较差?
  • 临海城市是否空气质量优于内陆城市?
  • 空气质量主要受哪些因素影响?
  • 全国城市的空气质量总体情况如何?
  • 是否可以预测城市的空气质量?
  • 是否可以预测城市是否临海?

数据集描述

2015年全国空气质量指数数据集。该数据集包含全国主要城市的相关数据以及空气质量指数。

数据清洗

对原始数据进行缺失值、异常值、重复值的处理。

哪些城市的空气质量较好/较差?

空气质量的好坏可以为我们以后选择工作,旅游等地提供参考。

          

2015年空气质量最好的五个城市为韶关市、南平市、梅州市、基隆市、三明市,

2015年空气质量最差的五个城市为北京市、朝阳市、保定市、锦州市、焦作市。

临海城市是否空气质量优于内陆城市?

首先来统计下临海城市与内陆城市的数量,然后来观察一下临海城市与内陆城市的散点分布,再来分组计算空气质量的均值。

               

柱形图仅能进行均值对比,可以使用箱线图来显示更多的信息,也可以绘制小提琴图,除了能够展示箱线图的信息外,还能呈现出分布的密度。

          

可以看出,临海城市的空气质量整体上好于内陆城市。

空气质量主要受哪些因素影响?

从结果中可知,空气质量指数主要受降雨量(-0.40)与纬度(0.55)影响。

降雨量越多,空气质量越好;纬度越低,空气质量越好。

查看全国城市的空气质量总体情况

绘制全国各城市的空气质量指数的散点图。

从结果可以发现,从大致的地理位置上看,西部城市好于东部城市,南部城市好于北部城市。

关于空气质量的假设检验

江湖传闻,全国所有城市的空气质量指数均值在71左右,可靠吗?

运用t检验进行判断,这里通过scipy提供的相关方法来进行t检验的计算。

In: from scipy import stats

    stats.ttest_1samp(data["AQI"], 71)

Out: Ttest_1sampResult(statistic=1.8117630617496872, pvalue=0.07095431526986647)

可以看到,偏离均值不足1.96倍的标准差,P值大于5%,我们无法拒绝原假设。因此,江湖传闻还是有一定依据的。 

对空气质量指数进行预测

对于某城市,如果我们已知降雨量,温度,经纬度等指标,是否能够预测该城市的空气质量指数呢?

可以通过对以往的数据,建立线性回归的算法,应用于未知的数据,进而预测结果。

In: from sklearn.linear_model import LinearRegression
    from sklearn.model_selection import train_test_split

    X = data.drop(["City","AQI"], axis=1)
    y = data["AQI"]
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25,     random_state=0)
    lr = LinearRegression()
    lr.fit(X_train, y_train)
    display(lr.coef_)
    display(lr.intercept_)
    display(lr.score(X_train, y_train))
    display(lr.score(X_test, y_test))

Out: array([-1.48532488e-02,  1.71080407e-03,  2.86391533e+00, -2.31034144e+00,
        5.28484647e+00, -2.34234723e-02, -2.73893202e-04, -2.48823129e+00,
       -5.79124501e-01,  3.32021411e-02])
    169.0803390043298
    0.46833945311548286
    0.307483089404762

 

对是否临海进行预测

对于某城市,假设是否临海未知,但知道其他信息,我们试图使用其他信息,来预测该城市是否临海。

这里使用逻辑回归的算法进行分类预测。

In: from sklearn.linear_model import LogisticRegression

    X = data.drop(["City","Coastal"], axis=1)
    y = data["Coastal"]
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
    lr = LogisticRegression(C=0.0001)
    lr.fit(X_train, y_train)
    display(lr.coef_)
    display(lr.intercept_)
    display(lr.score(X_train, y_train))
    display(lr.score(X_test, y_test))

Out: array([[-0.01099238, -0.00064977, -0.00011361,  0.00423962,  0.01522801,
         0.00077293, -0.02448935, -0.00021761,  0.01192953,  0.00619237]])
    array([8.55223462e-05])
    0.871900826446281
    0.8148148148148148

 

总结

  1. 临海城市的空气质量整体上好于内陆城市。
  2. 降雨量与纬度对空气质量指数的影响较大。
  3. 空气质量总体分布上来说,南部城市优于北部城市,西部城市优于东部城市。
  4. 通过历史数据,我们可以对空气质量指数进行预测。
  5. 通过历史数据,我们可以对城市是否临海进行预测。

猜你喜欢

转载自blog.csdn.net/Kyrie_tim/article/details/92834032