近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 = None
        self.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() 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GStreamer源码安装1.24版本

从官网下载 1.24的源码包 https://gitlab.freedesktop.org/gstreamer/gstreamer/-/tree/1.24?ref_typeheads#getting-started ,尝试过使用git clone 的方式,但速度贼慢,就选择了下载源码包的方式安装依赖 sudo apt install libssl-dev g me…

Vue面试2

1.跨域问题以及如何解决跨域 跨域问题(Cross-Origin Resource Sharing, CORS)是指在浏览器中,当一个资源试图从一个不同的源请求另一个资源时所遇到的限制。这种限制是浏览器为了保护用户安全而实施的一种同源策略(Same-origin p…

毕业项目推荐:基于yolov8/yolo11的水稻叶片病害检测识别系统(python+卷积神经网络)

文章目录 概要一、整体资源介绍技术要点功能展示:功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出(xls格式)功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…

DeepSeek写贪吃蛇手机小游戏

DeepSeek写贪吃蛇手机小游戏 提问 根据提的要求,让DeepSeek整理的需求,进行提问,内容如下: 请生成一个包含以下功能的可运行移动端贪吃蛇H5文件: 要求 蛇和食物红点要清晰,不超过屏幕外 下方有暂停和重新…

C/C++跳动的爱心

系列文章 序号直达链接1C/C李峋同款跳动的爱心2C/C跳动的爱心3C/C经典爱心4C/C满屏飘字5C/C大雪纷飞6C/C炫酷烟花7C/C黑客帝国同款字母雨8C/C樱花树9C/C奥特曼10C/C精美圣诞树11C/C俄罗斯方块小游戏12C/C贪吃蛇小游戏13C/C孤单又灿烂的神14C/C闪烁的爱心15C/C哆啦A梦16C/C简单…

深入理解 JSP 与 Servlet:原理、交互及实战应用

一、引言 在 Java Web 开发领域,JSP(JavaServer Pages)和 Servlet 是两个至关重要的技术,它们共同构成了动态网页开发的基础。Servlet 作为服务器端的 Java 程序,负责处理客户端请求并生成响应;而 JSP 则是一种简化的 Servlet 开发方式,允许开发者在 HTML 页面中嵌入 J…

百度搜索,能否将DeepSeek变成“内功”?

最近,所有的云平台和主流APP都在努力接入DeepSeek。其中,搜索类APP与搜索引擎更是“战况激烈”。那么问题来了,接入DeepSeek已经变成了标准配置,到底应该如何做出差异化?接入DeepSeek这件事能不能实现11大于2的效果&am…

小智机器人CMakeLists编译文件解析

编译完成后,成功烧录! 这段代码是一个CMake脚本,用于配置和构建一个嵌入式项目,特别是针对ESP32系列芯片的项目。CMake是一个跨平台的构建系统,用于管理项目的编译过程。 set(SOURCES "audio_codecs/audio_code…

保姆级教程 | Office-Word中图目录制作及不显示图注引文的方法

背景 由于毕业论文的格式修改需要(没错,我终于要拿下PhD了。差不多四个月没更新,主要是①根据处理完的数据完成小论文撰写;②找工作...③完成学位论文的撰写。因而对建模和数据处理的需求不高,对有些时隔久远的博文具…

SVN把英文换中文

原文链接:SVN设置成中文版本 都是英文,换中文 Tortoise SVN 安装汉化教程(乌龟SVN) https://pan.quark.cn/s/cb6f2eee3f90 下载中文包

负载均衡集群( LVS 相关原理与集群构建 )

目录 1、LVS 相关原理 1.1、LVS集群的体系结构以及特点 1.1.1 LVS简介 1.1.2 LVS体系结构 1.1.3 LVS相关术语 1.1.4 LVS工作模式 1.1.5 LVS调度算法 1.2 LVS-DR集群介绍 1.2.1 LVS-DR模式工作原理 1.2.2 LVS-DR模式应用特点 1.2.3 LVS-DR模式ARP抑制 1.3 LVS – NA…

深度解析:使用 Headless 模式 ChromeDriver 进行无界面浏览器操作

一、问题背景(传统爬虫的痛点) 数据采集是现代网络爬虫技术的核心任务之一。然而,传统爬虫面临多重挑战,主要包括: 反爬机制:许多网站通过检测请求头、IP地址、Cookie等信息识别爬虫,进而限制…

[Android]APP自启动

APP添加自启动权限&#xff0c;重启设备后自动打开APP。 1.AndroidManifest.xml <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.an…

Kubernetes 使用 Kube-Prometheus 构建指标监控 +飞书告警

1 介绍 Prometheus Operator 为 Kubernetes 提供了对 Prometheus 机器相关监控组件的本地部署和管理方案&#xff0c;该项目的目的是为了简化和自动化基于 Prometheus 的监控栈配置&#xff0c;主要包括以下几个功能&#xff1a; Kubernetes 自定义资源&#xff1a;使用 Kube…

清华大学第五弹:《DeepSeek与AI幻觉》

作者&#xff1a;清华大学新闻与传播学院新媒体研究中心、人工智能学院&#xff08;新媒沈阳团队&#xff09; 时间&#xff1a;2025年2月 完整版下载地址&#xff1a;夸克网盘分享 一、AI幻觉的定义与分类 定义 学术定义&#xff1a;模型生成与事实不符、逻辑断裂或脱离上下…

鹰角基于 Flink + Paimon + Trino 构建湖仓一体化平台实践项目

摘要&#xff1a;本文整理自鹰角大数据开发工程师&#xff0c;Apache Hudi Contributor 朱正军老师在 Flink Forward Asia 2024 生产实践&#xff08;二&#xff09;专场中的分享。主要分为以下四个部分&#xff1a; 一、鹰角数据平台架构 二、数据湖选型 三、湖仓一体建设 四、…

deepin 下安装nvm(npm+node)

1、切换root用户&#xff0c;并更新系统 sudo su sudo apt update && apt upgrade -y 期间所有提示选择yes即可 2、切换回自己用户 su - fchsoft 3、安装git sudo apt install git -y 4、安装wget sudo apt install wget -y 5、安装nvm 创建文件夹 mkdir -p…

【JavaEE进阶】MyBatis通过注解实现增删改查

目录 &#x1f343;前言 &#x1f340;打印日志 &#x1f334;传递参数 &#x1f38b;增(Insert) &#x1f6a9;返回主键 &#x1f384;删(Delete) &#x1f332;改(Update) &#x1f333;查(Select) &#x1f6a9;起别名 &#x1f6a9;结果映射 &#x1f6a9;开启驼…

三、数据治理应用开发整体架构

1.数据治理应用开发整体架构概览 该架构图描绘了一个全面的数据治理应用开发平台&#xff0c;旨在为用户提供从数据调研、治理构建、资产管理到应用开发、运维监控等全生命周期的一体化服务。整体架构呈现出模块化、松耦合的特点&#xff0c;并强调低代码开发和业务中台能力。 …

C#项目05-猜数字多线程

本项目利用多线程&#xff0c;通过点击按钮猜数字&#xff0c; 知识点 线程 基本概念 进程:一组资源&#xff0c;构成一个正在运行的程序&#xff0c;这些资源包括地址空间、文件句柄以及程序启动需要的其他东西的载体。 线程:体现一个程序的真实执行情况&#xff0c; 线…