近10年气象分析(深度学习)

这是一个气象数据分析程序,主要用于分析和可视化气象数据。以下是该文件的主要功能:

1. 数据加载

  • 在线数据:尝试从 GitHub 加载气象数据。
  • 示例数据:如果无法加载在线数据,程序会自动生成示例数据。

2. 数据分析

  • 年度趋势分析:计算并绘制温度、湿度、降水量和风速的年度趋势图。
  • 季节性模式分析:分析并绘制温度、湿度、降水量和风速的季节性变化图。
  • 相关性分析:计算并绘制气象要素之间的相关性热图。

3. 数据可视化

  • 趋势图:使用 Matplotlib 绘制年度趋势图。
  • 柱状图:使用 Seaborn 绘制季节性模式柱状图。
  • 热图:使用 Seaborn 绘制相关性热图。

4. 报告生成

  • 基本统计信息:计算并显示温度、湿度、降水量和风速的基本统计信息。
  • 极端天气事件统计:计算并显示高温天数和暴雨天数。

5. 技术细节

  • 数据生成:使用 NumPy 生成随机气象数据,包括温度、湿度、降水量和风速。
  • 数据处理:使用 Pandas 进行数据分组和聚合计算。
  • 可视化:使用 Matplotlib 和 Seaborn 进行数据可视化。

6. 运行流程

1. 程序启动,尝试加载在线数据,如果失败则生成示例数据。

2. 分析年度趋势,绘制趋势图。

3. 分析季节性模式,绘制柱状图。

  • 分析气象要素之间的相关性,绘制热图。

5. 生成并显示分析报告。

7. 依赖库

  • Pandas:用于数据处理和分析。
  • NumPy:用于数值计算和随机数据生成。
  • Matplotlib:用于数据可视化。
  • Seaborn:用于高级数据可视化。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from datetime import datetime# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False     # 用来正常显示负号class WeatherAnalyzer:def __init__(self):"""初始化天气分析器"""# 设置基本的图表样式sns.set_theme()  # 使用 seaborn 默认主题sns.set_style("whitegrid", {'font.sans-serif': ['SimHei', 'DejaVu Sans']})self.df = Noneself.load_data()def load_data(self):"""加载气象数据"""try:# 尝试从在线源加载数据url = "https://raw.githubusercontent.com/datasets/weather-data/master/weather.csv"self.df = pd.read_csv(url)print("在线数据加载成功!")except:print("无法从在线源加载数据,尝试加载示例数据...")# 创建示例数据self.create_sample_data()def create_sample_data(self):"""创建示例气象数据"""# 创建过去10年的日期范围dates = pd.date_range(start='2013-01-01', end='2023-12-31', freq='D')# 生成随机气象数据np.random.seed(42)  # 设置随机种子以保证可重复性self.df = pd.DataFrame({'date': dates,'temperature': np.random.normal(20, 8, len(dates)),  # 温度,均值20,标准差8'humidity': np.random.normal(60, 15, len(dates)),    # 湿度,均值60,标准差15'precipitation': np.random.exponential(2, len(dates)), # 降水量,指数分布'wind_speed': np.random.normal(10, 3, len(dates))    # 风速,均值10,标准差3})# 添加季节信息self.df['season'] = pd.to_datetime(self.df['date']).dt.month.map({12: '冬季', 1: '冬季', 2: '冬季',3: '春季', 4: '春季', 5: '春季',6: '夏季', 7: '夏季', 8: '夏季',9: '秋季', 10: '秋季', 11: '秋季'})print("示例数据创建成功!")def analyze_trends(self):"""分析气象趋势"""# 计算年度平均值yearly_avg = self.df.groupby(pd.to_datetime(self.df['date']).dt.year).agg({'temperature': 'mean','humidity': 'mean','precipitation': 'sum','wind_speed': 'mean'})# 绘制年度趋势图plt.figure(figsize=(15, 10))# 温度趋势plt.subplot(2, 2, 1)plt.plot(yearly_avg.index, yearly_avg['temperature'], marker='o')plt.title('年平均温度趋势')plt.xlabel('年份')plt.ylabel('温度 (°C)')# 湿度趋势plt.subplot(2, 2, 2)plt.plot(yearly_avg.index, yearly_avg['humidity'], marker='o', color='green')plt.title('年平均湿度趋势')plt.xlabel('年份')plt.ylabel('湿度 (%)')# 降水量趋势plt.subplot(2, 2, 3)plt.plot(yearly_avg.index, yearly_avg['precipitation'], marker='o', color='blue')plt.title('年总降水量趋势')plt.xlabel('年份')plt.ylabel('降水量 (mm)')# 风速趋势plt.subplot(2, 2, 4)plt.plot(yearly_avg.index, yearly_avg['wind_speed'], marker='o', color='purple')plt.title('年平均风速趋势')plt.xlabel('年份')plt.ylabel('风速 (m/s)')plt.tight_layout()plt.show()def analyze_seasonal_patterns(self):"""分析季节性模式"""# 计算季节平均值seasonal_avg = self.df.groupby('season').agg({'temperature': 'mean','humidity': 'mean','precipitation': 'mean','wind_speed': 'mean'})# 设置季节顺序season_order = ['春季', '夏季', '秋季', '冬季']seasonal_avg = seasonal_avg.reindex(season_order)# 绘制季节性模式图plt.figure(figsize=(15, 10))# 温度的季节性变化plt.subplot(2, 2, 1)sns.barplot(x=seasonal_avg.index, y=seasonal_avg['temperature'])plt.title('季节平均温度')plt.ylabel('温度 (°C)')# 湿度的季节性变化plt.subplot(2, 2, 2)sns.barplot(x=seasonal_avg.index, y=seasonal_avg['humidity'], color='green')plt.title('季节平均湿度')plt.ylabel('湿度 (%)')# 降水量的季节性变化plt.subplot(2, 2, 3)sns.barplot(x=seasonal_avg.index, y=seasonal_avg['precipitation'], color='blue')plt.title('季节平均降水量')plt.ylabel('降水量 (mm)')# 风速的季节性变化plt.subplot(2, 2, 4)sns.barplot(x=seasonal_avg.index, y=seasonal_avg['wind_speed'], color='purple')plt.title('季节平均风速')plt.ylabel('风速 (m/s)')plt.tight_layout()plt.show()def analyze_correlations(self):"""分析气象要素之间的相关性"""# 计算相关系数矩阵corr_matrix = self.df[['temperature', 'humidity', 'precipitation', 'wind_speed']].corr()# 绘制相关性热图plt.figure(figsize=(10, 8))sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', center=0)plt.title('气象要素相关性分析')plt.show()def generate_report(self):"""生成分析报告"""# 计算基本统计量stats = self.df.describe()print("\n=== 气象数据分析报告 ===")print("\n基本统计信息:")print(stats)# 计算极端天气事件print("\n极端天气事件统计:")extreme_temp = len(self.df[self.df['temperature'] > stats['temperature']['75%'] + 1.5 * (stats['temperature']['75%'] - stats['temperature']['25%'])])extreme_precip = len(self.df[self.df['precipitation'] > stats['precipitation']['75%'] + 1.5 * (stats['precipitation']['75%'] - stats['precipitation']['25%'])])print(f"高温天数: {extreme_temp}")print(f"暴雨天数: {extreme_precip}")def main():print("开始气象数据分析...")try:# 创建分析器实例analyzer = WeatherAnalyzer()# 分析趋势print("\n分析年度趋势...")analyzer.analyze_trends()# 分析季节性模式print("\n分析季节性模式...")analyzer.analyze_seasonal_patterns()# 分析相关性print("\n分析气象要素相关性...")analyzer.analyze_correlations()# 生成报告analyzer.generate_report()except Exception as e:print(f"分析过程中出现错误: {str(e)}")if __name__ == "__main__":main() 

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

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

