基于Python分析气象数据教程-2

2023-11-08

一、前言

在这个博客中,我们正在对数据集是否进行假设检验,并试图证明该假设是否正确。 我们也在做一些数据清理技术、数据可视化和假设检验。在之前的博客中我们已经介绍了气象数据的基本处理。

二、相关库的引入

Numpy
Pandas
Matplotlib
Seaborn

三、代码实现

假设是在监督机器学习中最能描述目标的函数。 用简单的语言来说,我们创建一个函数并尝试我们的输入和目标,如果匹配则我们的假设被接受,否则它被拒绝。

该项目的假设:零假设 H0 是“表观温度和湿度在 10 年的数据中每月比较表明由于全球变暖而增加”

表观温度:表观温度是由气温、相对湿度和风速的综合影响引起的人类感知的等效温度。 该措施最常用于感知室外温度。

湿度:湿度是空气中水蒸气的量。 如果空气中有很多水蒸气,湿度就会很高

3.1 数据介绍

该数据集记录了从 2006–04–01 00:00:00.000 +0200 到 2016–09–09 23:00:00.000 +0200 的过去 10 年的每小时温度。 对应北欧国家芬兰。 您可以从此下载数据集

数据样式如下:

如您所见,我们共有 10 个字段,例如摘要、降水类型、温度等。

我们只使用表观温度和湿度场,因为我们需要证明我们的假设。

检查空值:

在这里我们可以看到总共有 517 个空值。

数据集中共有 96453 行。 其中只有 514 行包含空值,因此我们可以简单地删除那些包含空值的行。

new_data = data.dropna() # remove rows which contained null value

3.2 数据重采样

在这个例子中,我们可以通过两种方法对数据进行重采样。

  • 使用 Pandas 的 Resample 函数

  • 手动创建函数

这两种方法最终都会使我们得到相同的结果。 我刚刚发布了使用该函数手动重新采样的代码。

在这个函数中,new_data 还有两个额外的列 year 和 month,我们也将为第一种方法创建它们。

def find_average_monthly_AT_or_Humidity(what_for):
    avg_data_tempreature_monthly = {}
    for year in range(2006,2017):
        for month in range(1,13):
            result = list(new_data.loc[(new_data['month'] == month)&(new_data['year']==year) , :][what_for].values)
            if month not in avg_data_tempreature_monthly:
                avg_data_tempreature_monthly[month] = [np.mean(result)]
            else:
                avg_data_tempreature_monthly[month].append(np.mean(result))
    return avg_data_tempreature_monthly

所以上面的这个函数返回一个字典,其中键作为月份,值作为特定月份过去 10 年平均值的列表。

pandas重采样功能:

resampled_data = new_data.resample('M').mean() 
# resample accroading to Month end ('M')

上述函数通过对其上的值进行平均将每小时数据转换为每月数据。“M”称为 DateOffset。 这意味着月底。

现在我们已经根据月份对数据进行了重新采样。 正如您在格式化日期索引中看到的那样。 第一个值是 2005 年 12 月 31 日,之后是 2006 年 1 月 1 日,依此类推。

出于分析目的,我们还创建了两个额外的列。 年和月。

resampled_data['month'] = resampled_data.index.month
resampled_data['year'] = resampled_data.index.year

我们分析所有 12 个月的表观温度的月度数据。

在这里,我只展示四月和六月。

3.3 数据可视化

(1)对于四月

我们创建了两个 DataFrame AT(表观温度)和 H(湿度),它们的值仅基于 2006-2016 年。

两个数据框都有一个额外的列。 年

  • 湿度条形图(仅适用于四月):

sns.barplot(H['year'] , H[4])
plt.title('Humidity For April Month')
plt.show()

我们可以看到 2006-2016 年的平均湿度相同。 我们有 2006 年的最大湿度和 2007 年的最小湿度。

  • 表观温度条形图(仅适用于四月):

sns.barplot(AT['year'] , AT[4])
plt.title('Apparent Temperature For April Month')
plt.show()

我们可以看到 2015 年的一些不确定性,我们的 AT 最低且几乎等于最低湿度。 之后我们可以看到 2009 年的不确定性,我们有最大 AT 但没有最小湿度。

湿度和表观温度是相反的建议。

  • 四月份的最终图表

AT_monthly_average 和 Humidity_monthly_average 是两个字典,其中包含 2006-2016 年的月度数据。 两个词典都有作为月份索引的键(比如四月索引是 4)。

