AQI 分析

1、背景信息

AOI( Air Quality Index),指空气质量指数,用来衡量空气清洁或污染的程度。值越小,表示空气质量越好。近年来,因为环境问题,空气质量也越来越受到人们的重视。我们期望能够运用数据分析的相关技术,对全国城市空气质量进行研究与分析,希望能够解决如下疑问:

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

空气质量在地理位置分布上,是否具有一定的规律性?

城市的空气质量与是否临海是否有关?

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

全国城市空气质量普遍处于何种水平?

分析报告预览.GIF

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

City

AQI

Precipitation

GDP

城市

空气质量指数

降水量

城市生产总值

Longitude

Latitude

Altitude

Population Density

经度

纬度

海拔高度

人口密集度

Temperature

Coastal

Incineration (10,000ton)

Green Coverage Rate

温度

是否临海

焚烧量/10000吨

绿化率

2、数据分析流程

在进行数据分析之前,我们需要清楚数据分析的基本流程。

3、读取数据

导入需要的库并初始化一些设置。

1 importnumpy as np2 importpandas as pd3 importmatplotlib.pyplot as plt4 importseaborn as sns5 importwarnings6 sns.set(style="darkgrid") 7 plt.rcParams["font.family"]="simHei" #用于解决中文显示不了的问题

8 plt.rcParams["axes.unicode_minus"]=False9 warnings.filterwarnings("ignore")

加载数据集

4、数据清洗

4.1 缺失值

对于缺失值的处理 。可以使用如下方式:

删除缺失值

仅适用于缺失数量很少的情况

填充缺失值

数值变量

均值填充

中值填充

类别变量

众数填充

单独作为一个类别

其他

先用info()或innull()查看缺失值。

再用skew()查看偏度信息,再画个图看看,注意distplot()不支持有空值数据绘制,所以必须先用dropna()将空值剔除。

可以看出,我们的原始数据有点右偏,因为缺失值只有4个,缺失数量很少,可以直接删除,,但我们这次用了中位数来填充。

4.2 异常值

异常值如何发现?我们有这几种方法:

describe()

箱线图

3σ方式

其他相关异常检测算法

describe():

调用dataframe对象的describe方法,会显示数据的统计信息,让自己了解下数据

可以看出GDP、Latitude、PopulationDensity的最大值与较大四分位数的差距异常巨大,存在右偏现象,即存在许多极大的异常值

3σ即3倍标准差,根据正态分布的特性,我们可以将3σ之外的数据视为异常值。以GDP为例,画出GDP的偏度分布情况:

该数据出现严重右偏分布,也就是说存在很多极大的异常值,通过3σ法获取这些异常值:

箱线图

通过箱线图我们可以很直观的看见存在很多极大的异常值,怎么判断的呢?

箱线图异常值的判断依据:

Q1、Q2、Q3分别表示1/4分位数、2/4分位数、3/4分位数,IQR=Q3-Q1

若数据小于Q1-1.5IQR或大于Q3+1.5IQR则为异常值。

找到异常怎么处理,通常有以下几种方式:

删除异常值(不常用)

视为缺失值处理

对数转换(适用于右偏,建模)

临界值替换

分箱法离散化处理(分成不同区间映射成离散值)

以对数转换为例。

对数转换适用于存在较大异常值的数据,即适用于右偏分布,不适用于左偏分布。

4.3 重复值

重复值的处理很简单,使用duplicated查询重复值,参数keep有三个值:"first"、False、"last".分别表示显示第一条、所有、最后一天重复的记录。

清洗完的数据可以直接导出。

5 数据分析

空气质量的好坏有时候决定人的去留,择校、就业、定居、旅游等等。

首先来看最好和最坏的几个城市

5.1 空气质量最好&最坏的几个城市

空气最好的5个城市

先按AQI排序,默认升序,取前5条记录;x轴上的城市名称需要旋转45°,这样便于查看。

上图可以看出,空气质量好的前5个城市:1.韶关市,2.南平市,3.梅州市,4.基隆市(台湾省),5.三明市。全是南方城市。

空气最差的5个城市

上图可以看出,空气质量最差的前5个城市: 1.北京市,2.朝阳市,3.保定市,4.锦州市,5.焦作市。全是北方城市。

5.2 全国部分城市的空气质量

5.2.1 空气质量等级划分:

首先我们需要定义一个函数,写一些if语句,通过AQI的值来判断空气质量等级,

这里需要用apply函数:申请调用我们自建的函数,返回值就是自建函数返回值。

从图中可以看出,我国主要城市的空气质量主要以一级和二级为主,三级占一部分,其他占少数。

