您好我有一个包含每日数据的netcdf文件。文件的形状是(5844,89,89),即16年的数据。我试图从每日数据中获得月平均值。我正在寻找pandas数据帧中的resample
函数的simillar。反正有没有在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
答案 0 :(得分:3)
@ jhamman感谢您推荐xarray.resample
。这比我想象的要简单,我的问题的答案是:
import xarray as xr
ds = xr.open_dataset(nc_file)
monthly_data = ds.resample(freq = 'm', dim = 'time', how = 'mean')
答案 1 :(得分:2)
通过新版本的xarray,用法更加简单
monthly_data=ds.resample(time='m').mean()
答案 2 :(得分:1)
如果您使用的是Linux或macOS,则可以使用nctoolkit(使用CDO作为后端)轻松完成。 (安装说明here)。
如果要获取月度平均值,则只需要以下内容:
import nctoolkit as nc
data = nc.open_data(ncfile)
data.monthly_mean()
可以绘制:
data.plot()
如果要将其转换为熊猫数据框:
df = data.to_dataframe()
答案 3 :(得分:0)
我还可以建议以下解决方法:
data = fh.variables['t2m'][:] # The t2m variable is pulled out of the file as 'data'
stat1 = data.mean() # mean
stat2 = data.std() # standard dev