(详细)爬虫可视化温州11年天气大作业

(详细)爬虫可视化温州11年天气大作业,第1张

(详细)爬虫可视化温州11年天气大作业

仅以本次爬虫大作业,纪念老师给的士力架
以后应该再也没有士力架的课了吧
本文编辑于2022年1月1日 0:33分
可以作为参考
目 录
1 关键技术介绍 3
一、数据分析用到的关键技术 3
二、分析目的 3
2 数据准备 4
一、爬取的网站 4
二、爬取数据用到的方式方法 5
三、爬取所用的代码 5
3 数据清洗与整理 9
一、数据清洗 10
二、数据整理 11
4 数据分析及可视化 17
一、温度分析及可视化 17
二、天气状况 20
三、风力风向 24
5 结论 25
一、结论与感想 25
二、不足 26
参考文献 27

1 关键技术介绍
一、数据分析用到的关键技术
1、在数据爬取阶段,我们运用了lxml库中的etree、requests库、bs4库中的Beautiful模块以及time库设置时间等待;
2、在数据清洗过程中,我们运用了pandas库以及numpy库;
3、在数据可视化过程中,我们运用了seaborn库、matplotlib.pyplot库以及wordcloud库中的WordCloud模块和ImageColorGenerator,用sns.lineplot画出折线图,barplot画出柱状图,wordcloud画出词云图。
二、分析目的
早在20世纪上半叶,部分人们就意识到全球平均气温在逐步升高,这就是全球变暖问题。全球变暖是人类无法逾越的高山,至今,全球变暖趋势仍在持续。
因此,全球气候变暖问题日趋严重,由此导致的各类问题正在严重的威胁着人类赖以生存的环境,气温变暖已成为不可回避的重大理论和实际问题。
2020年,全球平均温度较工业化前水平(1850~1900年平均值)高出1.2℃,是有完整气象观测记录以来的三个最暖年份之一,亚洲陆地表面平均气温比常年值(本报告使用1981~2010年气候基准期)偏高1.06℃,是20世纪初以来的最暖年份;而2011~2020年,是1850年以来最暖的十年。
所以我们准备对温州地区的天气信息进行可视化,分析浙江省温州地区2011年1月至2021年12月(共11年)气温及其他元素的变化。

2 数据准备
一、爬取的网站
天气后报网
http://tianqihoubao.com/lishi/

这个网站有全国历史天气,但我们只取一瓢,只选择温州的天气。
我们准备爬取温州从2011年1月至2021年12月的天气。
下图是温州2011年天气数据总和,其余年天气格式和它一样

二、爬取数据用到的方式方法

time库在这里主要用来计时,爬取时间一共用了多少

三、爬取所用的代码
1.获取每一个月的url(共132个月)

这里用了一个time.perf_counter()方法主要用来计时,爬取从2011年1月到2021年12月温州的所有天气,需要花费多少时间。
同时用etree.HTML.xpath(),根据网站的xpath来获取所有的url,一个url代表一个月的天气,一共132个url,全部存到urlList中。
2.开始爬取

前面我们已经获取到每一个月(共132个月)天气的url了,现在根据url来获取当前url月的天气, 比如这是2011年1月的天气网址:http://tianqihoubao.com/lishi/wenzhou/month/201101.html
我们可以发现最后201101是表示日期,为了爬取时有反馈,我们决定将输出它正在爬取的日期。如图:

因为爬取天气时很多是重复性工作,所以我们将重复的代码封装成一个spider函数。
在spider函数中,我们对获取到空值进行一个判断,如果是空值,那么我们就不加入列表;同时也对数据进行了一定的处理,比如说
日期这个字段含有大量无用值,我们用split函数根据空格等将其分为一个列表,再用join合成想要的日期字符串,在获取数据的同时,也对数据进行一个清洗。

3.输出结果并保存到本地

因为前面我们是对一个月的天气(list)append到一个list中,形成一个二维list,所以我们这里用一个列表推导式,将二维列表转为一维列表。
转化为一维列表后,我们就可以一个个列表加到字典中,并将字典通过pd.Dataframe()方法转为dataframe,再用to_csv()方法存为csv文件。
最后运行记录一下结束时间,再将结束时间减去开始时间,得到运行时间。
爬取的结果如下:
共用时602.2秒,约等于10分钟。
这是整合后数据,共4016行

3 数据清洗与整理
用到的主要库

一、数据清洗
代码:

df.info()查看字段信息,日期、天气状况、温度、风力风向四列都是object类型,都有4016个值

df.isnull().sum()查看缺失值情况:

发现没有缺失值。
为什么没有缺失值:

在前面获取数据时(spider自定义函数中),就进行处理了,空值我们不接收。
而且像下面有许多空格、换行符的数据,我们用split和join处理,保证获取的数据都是有用、有效的数据。

