如何计算具有多个纬度和经度的多年的月平均值 - Pandas - Xarray
How to calculate the Monthly Average over Multiple Years with multiple Latitude and Longitude - Pandas - Xarray
我有三个变量(T2M、U50M、V50M),我想从中找到多年的一月平均值、二月平均值等。
我有一个 xarry.Dataset - 名称 Multidata:
Dimensions: (time: 17520, lat: 17, lon: 15)
Coordinates:
* lat (lat) float64 47.0 47.5 48.0 48.5 49.0 ... 53.0 53.5 54.0 54.5 55.0
* lon (lon) float64 6.25 6.875 7.5 8.125 8.75 ... 13.12 13.75 14.38 15.0
* time (time) datetime64[ns] 2001-01-01T00:30:00 ... 2002-12-31T23:30:00
Data variables:
T2M (time, lat, lon) float32 dask.array<chunksize=(24, 17, 15), meta=np.ndarray>
V50M (time, lat, lon) float32 dask.array<chunksize=(24, 17, 15), meta=np.ndarray>
U50M (time, lat, lon) float32 dask.array<chunksize=(24, 17, 15), meta=np.ndarray>
我试过:----但只能得到每年的月平均值
monthly_data = Multidata.resample(time="MS").mean()
output:
<xarray.Dataset>
Dimensions: (time: 24, lat: 17, lon: 15)
Coordinates:
* time (time) datetime64[ns] 2001-01-01 2001-02-01 ... 2002-12-01
* lat (lat) float64 47.0 47.5 48.0 48.5 49.0 ... 53.0 53.5 54.0 54.5 55.0
* lon (lon) float64 6.25 6.875 7.5 8.125 8.75 ... 13.12 13.75 14.38 15.0
Data variables:
T2M (time, lat, lon) float32 dask.array<chunksize=(1, 17, 15), meta=np.ndarray>
V50M (time, lat, lon) float32 dask.array<chunksize=(1, 17, 15), meta=np.ndarray>
U50M (time, lat, lon) float32 dask.array<chunksize=(1, 17, 15), meta=np.ndarray>
我也试过:但是再次只得到每年的月均值
year_month_idx = year_month_idx = pd.MultiIndex.from_arrays([Multidata['time.year'].values, Multidata['time.month'].values])
Multidata.coords['year_month'] = ('time', year_month_idx)
monthly_data2 = Multidata.groupby('year_month').mean()
output:
<xarray.Dataset>
Dimensions: (year_month: 24, lat: 17, lon: 15)
Coordinates:
* lat (lat) float64 47.0 47.5 48.0 48.5 ... 54.0 54.5 55.0
* lon (lon) float64 6.25 6.875 7.5 8.125 ... 13.75 14.38 15.0
* year_month (year_month) MultiIndex
- year_month_level_0 (year_month) int64 2001 2001 2001 ... 2002 2002 2002
- year_month_level_1 (year_month) int64 1 2 3 4 5 6 7 8 ... 6 7 8 9 10 11 12
Data variables:
T2M (year_month, lat, lon) float32 dask.array<chunksize=(1, 17, 15), meta=np.ndarray>
V50M (year_month, lat, lon) float32 dask.array<chunksize=(1, 17, 15), meta=np.ndarray>
U50M (year_month, lat, lon) float32 dask.array<chunksize=(1, 17, 15), meta=np.ndarray>
我的错误在哪里,我怎样才能得到所有年份的月平均数?
据我了解,您是在 long-term 每个月的平均值之后。如果是这样,您可以使用带有 groupby()
而不是 resample()
的 xarray 来计算这些气候学。
climatology = Multidata.groupby("time.month").mean("time")
请参阅 xarray 文档 here 计算每月异常。
我有三个变量(T2M、U50M、V50M),我想从中找到多年的一月平均值、二月平均值等。 我有一个 xarry.Dataset - 名称 Multidata:
Dimensions: (time: 17520, lat: 17, lon: 15)
Coordinates:
* lat (lat) float64 47.0 47.5 48.0 48.5 49.0 ... 53.0 53.5 54.0 54.5 55.0
* lon (lon) float64 6.25 6.875 7.5 8.125 8.75 ... 13.12 13.75 14.38 15.0
* time (time) datetime64[ns] 2001-01-01T00:30:00 ... 2002-12-31T23:30:00
Data variables:
T2M (time, lat, lon) float32 dask.array<chunksize=(24, 17, 15), meta=np.ndarray>
V50M (time, lat, lon) float32 dask.array<chunksize=(24, 17, 15), meta=np.ndarray>
U50M (time, lat, lon) float32 dask.array<chunksize=(24, 17, 15), meta=np.ndarray>
我试过:----但只能得到每年的月平均值
monthly_data = Multidata.resample(time="MS").mean()
output:
<xarray.Dataset>
Dimensions: (time: 24, lat: 17, lon: 15)
Coordinates:
* time (time) datetime64[ns] 2001-01-01 2001-02-01 ... 2002-12-01
* lat (lat) float64 47.0 47.5 48.0 48.5 49.0 ... 53.0 53.5 54.0 54.5 55.0
* lon (lon) float64 6.25 6.875 7.5 8.125 8.75 ... 13.12 13.75 14.38 15.0
Data variables:
T2M (time, lat, lon) float32 dask.array<chunksize=(1, 17, 15), meta=np.ndarray>
V50M (time, lat, lon) float32 dask.array<chunksize=(1, 17, 15), meta=np.ndarray>
U50M (time, lat, lon) float32 dask.array<chunksize=(1, 17, 15), meta=np.ndarray>
我也试过:但是再次只得到每年的月均值
year_month_idx = year_month_idx = pd.MultiIndex.from_arrays([Multidata['time.year'].values, Multidata['time.month'].values])
Multidata.coords['year_month'] = ('time', year_month_idx)
monthly_data2 = Multidata.groupby('year_month').mean()
output:
<xarray.Dataset>
Dimensions: (year_month: 24, lat: 17, lon: 15)
Coordinates:
* lat (lat) float64 47.0 47.5 48.0 48.5 ... 54.0 54.5 55.0
* lon (lon) float64 6.25 6.875 7.5 8.125 ... 13.75 14.38 15.0
* year_month (year_month) MultiIndex
- year_month_level_0 (year_month) int64 2001 2001 2001 ... 2002 2002 2002
- year_month_level_1 (year_month) int64 1 2 3 4 5 6 7 8 ... 6 7 8 9 10 11 12
Data variables:
T2M (year_month, lat, lon) float32 dask.array<chunksize=(1, 17, 15), meta=np.ndarray>
V50M (year_month, lat, lon) float32 dask.array<chunksize=(1, 17, 15), meta=np.ndarray>
U50M (year_month, lat, lon) float32 dask.array<chunksize=(1, 17, 15), meta=np.ndarray>
我的错误在哪里,我怎样才能得到所有年份的月平均数?
据我了解,您是在 long-term 每个月的平均值之后。如果是这样,您可以使用带有 groupby()
而不是 resample()
的 xarray 来计算这些气候学。
climatology = Multidata.groupby("time.month").mean("time")
请参阅 xarray 文档 here 计算每月异常。