plt.plot(range(2006,2017),AT_monthly_average[4] , label = 'Apparent Temperature(C)' , color = 'red')
plt.plot(range(2006,2017),Humidity_monthly_average[4] , label = 'Humidity')
plt.legend()
plt.title('Apparent Temperature vs Humidity for April Month')
plt.show()

由此可见,2009年的表观温度最高,然后又出现波动。 在 2015 年,它变得最低,然后再次增加。 所以我们可以明确地说,在过去的 10 年里,由于全球变暖的加剧,表观温度是不确定的。

(2)对于六月

大约每个月,我们都会看到过去 10 年温度数据的一些不确定性。

作为另一个例子,我们现在可以看到 6 月份的数据和图表。(所有代码与上面解释的相同。)

  • 湿度条形图(仅适用于六月):

六月的平均湿度也相同。 我们可以看到 2010 年的最大湿度和 2014 年的最小湿度。

  • 表观温度条形图(仅适用于 6 月):

正如我们上面提到的,我们在图中看到了不确定性。 例如,对于 2010 年,我们有最高的 AT 但不是最低的湿度。 根据图表,我们可以看到 2006 年和 2009 年的最低 AT,但不是那几年的最高湿度。

  • 六月份的最终图表:

2008 年的表观温度较低,此后逐渐上升,2012 年达到最大值,之后再次下降。 因此,由于全球变暖,我们可以清楚地看到 6 月份的不确定性。

四、结论

