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

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

python很多库支持了对nc格式文件的读取,比如NetCDF4,PyNio(PyNio和PyNgl可以看做是NCL的Python版本)以及Xarray等等。

我最初使用PyNio,但是由于NCL到Python的移植并不完全,导致目前远不如直接使用NCL方便,而在接触Xarray库后,发现其功能强大远超NCL(也可能是我NCL太菜的原因)。

安装同其它库一致:

我这里以一套中国逐日最高温度格点资料(CN051)为例,其水平精度为05°X05°。

可以看到,文件的坐标有时间, 经度,纬度,变量有日最高温

我们将最高温数据取出

这与Linux系统中的ncl_filedump指令看到的信息是类似的

Xarray在读取坐标信息时,自动将时间坐标读取为了datetime64 格式,这对我们挑选目的时间十分方便。Xarray通常与pandas配合使用。

比如我们想选取19790601-19790620时期数据,我们只需

再比如我们想选取夏季数据时,只需

更多的时间 *** 作同python的datetime函数类似。

当我们想选取特定经纬度范围(高度)的数据时,loc[]函数同样可以解决。

在这里,我选取了40°N-55°N,115°E-135°E范围的数据

甚至,我们还可以套娃,同时叠加时间和范围的选取

这足够满足常用到的数据索引要求。

对于这类简单排列的txt文件,可以通过npload读取,用pandas的read_csv更为方便

读取txt的同时,对每列赋予了一个列名,通过dataa可以直接按列名调用相应数据。

对于较复杂的txt文件,仍可通过该函数读取

skiprows=5跳过了前5行的文件头,sep='\s+'定义了数据间隔为空格,这里用的是正则表达。

pdread_csv函数有很多的参数,可以处理各种复杂情况下的文本文件读取。

grib文件可通过pygrib库读取

import pygrib

f = pygribopen('xxxgrb')

这部分同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气象数据处理与绘图(1):数据读取全部的内容,包括:Python气象数据处理与绘图(1):数据读取、Python气象数据处理进阶之Xarray(5):数据整合(分组,合并...)、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9344686.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存