Python-xarray使用NAN替换缺测值

文章讲述了在处理卫星数据时遇到葵花8号卫星的云顶温度(CLTT)缺测值为-450.8的问题。通常采用将缺测值替换为NAN的方法,以便后续分析。作者发现xarray的DataSet.fillna()函数可以反向操作,但需要填充NAN。通过使用xarray.Dataset.where(),作者成功地将CLTT中低于-400的值替换为NAN,使得缺测部分在图表中明显区分。这种方法允许在保持使用xarray.DataSet.plot()便利性的同时,有效地处理和展示数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在处理卫星数据,发现葵花8的云顶温度(cltt)缺测值使用的是-450.8,常用的处理方法是把这些缺测值用NAN替代,方便后续的画图或其它计算。

 

https://docs.xarray.dev/en/stable/contributing.html上翻了很久,找到的直接相关的函数是xarray.DataSet.fillna(),用特定的值替换NAN,但我想要的正好相反。

如果是Array,可以直接用下面的代码:

cltt[cltt < -400] = np.nan

当然我可以把nc文件直接读成Array,或者先把DataArray转成DataFrame再转成Array,但为了能直接用xarray.DataSet.plot(),还是有必要略过这些繁杂的步骤,毕竟xarray.DataSet.plot()真的很好用!

import xarray as xr
import numpy as np

cltt = xr.open_dataset('path')['CLTT']

1.直接用xarray.DataSet.plot()画出来的图看不出任何信息:

 2.通过设置vmin和vmax,已经能看到有效信息,但缺测的部分会被当成设置的vmin:

 3.最重要的一步,方法和Array的思路相同,但写法不一样:

cltt = xr.where(cltt.values > -400, cltt, np.nan)

详细说明在这https://docs.xarray.dev/en/stable/generated/xarray.Dataset.where.html,其中other这个参数原文说明是:Value to use for locations in this object where cond is False. 意思是用于取代此对象中cond为False的位置的值。

出来的图就是缺测部分为空白,与其它有效信息可以区分:

 欢迎补充针对DataArray用NAN填补缺测值的方法。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值