AQI分析与预测

2024-01-07 21:46:18

背景信息

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

任务说明

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

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

数据集描述

我们现在获取了2015年空气质量指数集。该数据集包含全国主要城市的相关数据以及空气质量指数。

列名 含义
City 城市名
AQI 空气质量指数
Precipitation 降雨量
GDP 城市生产总值
Temperature 温度
Longitude 经度
Latitude 纬度
Altitude 海拔高度
PopulationDensity 人口密度
Coastal 是否沿海
GreenCoverageRate 绿化覆盖率
Incineration(10,000ton) 焚烧量(10000吨)

下载数据集 CompletedDataset.csv,
链接:https://pan.baidu.com/s/1liv0ew268cy4JMutdAgpFQ?pwd=ssmi
提取码:ssmi

导入相关的库

导入需要的库,同时,进行一些初始化的设置。

import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import warnings
import seaborn as sns
sns.set(style="darkgrid", font="SimHei", rc={
   "axes.unicode_minus":False})
warnings.filterwarnings("ignore")

加载数据集

加载相关的数据集。
可以使用head / tail / sample查看数据的大致情况。

data = pd.read_csv("CompletedDataset.csv")
print(data.shape)
data.head()

请添加图片描述

数据清洗

缺失值处理

data.info()
# data.isnull().sum(axis=0)

请添加图片描述

异常值处理

data.describe()

请添加图片描述

sns.boxplot(data=data['Precipitation'])

请添加图片描述

重复值处理

  • 使用duplicate检查重复值。可配合keep参数进行调整。
  • 使用drop_duplicate删除重复值
data.duplicated().sum()

0

空气质量最好 / 最差的5个城市。

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

最好的5个城市
t = data[["City", "AQI"]].sort_values("AQI")
display(t.iloc[:5])
sns.barplot(x="City", y="AQI", data=t.iloc[:5])

请添加图片描述
请添加图片描述

我们发现,空气质量最好的5个城市为:
1.韶关市
2.南平市
3.梅州市
4.基隆市
5.三明市

最差的5个城市
display(t.iloc[-5:])
sns.barplot(x="City", y="AQI", data=t.iloc[-5:])

请添加图片描述
我们得出空气质量最差的5个城市为:
1.北京市
2.朝阳市
3.保定市
4.锦州市
5.焦作市

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

我们首先来统计下临海城市与内陆城市的数量。

display(data["Coastal"].value_counts())
sns.countplot(x="Coastal", data=data)

请添加图片描述
然后,我们来观察一下临海城市与内陆城市的散点分布。

sns.swarmplot(x="Coastal", y="AQI", data=data)

请添加图片描述
然后,我们再来分组计算空气质量的均值。

display(data.groupby("Coastal")["AQI"].mean())
sns.barplot(x="Coastal", y="AQI", data=data)

请添加图片描述
柱形图仅能进行均值对比,我们可以使用箱线图来显示更多的信息。

sns.boxplot(x="Coastal", y="AQI", data=data)

请添加图片描述
我们也可以绘制小提琴图,除了能够展示箱线图的信息外,还能呈现出分布的密度。

sns.violinplot(x="Coastal", y="AQI", data=data)

请添加图片描述
我们可以将散点与箱线图或小提琴图结合在一起进行绘制,下面以小提琴图为例。

sns.violinplot(x="Coastal", y="AQI", data=data, inner=None)
sns.swarmplot(x="Coastal", y="AQI", data=data, color="g")

请添加图片描述

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

相关系数
# data.corr()
plt.figure(figsize=(10,10))
sns.heatmap(data.corr(), cmap=plt.cm.RdYlGn, annot=True, fmt=".2f")

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

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

此外,我们还能够发现其他一些明显的细节:

  • GDP(城市生产总值)与Incineration(焚烧量)正相关(0.90)。
  • Temperature(温度)与Precipitation(降雨量)正相关(0.69)。
  • Temperature(温度)与Latitude(纬度)负相关(-0.81)。
  • Longitude(经度)与Altitude(海拔)负相关(-0.74)。
  • Latitude(纬度)与Precipitation(降雨量)负相关(-0.66)。
  • Temperature(温度)与Altitude(海拔)负相关(-0.46)。
  • Altitude(海拔)与Precipitation(降雨量)负相关(-0.32)。
绘制全国城市的空气质量。

我们来绘制一下全国各城市的空气质量指数。

sns.scatterplot(x="Longitude", y="Latitude", hue="AQI", palette=plt.cm.RdYlGn_r, data=data)

请添加图片描述
从结果我们可以发现,从大致的地理位置上看,西部城市好于东部城市,南部城市好于北部城市。

关于空气质量的假设检验

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

问题下的探索

城市平均空气质量指数,我们可以很容易的进行计算

data["AQI"].mean()

75.3343653250774
首先,我们要清楚,江湖传闻的,是全国所有城市的平均空气质量指数,而我们统计的,只是所有城市中的一部分抽样而已。因此,我们一次抽样统计的均值,并不能代表总体(所有城市)的均值。
要弄清江湖传闻是否可靠,最直接有效的方式,就是将全国所有的城市的空气质量指数都测量一下,然后进行求均值。然而,这是非常繁重且不现实的任务。因此,可行的方案是,我们从全国所有城市中进行抽样,使用抽样的均值来估计总体的均值

总体与样本的分布

在数学上,我们有如下的定理:
如果总体(分布不重要)均值为 μ \mu μ,方差为 σ 2 \sigma^2 σ2,则样本均值服从正态分布: X ˉ \bar{X} Xˉ ~ N ( μ , σ 2 / n ) N(\mu, \sigma^2 / n) N(μ,σ

文章来源:https://blog.csdn.net/RainTicking/article/details/135433209
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。