114 11 个案例掌握 Python 数据可视化--美国气候研究

Python016

114 11 个案例掌握 Python 数据可视化--美国气候研究,第1张

自哥本哈根气候会议之后,全球日益关注气候变化和温室效应等问题,并于会后建立了全球碳交易市场,分阶段分批次减碳。本实验获取了美国 1979 - 2011 年间 NASA 等机构对美国各地日均最高气温、降雨量等数据,研究及可视化了气候相关指标的变化规律及相互关系。

输入并执行魔法命令 %matplotlib inline, 并去除图例边框。

数据集介绍:

本数据集特征包括美国 49 个州(State),各州所在的地区(Region),统计年(Year),统计月(Month),平均光照(Avg Daily Sunlight),日均最大空气温度(Avg Daily Max Air Temperature ),日均最大热指数(Avg Daily Max Heat Index ),日均降雨量(Avg Daily Precipitation ),日均地表温度(Avg Day Land Surface Temperature)。

各特征的年度区间为:

导入数据并查看前 5 行。

筛选美国各大区域的主要气候指数,通过 sns.distplot 接口绘制指数的分布图。

从运行结果可知:

光照能量密度(Sunlight),美国全境各地区分布趋势大致相同,均存在较为明显的两个峰(强光照和弱光照)。这是因为非赤道国家受地球公转影响,四季光照强度会呈现出一定的周期变化规律;

从地理区位能看出,东北部光照低谷明显低于其他三个区域;

日均最高空气温度(Max Air Temperature),美国全境各地区表现出较大差异,东北部和中西部趋势大致相同,气温平缓期较长,且包含一个显著的尖峰;西部地区平缓期最长,全年最高温均相对稳定;南部分布则相对更为集中;

日均地表温度(Land Surface Temperature),与最高空气温度类似,不同之处在于其低温区分布更少;

最大热指数(Max Heat Index),西部与中西部分布较为一致,偏温和性温度,东北部热指数偏高,南部偏低;

降雨量(Precipitation),西部明显偏小,南部与东北部大致相同,中西部相对较多。

结合地理知识做一个总结:

东北部及大多数中西部地区,属于温带大陆性气候,四季分明,夏季闷热,降雨较多。

西部属于温带地中海气候,全年气候温和,并且干燥少雨,夏季气候温和,最高温度相对稳定。

南部沿海一带,终年气候温暖,夏季炎热,雨水充沛。

按月计算美国各地区降雨量均值及标准偏差,以均值 ± 一倍标准偏差绘制各地区降雨量误差线图。

从运行结果可知:

在大多数夏季月份,西部地区降雨量远小于其他地区;

西部地区冬季月降雨量高于夏季月;

中西部地区是较为典型的温带大陆性气候,秋冬降雨逐渐减少,春夏降雨逐渐升高;

南部地区偏向海洋性气候,全年降雨量相对平均。

需要安装joypy包。

日均最高气温变化趋势

通过 joypy 包的 joyplot 接口,可以绘制带堆积效应的直方分布曲线,将 1980 年 - 2008 年的日均最高温度按每隔 4 年的方式绘制其分布图,并标注 25%、75% 分位数。

从运行结果可知:

1980 - 2008 年区间,美国全境日均最高温度分布的低温区正逐渐升高,同时高温区正逐渐降低,分布更趋向于集中;

1980 - 2008 年区间,美国全境日均最高温度的 25% 分位数和 75% 分位数有少量偏离但并不明显。

日均降雨量变化趋势

同样的方式对降雨量数据进行处理并查看输出结果。

筛选出加州和纽约州的日均降雨量数据,通过 plt.hist 接口绘制降雨量各月的分布图。

从运行结果可知:

加州地区降雨量多集中在 0 - 1 mm 区间,很少出现大雨,相比而言,纽约州则显得雨量充沛,日均降雨量分布在 2 - 4 mm 区间。

直方图在堆积效应下会被覆盖大多数细节,同时表达聚合、离散效应的箱线图在此类问题上或许是更好的选择。

通过 sns.boxplot 接口绘制加州和纽约州全年各月降雨量分布箱线图.

从箱线图上,我们可以清晰地对比每个月两个州的降雨量分布,既可以看到集中程度,例如七月的加州降雨量集中在 0.1 - 0.5 mm 的窄区间,说明此时很少会有大雨;又可以看到离散情况,例如一月的加州,箱线图箱子(box)部分分布较宽,且上方 10 mm 左右存在一个离散点,说明此时的加州可能偶尔地会出现大到暴雨。

视觉上更为美观且简约的是摆动的误差线图,实验 「美国全境降雨量月度分布」 将所有类别标签的 x 位置均放于同一处,导致误差线高度重合。可通过调节 x 坐标位置将需要对比的序列紧凑排布。

从输出结果可以看出,加州冬季的降雨量不确定更强,每年的的十一月至次年的三月,存在降雨量大,且降雨量存在忽多忽少的现象(误差线长)。

上面的实验均在研究单变量的分布,但经常性地,我们希望知道任意两个变量的联合分布有怎样的特征。

核密度估计 , 是研究此类问题的主要方式之一, sns.kdeplot 接口通过高斯核函数计算两变量的核密度函数并以等高线的形式绘制核密度。

从运行结果可知:

加州在高温区和低降雨期存在一个较为明显的高密度分布区(高温少雨的夏季);

纽约州在高温及低温区均存在一个高密度的分布区,且在不同温区降雨量分布都较为均匀。

