xarray - используйте groupby для группировки по дням в течение года по климатологическим почасовым данным netCDF за год - PullRequest
0 голосов
/ 30 января 2019

У меня есть почасовые климатологические данные netCDF для географического экстента за год, например, от 2017-01-01T00:00:00 до 2017-12-31T23:00:00.

<xarray.Dataset>
Dimensions:    (latitude: 106, longitude: 193, time: 8760)
Coordinates:
  * latitude   (latitude) float32 -39.2 -39.149525 ... -33.950478 -33.9
  * longitude  (longitude) float32 140.8 140.84792 140.89584 ... 149.95209 150.0
  * time       (time) datetime64[ns] 2017-01-01 ... 2017-12-31T23:00:00
Data variables:
    T_SFC      (time, latitude, longitude) float32 dask.array<shape=(8760, 106, 193), chunksize=(744, 106, 193)>
Attributes:
    creationTime:        1525708833
    creationTimeString:  Mon May  7 09:00:32 PDT 2018
    Conventions:         COARDS

Как говорится, данные имеют три координаты (лат, lng и время) и переменная - это почасовая температура.

Мой код:

import xarray as xr
mds_temp_path = '../Archive/*/IDV71000_VIC_T_SFC.nc'    # netCDF
mds_temp = xr.open_mfdataset(mds_temp_path)    # open netCDF and read into a dataset object

print(mds_temp.groupby('time.dayofyear').mean('time'))

Что я получил:

<xarray.Dataset>
Dimensions:    (dayofyear: 365, latitude: 106, longitude: 193)
Coordinates:
  * latitude   (latitude) float32 -39.2 -39.149525 ... -33.950478 -33.9
  * longitude  (longitude) float32 140.8 140.84792 140.89584 ... 149.95209 150.0
  * dayofyear  (dayofyear) int64 1 2 3 4 5 6 7 8 ... 359 360 361 362 363 364 365
Data variables:
    T_SFC   (dayofyear, latitude, longitude) float64 dask.array<shape=(365, 106, 193), chunksize=(1, 106, 193)>

Чего бы я хотел достичьбыть в состоянии получить среднее значение температуры для каждого дня, например, координата времени в сгенерированном наборе данных: «2017-01-01», «2017-01-02», «2017-01-03», ... ..., "2017-12-31", вместо 1, 2, 3, ... ..., 365.

1 Ответ

0 голосов
/ 30 января 2019

Вы должны использовать метод resample вместо groupby:

mds_temp.resample(time='1D').mean()

Эти концепции более полно описаны в разделе данных временных рядовв документации: http://xarray.pydata.org/en/stable/time-series.html#resampling-and-grouped-operations

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...