基于python的天气数据采集与可视化分析,对20个城市的天气适宜出行度分析

摘要

本项目旨在基于Python对20个城市的天气数据进行采集与可视化分析,以评估天气的适宜出行度。该分析通过四个主要指标进行量化,这些指标分别是天气状况良好率、空气质量优良率、气温适宜率和安全天气率。通过这些指标,我们能够有效地判断不同城市在特定时间段内的天气情况,从而为出行决策提供科学依据。

天气状况良好率是指出行时适宜露天行走的天气条件的比率。这包括晴天、阴天和多云天气,而排除降雨、降雪、沙尘和雾霾等不适宜的天气情况。通过分析历史天气数据,我们能够计算出各个城市在一定时间段内天气状况良好的天数占总天数的比例。

空气质量优良率是通过监测空气质量指数(AQI)来衡量的。AQI值小于等于100被视为空气质量良好,因此我们计算每个城市在分析期间内AQI小于等于100的天数比率。这一指标对出行的健康安全具有重要影响。

气温适宜率的计算基于每日气温的区间值。定义适宜温度为10至30度,因此我们的计算方法是将每日气温区间与适宜温度区间进行重合比对,计算重合部分占当日气温区间的比例。这一指标能够反映出适宜出行的温度环境。

安全天气率是指不出现对人类有危险的天气条件的比率。危险天气包括沙尘暴、严重的雨雪天气以及风速达到6级或以上的强风。通过监测这些天气状况,我们能够进一步评估出行的安全性。

将上述四个指标计算到手后,项目通过加权平均的方法综合评估天气适宜出行度。每个指标根据其在出行决策中的重要性赋予不同的权重,最终得出一个综合评分。这个评分将为用户提供一个简单明了的出行参考,使他们能够根据天气状况做出更明智的出行选择。

通过本项目的分析,我们不仅能够深入了解各城市的天气特点,还能帮助人们更好地规划出行,减少因天气导致的不便与风险。数据的可视化展示将使分析结果更加直观,便于受众理解与应用。未来,项目可以扩展至更多城市和时间段,进一步增强分析的全面性和准确性。

分析思路

本次分析对中国20个城市,在一年中不同时间的天气是否适宜出行做了量化,总结出一些有用的规律,包括:

  • 在冬季(12、1、2月),南方城市如广州、福州、昆明的气温适宜,天气状况良好,适宜出行。
  • 在夏季(6、7、8月),北方城市如银川、长春、呼和浩特等城市的气温适宜,天气状况良好,适宜出行。
  • 在4-5月以及9-10月份,大部分城市的出行天气适宜度都达到一年中的较好乃至最好的时期。

数据说明

数据通过python数据采集了2345天气网站包含了2019年1月1日到2023年12月31日的5年时间里,中国20个城市的每日天气指标,包括最低最高气温、晴雨情况、空气质量以及风速风向。这20个城市分别是武汉、杭州、天津、长春、广州、沈阳、南宁、北京、哈尔滨、南京、合肥、昆明、南昌、福州、太原、济南、海口、呼和浩特、西宁、银川。

其中呼和浩特、海口、西宁、银川四个城市在2019年9月21日到9月22日的天气数据存在数据缺失,但缺失数量较少,对本次分析影响不大。

主要代码如下:

# 新建一个excel工作簿对象
wb = Workbook()
sheet = wb.active
list1=[('杭州', '58457'), ('湖州', '58450'), ('嘉兴', '58452'), ('金华', '58549'), ('丽水', '58646'), ('宁波', '58465'), ('衢州', '58633'), ('绍兴', '58453'), ('台州', '58651'), ('温州', '58659'), ('舟山', '58477')]# 指定需要的城市id和月份
city_id_list = ["58457", "58457"]
month_list = ["8", "9"]
start_row = 0# 循环调用get_weather函数
for city_id in city_id_list:for month in month_list:start_row = get_weather(city_id, month, start_row)

天气适宜出行度怎么算?

天气适宜出行度是一个综合指标。其由下面四个指标的加权平均数:

  • 天气状况良好率:出现适宜露天行走的天气,包括晴天、阴天、多云天气(也就是不是雨雪沙雾霾的天气)等天气的比率。
  • 空气质量优良率:空气质量指数(AQI)<=100的比率。
  • 气温适宜率:设10-30度为适宜温度。因为每日气温是一个区间值,因此计算方式是气温区间和适宜温度的区间进行对比,计算重合的部分占当日气温区间的比率。
  • 安全天气率:不出现对人有危险的天气的比率。这里的危险天气包括沙雾霾天气、大/暴级别的雨雪天气、6级以上大风。之所以没有包括高温和低温,是因为已经包含在气温适宜率中了。

得到上述四个指标后,对其取加权平均数,即得到天气适宜出行度

其中$w_1,w_2,w_3,w_4$代表相应指标的权重,目前全部为1,即四个指标的权重相同。

环境准备

 python3.7及以上版本+pycharm+matplotlib库+requests库+pandas库

天气适宜出行度的分布