相关文章

DeepSeek最新开源动态:核心技术公布

2月21日午间,DeepSeek在社交平台X发文称,从下周开始,他们将开源5个代码库,以完全透明的方式与全球开发者社区分享他们的研究进展。并将这一计划定义为“Open Source Week”。 DeepSeek表示,即将开源的代码库是他们在线…

wps中zotero插件消失,解决每次都需要重新开问题

参考 查看zotero目录 D:\zotero\integration\word-for-windows 加载项点击 dotm即可 长期解决 把dom 复制到 C:\Users\89735\AppData\Roaming\kingsoft\office6\templates\wps\zh_CN还是每次都需要重新开的话 重新加载一下

洛谷B3629

B3629 吃冰棍 - 洛谷 代码区&#xff1a; #include<algorithm> #include<iostream>using namespace std; int main(){int n,ans;cin >> n;for(int in/2;i<n;i){int ti;ans0;while(t>3){t-3;ans3;t;}if(anst>n){cout << i;return 0;}}return…

VMware安装Centos 9虚拟机+设置共享文件夹+远程登录

一、安装背景 工作需要安装一台CentOS-Stream-9的机器环境&#xff0c;所以一开始的安装准备工作有&#xff1a; vmware版本&#xff1a;VMware Workstation 16 镜像版本&#xff1a;CentOS-Stream-9-latest-x86_64-dvd1.iso &#xff08;kernel-5.14.0&#xff09; …

[ProtoBuf] 介绍 | 保姆级win/linux安装教程

目录 一、序列化概念 二、ProtoBuf 是什么 三、ProtoBuf 的使用特点 ProtoBuf 在不同操作系统下的安装 一、ProtoBuf 在 Windows 下的安装 二、ProtoBuf 在 Linux 下的安装 三、检查是否安装成功 安装教程 可以直接目录跳转到后面 笔记参考&#xff1a;官方文档 一、序…

element ui的select选择框

我们首先先试一下&#xff0c;这个东西怎么玩的 <el-select v-model"select" change"changeSelect"><el-option value"香蕉"></el-option><el-option value"菠萝"></el-option><el-option value&quo…

51单片机学习之旅——定时器

打开软件 1与其它等于其它&#xff0c;0与其它等于0 1或其它等于1&#xff0c;0或其它等于其它 TMODTMOD&0xF0;//0xF01111 0000进行与操作&#xff0c;高四位保持&#xff0c;低四位清零&#xff0c;高四位定时器1&#xff0c;低四位定时器0 TMODTMOD|0x01;//0x010000 0…

