xarray.DataArray.groupby#
- DataArray.groupby(group, squeeze=True, restore_coord_dims=False)[source]#
Returns a DataArrayGroupBy object for performing grouped operations.
- Parameters:
group (
Hashable
,DataArray
orIndexVariable
) – Array whose unique values should be used to group this array. If a Hashable, must be the name of a coordinate contained in this dataarray.squeeze (
bool
, default:True
) – If “group” is a dimension of any arrays in this dataset, squeeze controls whether the subarrays have a dimension of length 1 along that dimension or if the dimension is squeezed out.restore_coord_dims (
bool
, default:False
) – If True, also restore the dimension order of multi-dimensional coordinates.
- Returns:
grouped (
DataArrayGroupBy
) – A DataArrayGroupBy object patterned after pandas.GroupBy that can be iterated over in the form of (unique_value, grouped_array) pairs.
Examples
Calculate daily anomalies for daily data:
>>> da = xr.DataArray( ... np.linspace(0, 1826, num=1827), ... coords=[pd.date_range("2000-01-01", "2004-12-31", freq="D")], ... dims="time", ... ) >>> da <xarray.DataArray (time: 1827)> array([0.000e+00, 1.000e+00, 2.000e+00, ..., 1.824e+03, 1.825e+03, 1.826e+03]) Coordinates: * time (time) datetime64[ns] 2000-01-01 2000-01-02 ... 2004-12-31 >>> da.groupby("time.dayofyear") - da.groupby("time.dayofyear").mean("time") <xarray.DataArray (time: 1827)> array([-730.8, -730.8, -730.8, ..., 730.2, 730.2, 730.5]) Coordinates: * time (time) datetime64[ns] 2000-01-01 2000-01-02 ... 2004-12-31 dayofyear (time) int64 1 2 3 4 5 6 7 8 ... 359 360 361 362 363 364 365 366
See also
- GroupBy: Group and Bin Data
Users guide explanation of how to group and bin data.
- Computational Patterns
Tutorial on
Groupby()
for windowed computation- Grouped Computations
Tutorial on
Groupby()
demonstrating reductions, transformation and comparison withresample()
DataArray.groupby_bins Dataset.groupby core.groupby.DataArrayGroupBy DataArray.coarsen pandas.DataFrame.groupby Dataset.resample DataArray.resample