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'])
data.duplicated().sum()
0
空气质量的好坏可以为我们以后选择工作,旅游等地提供参考。
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.三明市
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)影响。
此外,我们还能够发现其他一些明显的细节:
我们来绘制一下全国各城市的空气质量指数。
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(μ,σ