Объект DatasetGroupBy не является подписным - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть несколько наборов данных netCDF4, которые содержат ежемесячные данные о погоде за весь год. После извлечения ежемесячных данных с использованием метода groupby в xarray я не могу получить статистическую информацию, такую ​​как среднее значение, стандартное отклонение от этого сгруппированного результата. Выдает ошибку при выполнении основных арифметических операций.

Я сгруппировал месячные данные следующим образом:

monthTime = ds.groupby('time.month')

После этого, когда я хочу получить значения температуры, появляется ошибка:

monthTime['temp']
TypeError: 'DatasetGroupBy' object is not subscriptable

При вычислении среднего значения переменной monthTime я получаю следующий результат:

monthTime.mean()
<xarray.Dataset>
Dimensions:  (month: 12)
Coordinates:
  * month    (month) int64 1 2 3 4 5 6 7 8 9 10 11 12
Data variables:
    temp       (month) float64 dask.array<shape=(12,), chunksize=(1,)>

Как рассчитать среднее и стандартное отклонение. Пожалуйста, скажите мне, где я не прав.

1 Ответ

0 голосов
/ 16 апреля 2019

Group-by работает как Split-Apply-Combine. Вы можете прочитать больше об этом в пандах doc , в которых есть замечательные примеры.

Когда вы группируете свои данные по месяцам, индексация не будет работать, потому что вы должны сначала применить некоторую функцию, такую ​​как среднее и т. Д., И рекомбинировать ее в структуру данных. Однако, если вы хотите просмотреть сгруппированный объект, вы можете преобразовать его в список

list(monthTime)

В вашем случае вы получаете среднее значение вашей переменной temp. Месяц не является переменной вашей структуры данных. Я думаю, что для вашего анализа вы хотите среднее или стандартное значение вашей переменной temp. Итак, подход будет:

ds.temp.groupby('time.month').mean()
# similarly you can apply any other functions 
...