【跟我学YOLO】(1)YOLO12:以注意力为中心的物体检测

欢迎关注『跟我学 YOLO』系列 【跟我学YOLO】&#xff08;1&#xff09;YOLO12&#xff1a;以注意力为中心的物体检测] 0. YOLOv12 简介0.1 YOLO12 论文下载0.2 YOLO12 的主要改进0.3 YOLO12 支持的任务和性能0.4 论文摘要 1. 背景介绍2. 相关的工作3. 方法3.1 效率分析3.2 区域…

基于Martin的全国基础底图实现

概述 前面有文章基于Martin实现MapboxGL自定义底图分享了Martin的使用&#xff0c;本文使用网络收集的数据实现了全国基础数据的收集和基础底图。 实现后效果 实现 1. 数据准备 实例中包含如下数据&#xff1a; 边界线和九段线数据省边界面数据省会城市点数据市边界面数据…

网页版的俄罗斯方块

1、新建一个txt文件 2、打开后将代码复制进去保存 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>俄…

HTML之JavaScript DOM简介

HTML之JavaScript DOM简介 DOM对象是一个树形对象 DOM树上的结点类型分类&#xff1a; 元素节点 element 标签属性节点 attribute 属性文本节点 text 双标签中间的文本 HTML代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UT…

【MATLAB例程】RSSI/PLE定位与卡尔曼滤波NLOS抑制算法,附完整代码

本 MATLAB 代码实现了基于接收信号强度指示(RSSI)和路径损耗模型(PLE)的定位算法,并结合卡尔曼滤波技术进行非视距(NLOS)干扰抑制。通过模拟真实运动轨迹,代码展示了如何在存在NLOS干扰的情况下进行有效的定位。订阅专栏后,可阅读完整代码,可直接运行 文章目录 运行结…

使用IDEA提交SpringBoot项目到Gitee上

登录Gitee并新建仓库 创建本地仓库 提交本地代码到本地仓库 提交本地代码到远程仓库

LLM Agent:PaSa

阅读原文 LLM Agent&#xff1a;PaSa 以 PaSa&#xff08;Paper Search&#xff09;为例&#xff0c;接下来将介绍由 LLM 驱动的先进的论文搜索智能体。PaSa 能够自主做出一系列决策&#xff0c;包括调用搜索工具、阅读论文以及选择相关参考文献&#xff0c;最终为复杂的学术…

Linux提权之脏牛Dirty COW CVE-2016-5195 (四)

CVE-2016-5195&#xff08;Dirty Cow脏牛&#xff09; 脏牛提权的利用方式不同于其他的内核溢出提权&#xff0c;这里单独记录 脏牛是一个非常经典的内核提权漏洞&#xff0c;存在Linux内核中已经有长达9年的时间&#xff0c;在2007年发布的Linux内核版本中就已经存在此漏洞&…

基于SpringBoot+vue+uniapp的智慧旅游小程序+LW示例参考

系列文章目录 1.基于SSM的洗衣房管理系统原生微信小程序LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统LW参考示例 3.基于SpringBootVue的企业人事管理系统LW参考示例 4.基于SSM的高校实验室管理系统LW参考示例 5.基于SpringBoot的二手数码回收系统原生微信小程序LW参考示…

【微服务】深入解析spring aop原理

目录 一、前言 二、AOP 概述 2.1 什么是AOP 2.2 AOP中的一些概念 2.2.1 aop通知类型 2.3 AOP实现原理 2.3.1 aop中的代理实现 2.4 静态代理与动态代理 2.4.1 静态代理实现 三、 jdk动态代理与cglib代理 3.1 jdk动态代理 3.1.1 jdk动态代理模拟实现 3.2 CGLIB 代理…

vxe-table 如何实现跟 Excel 一样的数值或金额的负数自动显示红色字体

vxe-table 如何实现跟 Excel 一样的数值或金额的负数自动显示红色字体&#xff0c;当输入的值为负数时&#xff0c;会自动显示红色字体&#xff0c;对于数值或者金额输入时该功能就非常有用了。 查看官网&#xff1a;https://vxetable.cn gitbub&#xff1a;https://github.co…

C++:dfs,bfs各两则

1.木棒 167. 木棒 - AcWing题库 乔治拿来一组等长的木棒&#xff0c;将它们随机地砍断&#xff0c;使得每一节木棍的长度都不超过 5050 个长度单位。 然后他又想把这些木棍恢复到为裁截前的状态&#xff0c;但忘记了初始时有多少木棒以及木棒的初始长度。 请你设计一个程序…

MATLAB学习之旅:从入门到基础实践

在当今科技飞速发展的时代,MATLAB作为一款强大的数学软件,犹如一把神奇的钥匙,能够打开众多领域的大门。无论是工程计算、数据分析,还是算法开发、可视化呈现,MATLAB都展现出了无与伦比的魅力。今天,就让我们踏上这段奇妙的MATLAB学习之旅,从最基础的部分开始,逐步探索…