从中可以看到

  • 4-5月以及9-10月是各个城市普遍的出行好时候。而且刚好遇上五一节和国庆节。
  • 在冬季(12、1、2月),福州、广州、昆明等偏南方城市的天气适宜出行度较好。这些城市有着适宜的温度和更高比率的好天气。
  • 而在夏季(6、7、8月),因为高温和增加的降水等原因,许多南方城市也会转入不适宜出行的时节。而此时偏北方的银川、呼和浩特、长春等城市变得适宜出行。

一些旅游城市的情况:

  • 杭州最佳的出行月份是10月,其次是9月和4月。
  • 昆明最佳的出行月份是3月,其次是4月和11月。
  • 海口最佳的出行月份是12月,其次是2月和3月

天气适宜出行度聚类 

  • 上图中,天气出行适度越相似的城市和月份会聚集在一起。例如广州、海口、昆明、福州、南宁就有着较高的相似度。

一些城市的天气适宜出行度 

  • 昆明全年的天气都较适宜出行。不过6月到10月会进入雨水较多的时期,对于出行会造成影响。而冬季的气温不如春秋季适宜,所以最佳的出行时间是3-4月以及11月。
  • 从杭州的天气情况来看,最适宜出行的时间是4-5月和9-11月。冬季和夏季主要因为气温条件不太适宜,因此较不适宜出行。
  • 广州夏季降水较多、气温高,因而不太适宜出行。最佳的出行时间是10月份到2月份。
  • 哈尔滨最适宜出行的时间是夏天,这个时候气温适宜且空气质量较好。当然,在哈尔滨的冬季,其一些自然景观也是非常值得去体验的,但从天气角度看,不太适宜出行。
  • 银川在4月到9月之间气温进入较适宜的时期,且天气状态良好,空气质量较好,是出行的好时间。

特殊气象特征的出行选择 

考虑到一些出行需求是和特殊气象特征相关的,比如赏雪、观雨。因此下面对一些特殊气象的出行需求提供数据支持,其包括:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/468468.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv11实战宠物狗分类

本文采用YOLOv11作为核心算法框架&#xff0c;结合PyQt5构建用户界面&#xff0c;使用Python3进行开发。YOLOv11以其高效的特征提取能力&#xff0c;在多个图像分类任务中展现出卓越性能。本研究针对5种宠物狗数据集进行训练和优化&#xff0c;该数据集包含丰富的宠物狗图像样本…

电信网关配置管理系统 upload_channels.php 文件上传致RCE漏洞复现

0x01 产品简介 中国电信集团有限公司(英文名称“China Telecom”、简称“中国电信”)成立于2000年9月,是中国特大型国有通信企业、上海世博会全球合作伙伴。电信网关配置管理系统是一个用于管理和配置电信网络中网关设备的软件系统。它可以帮助网络管理员实现对网关设备的远…

Halcon LED灯带检测分享