二、数据整理
1.总体数据整理
后面我们将对温州11年的天气进行总体性分析,但是一天的天气中,天气状况、温度、风力风向都含有’/’符号,不利于后面进行数据分析,比如天气计算平均温度时,造成很大的障碍,所以我们准备将天气状况、温度、风力风向中的斜杠符号去除,并将数据分为两列(如天气状况一、天气状况二、当日最高温、最低温等)
初始数据:

代码:

整理后:

这里我们用split函数切割,将获取的object类型转为list,再用numpy库将其转化为一个array,众所周知,nnupy处理数据非常强大,根据索引将数据存为两列。
可以发现温度等数据已经根据斜杠,划分为两列了(最高温、最低温)。

2.温度数据整理

为了更加容易进行可视化,我们将温度一列,分为平均温度,最低温,最高温三列;由于最高温和最低温两列都是字符类型(带有℃符号),所以我们将它先把℃符号去除,再进行求平均值运算。
整理后的温度数据如下:

3.天气状况数据整理
分析:我们准备将天气状况(多云、下雨等)统计出天数,画出词云,看看在温州11年天里,最多的天气是什么。
代码:

这里我们采用的是一种经典的计数方式,用字典记录每个天气状况的天数,dicts,get()方法表示统计i这种天气状况的天数,如果字典中尚未存入,则默认为0。
结果:

4.风向风力数据整理
分析:为分析出,温州这11年里,你吹过的最多的风向和风力是什么,我们将对每个风向风力进行计数。

具体方法跟天气状况统计一致,都是字典统计。
结果:


4 数据分析及可视化
一、温度分析及可视化
分析目的:全球气候整体变暖1.2℃,这已经给我们生活造成较大的影响,平时在温州已经很难见到下雪天气了,但是由于温度上升幅度较小,我们在日常生活中,难以感受到,所以我们准备对温州地区11年温度进行可视化,分析温州温度是否有变化。
1.温度数字化
在数据处理之温度数据整理中,我们已经将温度划分为最高温、最低温、平均温度三栏,但是它是字符串类型,同时含有℃符号,所以我们准备将温度数字提取出来,并转为float类型;
代码:

我们在数字化温度的过程中,主要用到filter()方法过滤出温度中的数字,同时将其转为数字类型,存为digitTemp.csv文件
同时我们发现,在画图时,日期具体到日,数据太多了,所以我们将按月分数据,求出月温度平均值

日期只取到月,这里主要用到pivot_table方法,根据年月分类,求平均值
至此,终于得出我们画图所需的数据

2.温度可视化

首先,我们为了画出颜色、样式较为舒服的图,引进了seaborn库,并对全局样式进行一个渲染,读取进温度,存到tempDf中
可视化:

我们画的是折线图,三条折线,分别为最低温、最高温、平均温度,纵坐标是温度,横坐标是年月,我们细致观察图,可以清晰发现温州在2011年1月至2021年12月,11年里,温度有略微上升,虽然幅度较小,但是带来的危害却是致命的。

5 结论
一、结论与感想
本次爬虫与数据分析综合实验,我们爬取了浙江省温州地区(2011年1月至2021年12月)共132个月,并对温州的温度进行可视化分析,发现温州温度有明显的上升,虽然上升幅度较小,但带来的影响却是致命的,大家都知道蝴蝶效应,一个微小的变化往往能带来巨大的变化。
全球温度上升1℃,会带来的气候变化和环境变化包括极端高温、海洋热浪,强降水的频率和强度增加,一些地区的农业和生态干旱,强热带气旋的规模,以及北极海冰、积雪和永久冻土层的减少等影响。而全球变暖趋势还在持续,联合国政府间气候变化专门委员会(IPCC)发布报告指出,除非未来几十年内大幅减少温室气体排放,否则全球变暖幅度在21世纪将超过1.5摄氏度和2摄氏度。别看上升的数字小,这给我们带来的影响是致命的,冰川融化加速,海平面上升,各种极端天气频发,人类赖以生存的环境被破坏,我们将无处可以安居。所以从今天开始,我们要树立环保意识,低碳出行,使用节能产品等等。
在温州这十一年里,你经历过最多的天气是多云,吹过最多的风是东北风<=4级。
本次爬虫与可视化的结合,让我感受到了数据爬取的魅力,以及可视化让数据变得更加生动形象。爬虫课程到此就告一段落了,在以后学习和工作中,我会继续深入学习爬虫。
二、不足
本次爬取天气数据,仅仅爬取了温州地区的天气,没有爬取全国甚至全球的历史天气信息,去进行可视化分析全国、全球气候变化情况。这个数据实在太过庞大,以我们现在的技术及设备,无法爬取如此之多的数据。
数据处理、可视化的过程比较稚嫩,在接下来的日子里,我会改正自己的不足,争取可视化出更好的图。

参考文献…

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5689637.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存