我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python如何实现将天气预报可视化

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python如何实现将天气预报可视化

这篇文章将为大家详细讲解有关python如何实现将天气预报可视化,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

结果展示

其中:

红线代表当天最高气温,蓝线代表最低气温,最高气温点上的标注为当天的天气情况。

如果使夜晚运行程序,则最高气温和最低气温的点会重合,使由爬取数据产生误差导致的。

python如何实现将天气预报可视化

程序代码

详细请看注释

# -*- coding: UTF-8 -*-"""# @Time: 2022/1/4 11:02# @Author: 远方的星# @CSDN: https://blog.csdn.net/qq_44921056"""import chardetimport requestsfrom lxml import etreefrom fake_useragent import UserAgentimport pandas as pdfrom matplotlib import pyplot as plt# 随机产生请求头ua = UserAgent(verify_ssl=False, path='D:/Pycharm/fake_useragent.json')# 随机切换请求头def random_ua():    headers = {        "user-agent": ua.random    }    return headers# 解析页面def res_text(url):    res = requests.get(url=url, headers=random_ua())    res.encoding = chardet.detect(res.content)['encoding']    response = res.text    html = etree.HTML(response)    return html# 获得未来七天及八到十五天的页面链接def get_url(url):    html = res_text(url)    url_7 = 'http://www.weather.com.cn/' + html.xpath('//*[@id="someDayNav"]/li[2]/a/@href')[0]    url_8_15 = 'http://www.weather.com.cn/' + html.xpath('//*[@id="someDayNav"]/li[3]/a/@href')[0]    # print(url_7)    # print(url_8_15)    return url_7, url_8_15# 获取未来七天的天气情况def get_data_7(url):    html = res_text(url)    list_s = html.xpath('//*[@id="7d"]/ul/li')  # 获取天气数据列表    Date, Weather, Low, High = [], [], [], []    for i in range(len(list_s)):        list_date = list_s[i].xpath('./h2/text()')[0]  # 获取日期,如:4日(明天)        # print(list_data)        list_weather = list_s[i].xpath('./p[1]/@title')[0]  # 获取天气情况,如:小雨转雨夹雪        # print(list_weather)        tem_low = list_s[i].xpath('./p[2]/i/text()')  # 获取最低气温        tem_high = list_s[i].xpath('./p[2]/span/text()')  # 获取最高气温        if tem_high == []:  # 遇到夜晚情况,筛掉当天的最高气温            tem_high = tem_low  # 无最高气温时,使最高气温等于最低气温        tem_low = int(tem_low[0].replace('℃', '')) # 将气温数据处理        tem_high = int(tem_high[0].replace('℃', ''))        # print(type(tem_high))        Date.append(list_date), Weather.append(list_weather), Low.append(tem_low), High.append(tem_high)    excel = pd.DataFrame()  # 定义一个二维列表    excel['日期'] = Date    excel['天气'] = Weather    excel['最低气温'] = Low    excel['最高气温'] = High    # print(excel)    return exceldef get_data_8_15(url):    html = res_text(url)    list_s = html.xpath('//*[@id="15d"]/ul/li')    Date, Weather, Low, High = [], [], [], []    for i in range(len(list_s)):        # data_s[0]是日期,如:周二(11日),data_s[1]是天气情况,如:阴转晴,data_s[2]是最低温度,如:/-3℃        data_s = list_s[i].xpath('./span/text()')        # print(data_s)        date = modify_str(data_s[0])  # 获取日期情况        weather = data_s[1]        low = int(data_s[2].replace('/', '').replace('℃', ''))        high = int(list_s[i].xpath('./span/em/text()')[0].replace('℃', ''))        # print(date, weather, low, high)        Date.append(date), Weather.append(weather), Low.append(low), High.append(high)    # print(Date, Weather, Low, High)    excel = pd.DataFrame()  # 定义一个二维列表    excel['日期'] = Date    excel['天气'] = Weather    excel['最低气温'] = Low    excel['最高气温'] = High    # print(excel)    return excel# 将8-15天日期格式改成与未来7天一致def modify_str(date):    date_1 = date.split('(')    date_2 = date_1[1].replace(')', '')    date_result = date_2 + '(' + date_1[0] + ')'    return date_result# 实现数据可视化def get_image(date, weather, high, low):    # 用来正常显示中文标签    plt.rcParams['font.sans-serif'] = ['SimHei']    # 用来正常显示负号    plt.rcParams['axes.unicode_minus'] = False    # 根据数据绘制图形    fig = plt.figure(dpi=128, figsize=(10, 6))    ax = fig.add_subplot(111)    plt.plot(date, high, c='red', alpha=0.5, marker='*')    plt.plot(date, low, c='blue', alpha=0.5, marker='o')    # 给图表中两条折线中间的部分上色    plt.fill_between(date, high, low, facecolor='blue', alpha=0.2)    # 设置图表格式    plt.title('邳州近15天天气预报', fontsize=24)    plt.xlabel('日期', fontsize=12)    # 绘制斜的标签,以免重叠    fig.autofmt_xdate()    plt.ylabel('气温', fontsize=12)    # 参数刻度线设置    plt.tick_params(axis='both', which='major', labelsize=10)    # 修改刻度    plt.xticks(date[::1])    # 对点进行标注,在最高气温点处标注当天的天气情况    for i in range(15):        ax.annotate(weather[i], xy=(date[i], high[i]))    # 显示图片    plt.show()def main():    base_url = 'http://www.weather.com.cn/weather1d/101190805.shtml'    url_7, url_8_15 = get_url(base_url)    data_1 = get_data_7(url_7)    data_2 = get_data_8_15(url_8_15)    data = pd.concat([data_1, data_2], axis=0, ignore_index=True)  # ignore_index=True实现两张表拼接,不保留原索引    get_image(data['日期'], data['天气'], data['最高气温'], data['最低气温'])if __name__ == '__main__':    main()