目录 原图 检出图 示例代码 函数说明 代码 原图 检出图 示例代码 函数说明 LEDSensitivity : 0.6 LEDMinSize : 35 LEDMaxSize : 400 LEDMethod : 1 LEDType :1 LED (Image, LEDDefectTrans, LEDSensitivity, LEDMethod, LEDType, LEDMinSize, LEDMaxSize, R, G, B,…

Pytest-Bdd-Playwright 系列教程(7):使用测试代码生成辅助工具

Pytest-Bdd-Playwright 系列教程&#xff08;7&#xff09;&#xff1a;测试代码生成辅助工具的使用 前言一、代码生成辅助工具的设计思路1.1 功能概览1.2 适用人群 二、如何使用 pytest-bdd 代码生成器三、代码生成器的实际应用场景3.1 初学者的学习和实践3.2 大规模功能测试3…

【每日刷题】Day152

【每日刷题】Day152 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. LCR 176. 判断是否为平衡二叉树 - 力扣&#xff08;LeetCode&#xff09; 2. 最大子矩阵_牛客题霸…

【Linux】vmlinux、vmlinuz、zImage、bzImage 的区别

vmlinux vmlinux 是静态链接的可执行文件&#xff0c;但是无法直接加载启动&#xff0c;并且是非压缩的。 zImage and bzImage zImage 和 bzImage 都是 linux 的镜像&#xff08;image &#xff09;&#xff0c;前者用于老系统&#xff0c;后者用于新系统&#xff0c;都采用了…

MaxK B:基于 LLM 大语言模型的知识库问答系统!

推荐一个基于大模型的企业级知识库问答系统&#xff0c;支持管理企业知识库、对话问答、RAG 等功能。 企业知识管理的智能化革新在数字化时代&#xff0c;知识管理对于企业的重要性不言而喻。 MaxK B是一个基于 LLM 大语言模型的知识库问答系统&#xff0c;正是为了解决这一挑…

Spring Boot 集成JWT实现Token验证详解

文章目录 Spring Boot 集成JWT实现Token验证详解一、引言二、JWT和Token基础1、什么是Token2、什么是JWT3、JWT的结构4、JWT的工作原理 三、集成JWT1、引入JWT依赖2、创建Token工具类3、创建拦截器4、注册拦截器 四、总结 Spring Boot 集成JWT实现Token验证详解 一、引言 在现…

前端CSS3 渐变详解

文章目录 CSS3 渐变详解一、引言二、CSS3 渐变基础1、线性渐变1.1、基本线性渐变1.2、改变渐变方向 2、径向渐变2.1、基本径向渐变2.2、设置径向渐变的中心 三、高级渐变技巧1、重复渐变1.1、重复线性渐变1.2、重复径向渐变 四、总结 CSS3 渐变详解 一、引言 在现代网页设计中…

openpyxl处理Excel模板,带格式拷贝行和数据填入

本文中用openpyxl操作Excell 模板,进行行拷贝和数据填充. 主要涉及单元格格式的拷贝,合并单元格的拷贝,行高和列宽的处理. 将模板表格分为三部分,头部,中间循环填充部分,尾部.模板参数中设置头部高度,循环部分高度,剩余为尾部. 拷贝时先拷贝填充头部 ,然后根据数据循环拷贝填…

IEEE 1588:电信网络的精确时间协议 (PTP)

IEEE 1588&#xff1a;电信网络的精确时间协议 IEEE 1588 PTP 概述PTP 协议特征同步类型IEEE 1588 PTP 角色IEEE 1588 PTP 的工作原理PTP 设备类型PTP 消息类型事件消息一般信息 PTP 时钟类规范PTP 配置文件 https://www.techplayon.com/ieee-1588-precision-time-protocol-ptp…

DataFrame

目录 一、创建DataFrame二、Sql语法三、DSL语法四、RDD与DataFrame互相转换 一、创建DataFrame 在SparkSql中SparkSession是创建DataFrame和执行Sql的入口&#xff0c;创建DataFrame有三种方式&#xff1a; 通过Spark的数据源进行创建 从一个存在的RDD进行转换 从Hive Tabl…

Redis 高并发分布式锁实战

目录 环境准备 一 . Redis 安装 二&#xff1a;Spring boot 项目准备 三&#xff1a;nginx 安装 四&#xff1a;Jmeter 下载和配置 案例实战 优化一&#xff1a;加 synchronized 锁 优化二&#xff1a;使用 redis 的 setnx 实现分布式锁 优化三&#xff1a;使用 Lua 脚本…

参数估计理论

估计理论的主要任务是在某种信号假设下&#xff0c;估算该信号中某个参数&#xff08;比如幅度、相位、达到时间&#xff09;的具体取值。 参数估计&#xff1a;先假定研究的问题具有某种数学模型&#xff0c; 如正态分布&#xff0c;二项分布&#xff0c;再用已知类别的学习样…

[vulnhub] DarkHole: 2

https://www.vulnhub.com/entry/darkhole-2,740/ 端口扫描主机发现 探测存活主机&#xff0c;185是靶机 # nmap -sP 192.168.75.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-08 18:02 CST Nmap scan report for 192.168.75.1 Host is up (0.…

【温度表达转化】

【温度表达转化】 C语言代码C代码Java代码Python代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 利用公式 C5∗(F−32)/9 &#xff08;其中C表示摄氏温度&#xff0c;F表示华氏温度&#xff09; 进行计算转化。 输出 输出一行&#x…

【Promise】JS 异步之宏队列与微队列

文章目录 1 原理图2 说明3 相关面试题3.1 面试题13.2 面试题23.3 面试题33.4 面试题4 1 原理图 2 说明 JS 中用来存储待执行回调函数的队列包含 2 个不同特定的队列&#xff1a;宏队列和微队列。宏队列&#xff1a;用来保存待执行的宏任务(回调)&#xff0c;比如&#xff1a;定…

【Linux】Linux入门实操——vim、目录结构、远程登录、重启注销

一、Linux 概述 1. 应用领域 服务器领域 linux在服务器领域是最强的&#xff0c;因为它免费、开源、稳定。 嵌入式领域 它的内核最小可以达到几百KB, 可根据需求对软件剪裁&#xff0c;近些年在嵌入式领域得到了很大的应用。 主要应用&#xff1a;机顶盒、数字电视、网络…

ubuntu下aarch64-linux-gnu(交叉编译) gdb/gdbserver(二)

ubuntu下aarch64-linux-gnu(交叉编译) gdb/gdbserver&#xff08;二&#xff09; 本教程作为gdb/gdbserver编译安装教程的一个补充&#xff0c;教会大家如何使用gdb/gdbserver进行远程调试。 如上图所示&#xff0c;我们需要将编译后的gdbserver上传至目标设备&#xff0c;其上…

Flutter错误: uses-sdk:minSdkVersion 16 cannot be smaller than version 21 declared

前言 今天要做蓝牙通信的功能&#xff0c;我使用了flutter_reactive_ble这个库&#xff0c;但是在运行的时候发现一下错误 Launching lib/main.dart on AQM AL10 in debug mode... /Users/macbook/Desktop/test/flutter/my_app/android/app/src/debug/AndroidManifest.xml Err…