Python气象数据处理进阶之Xarray(5):数据整合(分组,合并...)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python气象数据处理进阶之Xarray(5):数据整合(分组,合并...)相关的知识,希望对你有一定的参考价值。

参考技术A 这部分同pandas的gorupby函数基本相同,实现对数据的分组归类等等。
split·将数据分为多个独立的组。
apply·对各个组进行操作。
combine·将各个组合并为一个数据对象。

创建一个dataset

我对官网的例子加以修改以便更好的理解。
解释下数据结构,创建了一个二维数据u(lat, lon),坐标数据为latitude 和country ,强调一下这里创建的是dataset,而不是dataArray,分不清的可以再看看本系列的第一篇文章。坐标数据不等于u的坐标。创建coords部分都指明了latitude 和 country 都是针对lat的扩展。
我们可以这样理解,对于纬度的分类,我们可以按纬度的大小分,也就是"latitude": [10, 20, 30, 40] ; 我们也可以对纬度所在的国家分,"country": ("x", list("abba") ,那比如我们想求某个国家的数据的平均时就十分方便。
下边我们进行分组:

说明第0和第4个数是国家a的,第2和第3是国家b的。
.groups换成.mean() 则就是对分组求平均,以此类推。

必须添加一个list才可以将其分类结果打印出来。直接打印DatasetGroupBy object是不能输出结果的。

那么针对经纬度的坐标的分组怎么实现呢,比如说选出区间在多少到多少之间的?
.groupby_bins() 函数可以解决这一问题。
还是这个数据,"latitude": [10, 20, 30, 40]
那我们想以25为界,分为两组,0-25,25-50

在进行了分组后,要对各个分组进行计算。
我们先从dataset 中取出 u 这个dataarray

比如是实现前边提到的按国家进行数据平均,或者标准化

也可以通过map()函数使用一些自定义的函数,比如说标准化,

这个用法是官方提供的,但是我的Xarray版本过低,还不支持这种用法(Xarray会定期更新,以至于可能我介绍过的一些方法有了更简便的操作,大家可以在评论区留言)。

强调一句,Xarray官方的更新是比较快的,很可能我写在这里的函数官方又给出了更新的版本,但是我没办法做到时刻与官方最新同步,所以如果遇到问题,最好的解决办法还是去查阅官方文档的对应部分。

Python气象数据处理进阶之Xarray(6):数据重组与换形

参考技术A 这一部分涉及到了常用的操作,比如调换维度的位置,给数据重新reshape换形等等,建议大家可以认真阅读这部分。
老样子,先新建一个数组

比如说在求某个东西时需要将时间维放在最后一维,但是数据本身的时间在第一维,那么便可以用到这个操作。
第一种是精准换位,指定每个维度的位置

第二种是单独换位,只对指定维度换位,将time放在最后,其余不变

第三种为全部换位,相当于数组转置

扩展指增加一个维度,压缩指将一个维度挤压掉

官方文档中接下来有一段是关于DataArray向DataSet转换的,个人感觉放在这一章节并不合理,我后边会整理放进Python气象数据处理进阶之Xarray(1)中(我觉得两种基础数据结构以及互相转换应该最开始介绍的)。所以接下来跳过这部分。

个人感觉可能处理站点数据会用到这个方法
换一个数组演示

现在将这个2维数组堆叠成1维

也可以拆分,其实就是反堆叠

最重要的是不同于Pandas,Xarray的stack不缺自动丢失缺测值!!!
Xarray还提供了将不同变量stack的例子,有兴趣的可以去看看。这个用法感觉比较鸡肋

这块比较难理解,建议还是先读第一篇文章,弄清数据结构,da数组显示Dimensions without coordinates: x,而通过da.set_index函数,将X设置为混合索引号。
之后便可以实线自由索引:

通过mda.reset_index('x')重置。
reorder_levels()函数允许调换索引顺序(个人感觉比较鸡肋)

这小节应该是这篇文章和数组换形换维同等重要的。

这就是对数组进行滚动。这个的作用主要在于做差分计算。虽然前边讲过Xarray提供了中央差计算函数,但是仍需要更灵活的操作,滚动函数就实现了这个目的。

以上是关于Python气象数据处理进阶之Xarray(5):数据整合(分组,合并...)的主要内容,如果未能解决你的问题,请参考以下文章

Python气象数据处理进阶之Xarray(6):数据重组与换形

[Xarray] 1. 数据结构

Python气象数据处理与绘图(1):数据读取

数据可视化应用xarray 绘图可视化-二进制GrADS气象数据处理(附代码)

数据可视化应用气象绘图(附Python代码)

数据可视化应用气象绘图(附Python代码)