Python可视化应用——天气分析和展示

举报
TiAmoZhang 发表于 2025/07/08 15:54:20 2025/07/08
【摘要】 本案例使用Python中的requests和BeautifulSoup库对中国天气网当天和未来7天的数据进行爬取,保存为CSV文件,之后用Matplotlib、NumPy、Pandas对数据进行可视化处理和分析,得到温湿度变化曲线、空气质量图、风向雷达图等结果,为获得未来天气信息提供了有效方法。

1.png

本案例使用Python中的requests和BeautifulSoup库对中国天气网当天和未来7天的数据进行爬取,保存为CSV文件,之后用

Matplotlib、NumPy、Pandas对数据进行可视化处理和分析,得到温湿度变化曲线、空气质量图、风向雷达图等结果,为获得未来天气信息提供了有效方法。


01、爬取数据

首先查看中国天气网的网址(详见前言二维码),这里就访问郑州本地的天气网址,如果想爬取不同的地区只需修改最后的101180101地区编号即可,前面的weather代表是7天的网页,weather1d代表当天,weather15d代表未来14天。

这里主要访问7天的中国天气网。Python爬取网页数据requests库和urllib库的原理相似且使用方法基本一致,都是根据HTTP协议操作各种消息和页面。一般情况,使用requests库比urllib库更简单些。这里采用requests.get()方法请求网页,如果成功访问,则得到网页的所有字符串文本。

以下是使用requests库获取网页的字符串文本请求过程的代码:

2.png

接着采用BeautifulSoup库对刚刚获取的字符串进行天气数据提取。首先要对网页进行页面标签结构(见图9-38)分析,找到需要获取天气数据的所在标签。

3.png

可以发现,7天的数据信息在div标签中并且id=“7d”,每天的日期、天气、温度、风级等信息都在一个ul的li标签中,所以程序可以使用BeautifulSoup对获取的网页字符串文本进行查找div标签id=“7d”,找出它包含的所有ul的li标签,之后提取标签中相应的天气数据值保存到列表中。

注意,有时日期没有最高气温,对于没有数据的情况,要进行判断和处理。另外,对于一些数据保存的格式也要提前进行处理,如温度后面的摄氏度符号,日期数字和风级文字这需要用到字符查找及字符串切片处理。代码如下:

4.png

02、Pandas处理分析数据

这里从网页数据中提取每天数据('日期','天气','最高温度','最低温度','风向','风力')以列表形式存入weather_all,再把weather_all二维列表数据转换为数据框(DataFrame),同时导出到CSV文件存储。

5.png

03、数据可视化展示

使用Matplotlib绘图进行最高和最低温度可视化展示,通过对比可以明显看出近期温度的变化情况。

6.png

最终运行效果如图9-39所示。

7.png

读者可以获取两个城市的天气情况,对温度情况进行对比展示。

下面统计未来7天的风向和平均风力,并且采用极坐标形式,将圆周分为8部分,代表8个方向,采用雷达图展示。代码如下:

8.png

最终运行效果如图9-40所示。

9.png

分析可以发现未来7天南风、东南风是主要风向,风级最高达到了6级,未来7天没有北风。






【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。