关于“python如何实现将天气预报可视化”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python如何实现将天气预报可视化

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python如何实现将天气预报可视化

这篇文章将为大家详细讲解有关python如何实现将天气预报可视化,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。结果展示其中:红线代表当天最高气温,蓝线代表最低气温,最高气温点上的标注为当天的天气情况。如果
2023-06-22

python怎么实现播报天气预报

要实现播报天气预报,可以使用Python的语音合成库,如pyttsx3或gTTS。下面是使用pyttsx3库的示例代码:```pythonimport pyttsx3def speak(text): # 初始化语音合成引擎 en
2023-08-31

Python怎么实现天气预报系统

这篇“Python怎么实现天气预报系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python怎么实现天气预报系统”文章吧
2023-07-04

Python+xlwings如何制作天气预报表

这篇文章主要为大家分析了Python+xlwings如何制作天气预报表的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“Python+xlwings如何制作天气
2023-06-28

Python实战之天气预报系统的实现

本文主要和大家介绍了如何用代码写一款Python版天气预报系统,是Tkinter界面化的,还会制作温度折线图跟气温饼图哦!感兴趣的小伙伴可以尝试一下
2022-12-19

Python怎么实现爬取天气数据并可视化分析

本篇内容主要讲解“Python怎么实现爬取天气数据并可视化分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么实现爬取天气数据并可视化分析”吧!核心功能设计总体来说,我们需要先对中
2023-06-29

Linux 命令行下如何实现浏览天气预报

这篇文章主要介绍“Linux 命令行下如何实现浏览天气预报”,在日常操作中,相信很多人在Linux 命令行下如何实现浏览天气预报问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux 命令行下如何实现浏览天
2023-06-12

如何使用python实现定时报天气

小编给大家分享一下如何使用python实现定时报天气,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一.分析爬取目标这里就不爬取股票的信息,我来爬一个天气预报的信息
2023-06-25

python如何制作的天气预报小工具

这篇文章主要介绍python如何制作的天气预报小工具,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一.准备工作不需要准备。二.预览1.启动启动以后自动定位所在城市,展示定位城市的天气。2.添加城市3.展示多个城市天气
2023-06-15

如何用PHP实现微信小程序的天气预报功能?

如何用PHP实现微信小程序的天气预报功能?随着微信小程序的流行,越来越多的开发者开始尝试在小程序中添加实用的功能,比如天气预报。在本文中,我们将学习如何使用PHP来实现微信小程序的天气预报功能,并提供代码示例。在开始之前,我们需要确保已经申
2023-10-27

PHP+AJAX如何实现无刷新就能返回天气预报数据

本篇内容介绍了“PHP+AJAX如何实现无刷新就能返回天气预报数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!用php来写一个天气预报的模
2023-06-08

Python中如何实现数据可视化

今天就跟大家聊聊有关Python中如何实现数据可视化,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。热力图热力图(Heat Map)是数据的一种矩阵表示方法,其中每个矩阵元素的值通过一
2023-06-16

Python如何爬取未来7天天气预报并存储在excel文档中

这期内容当中小编将会给大家带来有关Python如何爬取未来7天天气预报并存储在excel文档中,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。想知道你家乡未来7天气是如何,是好是坏?刮风还是下雨?别省得每天
2023-06-02

如何使用golang的Websocket开发实时天气预报功能

如何使用Golang的WebSocket开发实时天气预报功能引言:天气预报是人们日常生活中的重要信息之一,实时的天气预报能够帮助人们做出更好的生活规划。本文将介绍如何使用Golang的WebSocket开发一个实时的天气预报功能,并提供具体
如何使用golang的Websocket开发实时天气预报功能
2023-12-18

python如何实现实时可视化仪表盘

这篇文章主要介绍python如何实现实时可视化仪表盘,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python的数据类型有哪些?python的数据类型:1. 数字类型,包括int(整型)、long(长整型)和floa
2023-06-14

Python如何制作可视化报表

这篇文章给大家分享的是有关Python如何制作可视化报表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。可视化报表效果如下,水果销售情况一览~Dash是基于Plotly搭建的Dashbord框架,支持Python、
2023-06-29

pyecharts如何实现数据可视化

这篇文章将为大家详细讲解有关pyecharts如何实现数据可视化,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.概述pyecharts 是百度开源的,适用于数据可视化的工具,配置灵活,展示图表相对美观,
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录