原标题:干货!如何用 Python+KNN 算法实现城市空气质量分析与预测?
作者 | 李秋键
责编 | 伍杏玲
封图 | CSDN 付费下载自东方 IC
出品 | CSDN(ID:CSDNnews)
随着中国工业和科技的发展,中国的一些发达城市的空气质量问题变得越来越严重,其中最为严重的便是PM2.5带来的恶劣环境问题。
本文在根据网络公开空气质量数据的基础上进行爬取相关数据,主要针对环境较为恶劣的城市,天津、北京、广州等几个城市,尤其是针对天津的质量数据进行对比分析。在分析的基础上得出空气质量变化情况,提出一些意见。并借助机器学习算法根据数据预测空气质量,以达到分析预测的典型大数据分析模式效果。
整体分析的流程图如下:
实验前的准备
1.1 数据获取
我们这里所得到的数据来源于网络公开的空气质量数据,数据来源于“天气后报”网站,网址为:http://www.tianqihoubao.com/aqi/tianjin.html。网址内容如下图可见:
图1-1 网址数据图
整个数据的获取使用python进行爬取。流程如下:
(1) 导入爬虫所需要的的库:
在air_tianjin_2019.py程序中。
其中Requests 是用Python语言编写,基于urllib,采用 Apache2 Licensed开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。
其中BeautifulSoup库是一个灵活又方便的网页解析库,处理高效,支持多种解析器。利用它就不用编写正则表达式也能方便的实现网页信息的抓取
对应代码如下:
importtime
importrequests
frombs4 importBeautifulSoup
(2)为了防止网站的反爬机制,我们设定模拟浏览器进行访问获取数据:
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'}
(3)然后获取2019年全年的空气质量数据:
fori inrange( 1, 13):
time. sleep( 5)
url = 'http://www.tianqihoubao.com/aqi/tianjin-2019'+ str( "%02d"% i) + '.html'
response = requests. get(url=url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
tr = soup.find_all( 'tr')
1.2 数据预处理
如果仅仅是从网站上得到的数据会有一些标签等干扰项,我们针对一些标签进行去除即可:
forj intr[ 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
withopen( 'air_tianjin_2019.csv', 'a+', encoding= 'utf-8-sig') asf:
f.write( Date+ ','+ Quality_grade + '