5.2.2 空气质量指数分布情况

调用scatterplot()绘制散点图,以AQI区分,参数palette是调色,这里是绿色到红色。

从图中可以看出,从地理位置上来讲,空气质量南方城市优于北方城市,西部城市优于东部城市。

5.3 城市的空气质量与是否临海是否有关?

先来看看此数据中临海与内陆城市的数量:

内陆城市数量远大于临海城市,这没什么悬念,我们再来看下散点分布情况:

从图中可以大概看出临海城市空气质量由于内陆。但是我们还是要靠数据说话,分组计算空气质量的均值:

要用到groupby()分组函数

临海79,内陆64。但是信息太少,我们再画个箱线图和小提琴图,来了解更多信息。

从箱线图可看出,临海城市的AQI的四分位值,最大值都比内陆城市低,所以临海城市空气质量相对于内陆城市要好。但是箱线图对于数据分布密度不明显。

所以,绘制小提琴图,既能展示箱线图信息,又能呈现分布的密度。

我们还可以将小提琴图和分簇散点图结合在一起看:

inner=None表示把“琴弦”去除。

到这里我们能得出临海城市空气质量普遍好于内陆吗?

显然是不能的,我们的数据只有几百条,只是一个样本,并不能代表总体,这是样本与总体的差异性。

那怎么得到一个可靠的结论呢? 我们需要对样本做差异检验:

对两样本做t 检验,来查看临海城市与内陆城市的均值差异是否显著。在进行两样本检验时,我们需要知道两样本的方差是否一致才能进行后面的 t 检验

先导入相关库,定义变量,stats.levene()方差齐性检验。返回两个值:第一个是统计量不要看,,看第二个p值为0.77,说明接受原假设,方差是齐性的(原假设:两样本方差相等,备择假设:方差不等),可以进行下一步了。

进行t检验时,两样本的方差是否相等,对结果有影响!

从统计量为负数可以看出,inland是大于coastal的。怎么算呢?在stats中提供的两独立样本t检验是双边检验(=或≠),而现在我们要的是大于小于的关系(单边检验),所以需要计算p值:stats.t.sf(),sf=1-cdf,cdf为累计分布函数,sf为残存函数,自由度df。p值0.99666,说明coastal越小。

到此为止,我们有超过99%的几率可以认为空气质量临海城市普遍优于内陆。

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

人口密度大是否对导致空气质量低呢?

绿化率高是否能提高空气质量呢?

先用pairplot()画一个散点图矩阵,取3列数据

对于不同变量的绘制散点图,同变量的绘制直方图,只表示数量。从上图并不能明显地看出变量之间的相关性, 我们需要通过计算相关系数来了解。

DataFrame对象提供了计算相关系数的方法,直接data.corr()即可

再将数据可视化,更清晰的呈现数据:

结果统计

从结果中可知,空气质量指数主要受降雨量(-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) 。

5.5全国城市空气质量普遍处于何种水平?

据说2015年全国所有城市的空气质量指数均值在71左右,真的假的?

为了验证这是否正确,我们先来看看均值:

75?大于71了,说明消息是假的?

当然还不能这么说,因为,它俩不对等,一个是总体均值,一个是样本均值,所以需要验证一下它们是否相等。我们可以用单样本t经验(ttest_lsamp),置信度为95%。

p值大于0.05,所以无法拒绝原假设,维持原假设,即维持2015年全国所有城市的空气质量指数均值在71左右。

调用函数stats.t.interval()得出置信区间。

这样我们就计算出2015年全国所有城市平均空气质量指数95%的可能在70.63~80.04之间。

6 总结

1.空气质量总体分布上来说,南方城市优于北方城市,西部城市优于东部城市。

2.临海城市的空质量整体上好于内陆城市。

3.是否临海,降雨量与纬度对空气质量指数的影响较大。

4.我国城市平均空气质量指数有95%的可能性在(70.63 - 80.04)这个区间内。

7 PPT展示