将美国全境的降雨量与空气温度通过 plt.hist2d 接口可视化。

从运行结果可知:

美国全境最高密度的日均高温温度区域和降雨量区间分别为,78 F (约等于 25 C)和 2.2 mm 左右,属于相对舒适的生活气候区间。

美国全境降雨量与空气温度的关系-核密度估计

在上面实验基础上,在 x, y 轴上分别通过 sns.rugplot 接口绘制核密度估计的一维分布图,可在一张绘图平面上同时获取联合分布和单变量分布的特征。

美国全境降雨量与空气温度的关系-散点分布和直方分布

sns.jointplot 接口通过栅格的形式,将单变量分布用子图的形式进行分别绘制,同时通过散点图进行双变量关系的展示,也是一种较好的展现数据分布的方式。

上面两个实验研究了双变量分布的可视化,以下研究 3 变量聚合结果的可视化。

通过 sns.heatmap 接口可实现对透视数据的可视化,其原理是对透视结果的值赋予不同的颜色块,以可视化其值的大小,并通过颜色条工具量化其值大小。

上面的两个实验可视化了各州随年份日均最高温度的中位数变化趋势,从图中并未看出有较为显著地变化。

以下通过 t 检验的方式查看统计量是否有显著性差异。stats.ttest_ind 接口可以输出 1980 年 与 2010 年主要气候指数的显著性检验统计量及 p 值。

从运行结果可以看出:

检验结果拒绝了降雨量相等的原假设,即 1980 年 与 2010 年两年间,美国降雨量是不同的,同时没有拒绝日均日照、日均最大气温两个变量相等的原假设,说明气温未发生显著性变化。

近年来,我国的环境问题比较严重,很多城市出现了雾霾天气,当然也有很多城市空气依旧清新,为了研究具体的空气环境城市分布,我们采用了假设检验以及线性回归的思想对AQI(空气质量指数)进行分析和预测,其中AQI的值越大,表示空气质量越差,AQI值越小,表明空气质量越好。

1.列出空气质量优秀/较差的五个城市

2.全国空气质量分布情况

3.临海城市和内陆城市的空气质量对比

4.影响空气指数的因素

5.空气质量均值验证

City 城市名

AQI 空气质量指数

Precipitation 降雨量

GDP 城市生产总值

Temperature 温度

Longitude 经度

Latitude 纬度

Altitude 海拔高度

PopulationDensity 人口密度

Coastal 是否沿海

GreenCoverageRate 绿化覆盖率

Incineration(10,000ton) 焚烧量(10000吨)

在进行数据分析之前,我们对数据集进行观察并对其中的缺失值、重复值、异常值进行处理

我们发现降雨量数据中包含了4个缺失值,为了保证数据的精确,我们查一下降雨量的数据分布

很明显的呈现右偏分布,因此采用平均数来替代缺失值并不妥,我们这里用中位数来代替

GDP属性中检测出8条异常值,我们这里采取用极端值替换的方式,将异常值替换成最大值

数据集处理完毕之后,我们开始进行数据分析

按照AQI降序排列,选出排名前五以及后五的城市,进行可视化,结果如下

结论:空气质量较好的城市为韶关市、南平市、梅州市、基隆市、三明市,空气质量堪忧的城市分别为焦作市、锦州市、保定市、朝阳市、北京市

这里我们将AQI指数分为六个等级,并根据等级统计全国空气质量的等级情况

我们再用散点图绘制下全国的空气质量分布

结论:我国城市的空气质量集中在一级、二级和三级,高污染城市比例较低;从地理位置来看,西部城市空气质量优于东部城市,南部城市优于北部城市。

根据上面的结论我们发现,仿佛临海城市的空气质量普遍高于内陆地区,那么这个结论是否是真的呢?还需要进一步验证。

首先,我们来统计下不同地理环境的城市数量

第二步,绘制临海和内陆城市的AQI分布图

我们发现内陆城市AQI集中分布在50-100区间内,而沿海城市AQI集中分布在0-50区间,在此样本中,沿海的AQI分布低于内陆城市,但是这毕竟是样本,无法推测出总体分布情况,还需进一步探测。

第三步,统计AQI均值并绘制分布密度图

第四步,差异检验,查看内陆沿海AQI均值分布是否显著

我们先假设内陆城市和沿海城市的平均值相同

结果得出支持的概率为0.006,远低于0.05,因此我们否定原假设,选择备择假设,即内陆城市和沿海城市的平均值不相同

结论:经过分析,我们发现有超过99%的概率可以证明临海城市空气质量优于内陆城市的空气质量。

为了探究影响空气质量的具体因素,我们需要计算出两个变量之间的相关系数,以此进行判断,这里采用热力图进行可视化操作。

结论:从显示结果看出,AQI主要受降雨量和纬度的影响,其中降雨量越多,空气质量越好(0.4);纬度越低,空气质量越好(-0.55)

当然,从整个图片来看,也能发现很多变量之间的关系,比如GDP与焚烧量的正相关系数达到了0.9,温度与纬度的负相关系数达到了-0.81等。

传闻空气质量均值在71左右,这个消息是否是准确的呢?我们进行一次验证。

首先计算样本的均值

结果显示为75.334

那么总体的均值是否为71呢?这里先假设总体的均值为71,进行t检验

结论:可以看出,偏离均值1.81倍的标准差,而且p值大于0.05,我们接受原假设(即空气质量均值在71左右)另外,我们还可以计算出在置信度为95%时,空气质量均值的置信区间为70-80。