从python中的每日netcdf文件计算月平均值
您好,我有一个netcdf文件,包含每日数据。文件的形状为(5844,89,89),即16年数据。我试图从每日数据中得到月平均值。我正在寻找类似于熊猫数据帧中的从python中的每日netcdf文件计算月平均值,python,numpy,netcdf,Python,Numpy,Netcdf,您好,我有一个netcdf文件,包含每日数据。文件的形状为(5844,89,89),即16年数据。我试图从每日数据中得到月平均值。我正在寻找类似于熊猫数据帧中的重采样功能。在python中有任何方法可以做到这一点。 正如我所知,使用cdo和nco进行计算非常容易,但我正在研究python 我用来读取netcdf文件的示例代码是: import netCDF4 from netCDF4 import Dataset fh = Dataset(ncfile, mode='r') time = fh.
重采样
功能。在python中有任何方法可以做到这一点。
正如我所知,使用cdo和nco进行计算非常容易,但我正在研究python
我用来读取netcdf文件的示例代码是:
import netCDF4
from netCDF4 import Dataset
fh = Dataset(ncfile, mode='r')
time = fh.variables['time'][:]
lon = fh.variables['longitude'][:]
lat = fh.variables['latitude'][:]
data = fh.variables['t2m'][:]
data.shape
@贾曼:谢谢你的建议。这比我想象的要简单,我的问题的答案是:
import xarray as xr
ds = xr.open_dataset(nc_file)
monthly_data = ds.resample(freq = 'm', dim = 'time', how = 'mean')
通过新版本的xarray,其用法简单得多,如下所示
monthly_data=ds.resample(time='m').mean()
如果您在Linux或macOS中工作,那么可以使用nctoolkit轻松完成这项工作,nctoolkit使用CDO作为后端。(安装说明) 如果你想得到月平均值,你只需要以下信息:
import nctoolkit as nc
data = nc.open_data(ncfile)
data.tmean(["year", "month"])
这可以绘制为:
data.plot()
如果要将其转换为数据帧:
df = data.to_dataframe()
查看xarray中的重采样功能。它建立在熊猫重采样工具之上: