2018年北上广深空气质量分析:原来北京的「优」有这么多
导读:上个周末,北方地区又经历了一次严重的雾霾天气,不禁想起那段在天津厚德载雾,自强不吸的日子。
无图无真相,下图为证。
左边的图是去年2月份的时候,这样的空气真的难得一见!
右边的是吐槽以及我个人第一次买口罩!!!
所以这回先对2017年天津的空气质量情况进行分析,然后再是北上广深。
作者 / 来源:法纳斯特(ID:walker398)
01 网页分析
网站没有反爬,所以直接抓取信息就好了。
看见没有,妥妥的严重污染,2016年12月份买的口罩派上用场啦!
这里简单给大家科普一下有关AQI,PM2.5的知识。
又是重操旧业,我的PPT水平还是很水呢~
02 数据获取
获取代码如下所示。
import time
import requests
from bs4 import BeautifulSoup
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}
for i in range(1, 13):
time.sleep(5)
# 把1转换为01
url = 'http://www.tianqihoubao.com/aqi/tianjin-2017' + str("%02d" % i) + '.html'
response = requests.get(url=url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
tr = soup.find_all('tr')
# 去除标签栏
for j in tr[1:]:
td = j.find_all('td')
Date = td[0].get_text().strip()
Quality_grade = td[1].get_text().strip()
AQI = td[2].get_text().strip()
AQI_rank = td[3].get_text().strip()
PM = td[4].get_text()
with open('air_tianjin_2017.csv', 'a+', encoding='utf-8-sig') as f:
f.write(Date + ',' + Quality_grade + ',' + AQI + ',' + AQI_rank + ',' + PM + 'n')
成功获取数据。
03 天津
公众号后台对话框回复天气。即可获取全部可视化源码及相关文件。
1. AQI全年走势图
92.5是年均AQI值,从上面科普知识里可以知道,2017年天津整体空气质量只能是「良」中的下下等水平,与轻度污染近在咫尺。
2. AQI月均走势图
从月均的走势图就能看出,1月的空气质量最差,8月的空气质量最好,当也并不是有多好,充其量也就是个「良」!
3. AQI季度箱形图
箱形图,显示一组数据分散情况资料的统计图。
数据里有最大值、最小值、中位数和两个四分位数。
这里可以看出,2017年天津的季度AQI均值差距不是很大。
但是一、二、四季度有明显的波动,空气质量有时会变得很差。
4. PM2.5全年走势图
59.87是年均PM2.5值,已经远超过国家二级标准限值35了。
其实天津给我留下的印象就是天气经常灰蒙蒙,时常还会变点颜色,比如黄色~
一年下不了几次雨,及其干燥。所以那个最低值11,我猜那时候估计是刮大风。
5. PM2.5月均走势图
和AQI的走势差不多,同样是1月最高,8月最低。
6. PM2.5季度箱形图
说实话,看了这个图,我不知道天津的「大哥」及「姐姐」们是如何做到自强不吸的。
基本上四个季度都超标了,一年不超标的估计也就那么几次。
7. PM2.5指数日历图
日均PM2.5国家二级标准为75,从上面的热力图看,基本上轻度污染过半了。
另外一月还是重灾区,天色黄黄的...
其实每逢雾霾,基本上就是待宿舍了。而且1月份是考试月,刚好窝宿舍预习课本~
8. 天津全年空气质量情况
「良」和「轻度污染」占了大头,「优」只能在角落里瑟瑟发抖,足以说明空气之差。
不过该上课还是要上课,谁叫那时宿舍和教室离得近(走过去5分钟不到)。
04 北上广深
1. 北上广深AQI全年走势图
北京月均AQI最低也就50左右,看来今年全年差不多都在「优」以下了。
不过相比前几年,京津冀空气已经好了不少(政策),真的。
上海和广州差不多,深圳与北京算是鲜明对比。
2. 北上广深PM2.5全年走势图
北京一如既往的高调。
3. 北上广深全年空气质量情况
深圳几乎都是「优」和「良」,上海和广州和上面说的一样,北京的「优」已经不少了。
那么你所在的城市空气质量又是如何?
- python文件打开方式详解——a、a+、r+、w+区别
- 三封报警邮件的分析(r6笔记第95天)
- HCTF2017 部分 Web 出题思路详解
- 基于springboot+kotlin+gradle构建的框架的坑
- 创建Task的多种方法
- 运行map()后,报:<map object at 0x02629E50>解决方法与原因分析
- Gradle的快速入门
- Python笔记从html中提取字段
- 一条细小的报警短信的处理(r6笔记第96天)
- 1.react的基础知识
- 防火墙设置的小问题(r6笔记第94天)
- 有没有必要把机器学习算法自己实现一遍?
- python中从str中提取元素到list以及将list转换为str
- 简单易学的机器学习算法——线性回归(2)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python数据分析之Seaborn(回归分析绘图)
- Python数据分析之Seaborn(分类分析绘图 )
- Python数据分析之Seaborn(热图绘制)
- Python数据分析之matplotlib(3D绘图)
- 一看就懂的Tensorflow实战(Tensorflow入门)
- 一看就懂的Tensorflow实战(线性回归模型)
- 一看就懂的Tensorflow实战(Logistic回归模型)
- 一看就懂的Tensorflow实战(Logistic回归模型Eager API)
- 聊聊dubbo-go的DubboProtocol
- 一看就懂的Tensorflow实战(最近邻)
- 一看就懂的Tensorflow实战(随机森林)
- 一看就懂的Tensorflow实战(多层感知机)
- 一看就懂的Tensorflow实战(卷积神经网络)
- 一看就懂的Tensorflow实战(多层感知机模型Eager API)
- 一看就懂的Tensorflow实战(K-Means模型)