python关联分析如何可视化_如何用Python做AQI分析并可视化?相关推荐

  1. excel显著性检验_#如何用excel做anova分析#用excel做显著性分析

    如何用Excel做方差分析?? 方差分析的步骤: (1)分别计算行与列平方和.行平方与组差相似,是每值与总体均值的离差平方和,列平方和是每列的均值与总体均值的离差平方和. (2)总的平方和的计算与单因 ...

  2. python情绪分析的意义_如何用Python和R对故事情节做情绪分析?

    想知道一部没看过的影视剧能否符合自己口味,却又怕被剧透?没关系,我们可以用情绪分析来了解故事情节是否足够跌宕起伏.本文一步步教你如何用Python和R轻松愉快完成文本情绪分析.一起来试试吧. 烦恼 追 ...

  3. python中文模糊关键词提取_如何用Python提取中文关键词?

    本文一步步为你演示,如何用Python从中文文本中提取关键词.如果你需要对长文"观其大略",不妨尝试一下. 需求 好友最近对自然语言处理感兴趣,因为他打算利用自动化方法从长文本里提 ...

  4. python提取pdf文件内容_如何用Python批量提取PDF文本内容?

    本文为你展示,如何用Python把许多PDF文件的文本内容批量提取出来,并且整理存储到数据框中,以便于后续的数据分析. 问题 最近,读者们在后台的留言,愈发五花八门了. 写了几篇关于自然语言处理的文章 ...

  5. 怎样用python搭建简单的系统_如何用Python搭建一个简单的推荐系统?

    推荐系统的相关知识我们已在前文中提到,在这篇文章中,我们会介绍如何用Python来搭建一个简单的推荐系统. 本文使用的数据集是MovieLens数据集,该数据集由明尼苏达大学的Grouplens研究小 ...

  6. python write 写多行_如何用 Python 执行单行命令

    一般来说,面对日常处理的一些小任务,直接用 sed,grep 之类的就可以搞定,更复杂一点的就会考虑 awk 或者用一些现成的轮子,要是 awk 搞不定我就只好用 Python 了.但有些时候,我仅仅 ...

  7. python删除excel第一行_如何用 Python 清洗数据?

    林骥的第 38 篇文章 0. 序言在做数据分析之前,我们首先要明确数据分析的目标,然后应用数据分析的思维,对目标进行细分,再采取相应的行动.我们可以把数据分析细分为以下 8 个步骤:(1)读取(2)清 ...

  8. python调用有道翻译_如何用python“优雅的”调用有道翻译?

    前言 其实在以前就盯上有道翻译了的,但是由于时间问题一直没有研究(我的骚操作还在后面,记得关注),本文主要讲解如何用python调用有道翻译,讲解这个爬虫与有道翻译的js"斗争"的 ...

  9. python爬取微信好友_如何用 Python 爬取自己的微信朋友

    原标题:如何用 Python 爬取自己的微信朋友 作者 Alfred 本文转载自网络,如涉及侵权请及时联系我们 微信作为一款拥有将近9亿用户的超级APP,已经成为很多人生活中不可或缺的一部分,聊天.分 ...

最新文章

  1. java内部类人打电话依赖手机_Java内部类及反射类面试问题,90%的人都不知道
  2. Codeforces数学1600----day1[同余定理,树状数组+两次二分,,组合计数]
  3. 智能睡眠评估系统(包含:睡眠数据特征工程、睡眠评分、睡眠聚类、睡眠可视化分析、睡眠结论存储)
  4. 论文笔记:Matrix Completion in the Unit Hypercube via Structured Matrix Factorization
  5. generate报错 make_如何安装opencv_contrib及解决其安装编译问题
  6. 如果你扯了团队后腿,你应该内疚
  7. 厉害了!国人开发的编程语言 Go+ 1.0 即将发布!
  8. eclipse根据wsdl文件生成webservice客户端
  9. python unittest接口测试_Python+unittest 接口自动化测试
  10. c++实现单例模式完整源代码
  11. 实验三——Pspice
  12. [转]ASP.Net+XML打造留言薄
  13. android真机测试什么不同,android真机测试闪退
  14. js日历多选(在表单中显示)
  15. java程序设计 秒表计时器_【Java】Java计时器(秒表)
  16. ros和carla的联合
  17. 学会向上管理,4个提问技巧,让你事半功倍
  18. 隔行变色小案例(5)
  19. 【雕爷学编程】Arduino动手做(101)---12位智能RGB彩环
  20. Message: session not created exception: Missing or invalid capabilities (Driver info: chromedrive

热门文章

  1. DCN神州数码交换机端口安全配置命令(纯命令)
  2. 5G时代已经到来,TCP/IP老矣,尚能饭否?
  3. android屏幕解锁图案,安卓手机图案屏幕锁解锁方法!!
  4. 小程序和Web项目的区别
  5. 开源系统搭建私有云盘,育网校园云盘系统
  6. 正达信通ZedaIOT物联网平台设备管理功能浅析
  7. 电脑显示没有被指定在上运行_win10系统运行QQ时出现“.dll没有被指定在windows上运行,或者它包含错误”的解决教程...
  8. win7所有视频格式都不显示缩略图的解决方法
  9. linux小红帽实验心得,小红帽读书心得
  10. msec 腾讯CICD程序框架发布