Python可视化应用——天气分析和展示
本案例使用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库获取网页的字符串文本请求过程的代码:
接着采用BeautifulSoup库对刚刚获取的字符串进行天气数据提取。首先要对网页进行页面标签结构(见图9-38)分析,找到需要获取天气数据的所在标签。
可以发现,7天的数据信息在div标签中并且id=“7d”,每天的日期、天气、温度、风级等信息都在一个ul的li标签中,所以程序可以使用BeautifulSoup对获取的网页字符串文本进行查找div标签id=“7d”,找出它包含的所有ul的li标签,之后提取标签中相应的天气数据值保存到列表中。
注意,有时日期没有最高气温,对于没有数据的情况,要进行判断和处理。另外,对于一些数据保存的格式也要提前进行处理,如温度后面的摄氏度符号,日期数字和风级文字这需要用到字符查找及字符串切片处理。代码如下:
02、Pandas处理分析数据
这里从网页数据中提取每天数据('日期','天气','最高温度','最低温度','风向','风力')以列表形式存入weather_all,再把weather_all二维列表数据转换为数据框(DataFrame),同时导出到CSV文件存储。
03、数据可视化展示
使用Matplotlib绘图进行最高和最低温度可视化展示,通过对比可以明显看出近期温度的变化情况。
最终运行效果如图9-39所示。
读者可以获取两个城市的天气情况,对温度情况进行对比展示。
下面统计未来7天的风向和平均风力,并且采用极坐标形式,将圆周分为8部分,代表8个方向,采用雷达图展示。代码如下:
最终运行效果如图9-40所示。
分析可以发现未来7天南风、东南风是主要风向,风级最高达到了6级,未来7天没有北风。
- 点赞
- 收藏
- 关注作者
评论(0)