在这 10 年的数据集中,我们可以看到每年增加表观温度和湿度是不相关的。 全年月平均湿度相同,但表观温度不同。 全球变暖正在影响地球的温度,因此我们在这些数据中看到了一些不确定性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于Python分析气象数据教程-2 的相关文章

  • Spark 请求最大计数

    我是 Spark 的初学者 我尝试请求允许我检索最常访问的网页 我的要求如下 mostPopularWebPageDF logDF groupBy webPage agg functions count webPage alias cntW
  • 如何正确地将 MIDI 刻度转换为毫秒?

    我正在尝试将 MIDI 刻度 增量时间转换为毫秒 并且已经找到了一些有用的资源 MIDI Delta 时间刻度到秒 http www lastrayofhope co uk 2009 12 23 midi delta time ticks
  • Python模块可以访问英语词典,包括单词的定义[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 python 模块 它可以帮助我从英语词典中获取单词的定义 当然有enchant 这可以帮助我检查该单词是否存在于英语中
  • 如何使用 Plotly 中的直方图将所有离群值分入一个分箱?

    所以问题是 我可以在 Plotly 中绘制直方图 其中所有大于某个阈值的值都将被分组到一个箱中吗 所需的输出 但使用标准情节Histogram类我只能得到这个输出 import pandas as pd from plotly import
  • Argparse nargs="+" 正在吃位置参数

    这是我的解析器配置的一小部分 parser add argument infile help The file to be imported type argparse FileType r default sys stdin parser
  • Pandas 中允许重复列

    我将一个大的 CSV 包含股票财务数据 文件分割成更小的块 CSV 文件的格式不同 像 Excel 数据透视表之类的东西 第一列的前几行包含一些标题 公司名称 ID 等在以下列中重复 因为一家公司有多个属性 而不是一家公司只有一栏 在前几行
  • 忽略 Mercurial hook 中的某些 Mercurial 命令

    我有一个像这样的善变钩子 hooks pretxncommit myhook python path to file myhook 代码如下所示 def myhook ui repo kwargs do some stuff 但在我的例子中
  • Pandas 数据帧到 numpy 数组 [重复]

    这个问题在这里已经有答案了 我对 Python 很陌生 经验也很少 我已经设法通过复制 粘贴和替换我拥有的数据来使一些代码正常工作 但是我一直在寻找如何从数据框中选择数据 但无法理解这些示例并替换我自己的数据 总体目标 如果有人真的可以帮助
  • 对图像块进行多重处理

    我有一个函数必须循环遍历图像的各个像素并计算一些几何形状 此函数需要很长时间才能运行 在 24 兆像素图像上大约需要 5 小时 但似乎应该很容易在多个内核上并行运行 然而 我一生都找不到一个有据可查 解释充分的例子来使用 Multiproc
  • Python urllib.request.urlopen:AttributeError:'bytes'对象没有属性'data'

    我正在使用 Python 3 并尝试连接到dstk 我收到错误urllib包裹 我对SO进行了很多研究 但找不到与这个问题类似的东西 api url self api base street2coordinates api body jso
  • 如何解决使用 Spark 从 S3 重新分区大量数据时从内存中逐出缓存的表分区元数据的问题?

    在尝试从 S3 重新分区数据帧时 我收到一个一般错误 Caused by org apache spark SparkException Job aborted due to stage failure Task 33 in stage 1
  • 首先对列表中最长的项目进行排序

    我正在使用 lambda 来修改排序的行为 sorted list key lambda item item lower len item 对包含元素的列表进行排序A1 A2 A3 A B1 B2 B3 B 结果是A A1 A2 A3 B
  • Pandas 根据 diff 列形成簇

    我正在尝试使用 Pandas 根据表示时间 以秒为单位 的列中的差异来消除数据框中的一些接近重复项 例如 import pandas as pd numpy as np df pd DataFrame 1200 1201 1233 1555
  • 将 2D NumPy 数组按元素相乘并求和

    我想知道是否有一种更快的方法 专用 NumPy 函数来执行 2D NumPy 数组的元素乘法 然后对所有元素求和 我目前使用np sum np multiply A B 其中 A B 是相同维度的 NumPy 数组m x n 您可以使用np
  • 创建嵌套字典单行

    您好 我有三个列表 我想使用一行创建一个三级嵌套字典 i e l1 a b l2 1 2 3 l3 d e 我想创建以下嵌套字典 nd a 1 d 0 e 0 2 d 0 e 0 3 d 0 e 0 b a 1 d 0 e 0 2 d 0
  • 如何为每个屏幕添加自己的 .py 和 .kv 文件?

    我想为每个屏幕都有一个单独的 py 和 kv 文件 应通过 main py main kv 中的 ScreenManager 选择屏幕 设计应从文件 screen X kv 加载 类等应从文件 screen X py 加载 Screens
  • 您可以将操作直接应用于map/reduce/filter 中的参数吗?

    map and filter通常可以与列表理解互换 但是reduce并不那么容易被交换map and filter 此外 在某些情况下我仍然更喜欢函数语法 但是 当您需要对参数本身进行操作时 我发现自己正在经历语法体操 最终必须编写整个函数
  • 在Python中按属性获取对象列表中的索引

    我有具有属性 id 的对象列表 我想找到具有特定 id 的对象的索引 我写了这样的东西 index 1 for i in range len my list if my list i id specific id index i break
  • Elastic Beanstalk 中的 enum34 问题

    我正在尝试在 Elastic Beanstalk 中设置 django 环境 当我尝试通过requirements txt 文件安装时 我遇到了python3 6 问题 File opt python run venv bin pip li
  • Scrapy Spider不存储状态(持久状态)

    您好 有一个基本的蜘蛛 可以运行以获取给定域上的所有链接 我想确保它保持其状态 以便它可以从离开的位置恢复 我已按照给定的网址进行操作http doc scrapy org en latest topics jobs html http d

随机推荐

  • 1254 统计封闭岛屿的数目(dfs)

    1 问题描述 有一个二维矩阵 grid 每个位置要么是陆地 记号为 0 要么是水域 记号为 1 我们从一块陆地出发 每次可以往上下左右 4 个方向相邻区域走 能走到的所有陆地区域 我们将其称为一座 岛屿 如果一座岛屿 完全 由水域包围 即陆
  • AJAX异步请求&JSON数据格式

    目录 前言 1 AJAX的实现方式 1 1原生的js实现方式 1 2JQuery实现方式 2 1语法 3 JSON数据和Java对象的相互转换 3 1将JSON转换为Java对象 3 2将Java对象转换为JSON 前言 AJAX ASyn
  • 重启虚拟机后dhclient进程未运行解决办法

    https www cnblogs com jiawei2527 p 10778938 html 问题分析 重启虚拟机后 dhclient进程未运行的根因通常为 1 NetworkManager未开启自启动导致的dhclient进程未运行
  • 计算机组成原理--基于Logisim的奇偶校验电路实验的应用(超详细/设计/实验/作业/练习)

    目录 课程名 计算机组成原理 内容 作用 设计 实验 作业 练习 学习 基于Logisim的奇偶校验电路实验 一 前言 二 环境与设备 三 内容 四 结果与分析 课程名 计算机组成原理 内容 作用 设计 实验 作业 练习 学习 基于Logi
  • 实现整数堆栈算法的Java程序

    实现整数堆栈算法的Java程序 堆栈 Stack 是一种常用的数据结构 它遵循先进后出 Last In First Out LIFO 的原则 在Java中 我们可以使用整数堆栈算法来实现一个基本的堆栈数据结构 本文将演示如何使用Java编写
  • vue 图片下载到本地,图片保存到本地

    必须同源 访问的网站域名与服务器域名一致 才能下载 downs var alink document createElement a alink href this shop shoppic url alink download pic 图
  • 没有libelf.h libdw.h

    执行如下安装 apt get install libdw dev
  • editview只输入英文_android使用正则表达式控制EditText只能输入数字和英文

    在方法中加载 edt addTextChangedListener new SearchWather edt 新建类 SearchWather java import java util regex Matcher import java
  • 企业微信获取用户信息响应40029(微信小程序与公众号出现类似问题应该是同样的原因)

    企业微信获取用户信息响应40029 在对接企业微信的时候需要通过code去获取userId 但是会返回40029的error码 经过测试与验证原因是访问地址 https open weixin qq com connect oauth2 a
  • 【Vue学习笔记】export ‘default‘ (imported as ‘Vue‘) was not found in ‘vue‘问题解决

    export default imported as Vue was not found in vue 安装了5 几的vuecli src plugins element js里用到了 import Vue from vue npm run
  • 绝无仅有的SpringBoot+Vue前后端分离项目《盈利宝》

    每天都在制造矛盾并解决矛盾的路上 程序员的主要矛盾 不是书和资料多不多的矛盾 而是学着学着发现知识又更新了 时间就像一台永不停歇的永动机 向前不停地运作 年初的flag渐行渐远 管他前浪 还是后浪 能浪的浪 才是好浪 今天带你解锁 Spri
  • gitlab操作

    1 配置ssh 点击访问 2 创建新分支与切换新分支 git branch 新分支名 创建 git checkout 新分支名 切换到新分支 3 查看当前分支 git branch 所指的就是当前所在分支 4 本地删除文件后与远程git同步
  • JConsole&VisualVM监控总结

    简介 JConsole 以下写作jconsole VisualVM 以下写作jvisualvm 都是比较好的JVM调优工具 且都为JDK自带 可在命令行直接启动 监控示例 Server端 需要监控的主机 配置 设置临时JAVA参数 expo
  • 管理用户账号

    目录 Windows平台用户账号介绍 管理本地用户账号 用户配置文件 演示配置漫游用户配置文件 强制漫游配置说明 管理本地组 组的操作 案例分析 Windows平台用户账号介绍 在Windows系统中 每当用户需要登录到系统时就需要对用户进
  • 复杂grid 支持多表头,固定表头,冻结列,合并行

    该组件支持三种渲染形态 因为有些简单的表格没必要去做太复杂的处理 支持自适应页面宽度和可以设置固定宽度 理论上是所有浏览器都支持 但是因为我引用了一些工具类 处理数组的filter map 所以向前兼容可以自己实现这些方法 第一种 不需要固
  • Ubuntu系统下查看显卡相关信息

    查看显卡信息 root ubuntu home ubuntu lspci grep i vga 02 00 0 VGA compatible controller NVIDIA Corporation GM200 GeForce GTX T
  • Java将文件转换成二维码

    生成二维码主要代码为在步骤1 2中 下边后续步骤3 4 5涉及到具体的业务 要是用该工具类时需要拷贝前两个步骤代码即可 1 在项目pom xml文件中引入生成二维码的第三方依赖
  • 自己写的点云点集凹包求解 ,不是凸包!!!(附C++代码)

    近期遇到一个计算几何问题 需要从点集中重建一个粗略合理的几何形状 求出一定程度上反映这些散点轮廓的平面多边形 给出边的连接方式即可 如从下图的左图散点重建为右图的形状 网上流传的版本都是求凸包 而不是求凹包 于是自己写一个版本的代码 有瑕疵
  • Java项目---开发一个学生成绩管理系统(使用mysql数据库)

    Java项目 开发一个学生成绩管理系统 使用mysql数据库 1 设计数据库 2 添加jdbc驱动包及数据库连接 3 修改代码之前 我们还需要将数据库中用到的列名进行定义 定义在一个新的Applicant类里面 并且再get set将其封装
  • 基于Python分析气象数据教程-2

    一 前言 在这个博客中 我们正在对数据集是否进行假设检验 并试图证明该假设是否正确 我们也在做一些数据清理技术 数据可视化和假设检验 在之前的博客中我们已经介绍了气象数据的基本处理 二 相关库的引入 Numpy Pandas Matplot