xarray.core.groupby.DatasetGroupBy.prod
xarray.core.groupby.DatasetGroupBy.prod#
- DatasetGroupBy.prod(dim=None, *, skipna=None, min_count=None, keep_attrs=None, **kwargs)[source]#
Reduce this Dataset’s data by applying
prodalong some dimension(s).- Parameters
dim (hashable or iterable of hashable, default:
None) – Name of dimension[s] along which to applyprod. For e.g.dim="x"ordim=["x", "y"]. If None, will reduce over all dimensions.skipna (
boolorNone, optional) – If True, skip missing values (as marked by NaN). By default, only skips missing values for float dtypes; other dtypes either do not have a sentinel missing value (int) orskipna=Truehas not been implemented (object, datetime64 or timedelta64).min_count (
intorNone, optional) – The required number of valid values to perform the operation. If fewer than min_count non-NA values are present the result will be NA. Only used if skipna is set to True or defaults to True for the array’s dtype. Changed in version 0.17.0: if specified on an integer array and skipna=True, the result will be a float array.keep_attrs (
boolorNone, optional) – If True,attrswill be copied from the original object to the new one. If False, the new object will be returned without attributes.**kwargs (
Any) – Additional keyword arguments passed on to the appropriate array function for calculatingprodon this object’s data. These could include dask-specific kwargs likesplit_every.
- Returns
reduced (
Dataset) – New Dataset withprodapplied to its data and the indicated dimension(s) removed
See also
numpy.prod,dask.array.prod,Dataset.prod- GroupBy: split-apply-combine
User guide on groupby operations.
Notes
Non-numeric variables will be removed prior to reducing.
Examples
>>> da = xr.DataArray( ... np.array([1, 2, 3, 1, 2, np.nan]), ... dims="time", ... coords=dict( ... time=("time", pd.date_range("01-01-2001", freq="M", periods=6)), ... labels=("time", np.array(["a", "b", "c", "c", "b", "a"])), ... ), ... ) >>> ds = xr.Dataset(dict(da=da)) >>> ds <xarray.Dataset> Dimensions: (time: 6) Coordinates: * time (time) datetime64[ns] 2001-01-31 2001-02-28 ... 2001-06-30 labels (time) <U1 'a' 'b' 'c' 'c' 'b' 'a' Data variables: da (time) float64 1.0 2.0 3.0 1.0 2.0 nan
>>> ds.groupby("labels").prod() <xarray.Dataset> Dimensions: (labels: 3) Coordinates: * labels (labels) object 'a' 'b' 'c' Data variables: da (labels) float64 1.0 4.0 3.0
Use
skipnato control whether NaNs are ignored.>>> ds.groupby("labels").prod(skipna=False) <xarray.Dataset> Dimensions: (labels: 3) Coordinates: * labels (labels) object 'a' 'b' 'c' Data variables: da (labels) float64 nan 4.0 3.0
Specify
min_countfor finer control over when NaNs are ignored.>>> ds.groupby("labels").prod(skipna=True, min_count=2) <xarray.Dataset> Dimensions: (labels: 3) Coordinates: * labels (labels) object 'a' 'b' 'c' Data variables: da (labels) float64 nan 4.0 3.0