DataArrayResample.var(dim=None, *, skipna=None, ddof=0, keep_attrs=None, **kwargs)[source]#

Reduce this DataArray’s data by applying var along some dimension(s).

  • dim (str, Iterable of Hashable, "..." or None, default: None) – Name of dimension[s] along which to apply var. For e.g. dim="x" or dim=["x", "y"]. If None, will reduce over the Resample dimensions. If “…”, will reduce over all dimensions.

  • skipna (bool or None, 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) or skipna=True has not been implemented (object, datetime64 or timedelta64).

  • ddof (int, default: 0) – “Delta Degrees of Freedom”: the divisor used in the calculation is N - ddof, where N represents the number of elements.

  • keep_attrs (bool or None, optional) – If True, attrs will 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 calculating var on this object’s data. These could include dask-specific kwargs like split_every.


reduced (DataArray) – New DataArray with var applied to its data and the indicated dimension(s) removed

See also

numpy.var, dask.array.var, DataArray.var

Resampling and grouped operations

User guide on resampling operations.


Use the flox package to significantly speed up resampling computations, especially with dask arrays. Xarray will use flox by default if installed. Pass flox-specific keyword arguments in **kwargs. See the flox documentation for more.

Non-numeric variables will be removed prior to reducing.


>>> da = xr.DataArray(
...     np.array([1, 2, 3, 0, 2, np.nan]),
...     dims="time",
...     coords=dict(
...         time=("time", pd.date_range("2001-01-01", freq="ME", periods=6)),
...         labels=("time", np.array(["a", "b", "c", "c", "b", "a"])),
...     ),
... )
>>> da
<xarray.DataArray (time: 6)> Size: 48B
array([ 1.,  2.,  3.,  0.,  2., nan])
  * time     (time) datetime64[ns] 48B 2001-01-31 2001-02-28 ... 2001-06-30
    labels   (time) <U1 24B 'a' 'b' 'c' 'c' 'b' 'a'
>>> da.resample(time="3ME").var()
<xarray.DataArray (time: 3)> Size: 24B
array([0.        , 1.55555556, 0.        ])
  * time     (time) datetime64[ns] 24B 2001-01-31 2001-04-30 2001-07-31

Use skipna to control whether NaNs are ignored.

>>> da.resample(time="3ME").var(skipna=False)
<xarray.DataArray (time: 3)> Size: 24B
array([0.        , 1.55555556,        nan])
  * time     (time) datetime64[ns] 24B 2001-01-31 2001-04-30 2001-07-31

Specify ddof=1 for an unbiased estimate.

>>> da.resample(time="3ME").var(skipna=True, ddof=1)
<xarray.DataArray (time: 3)> Size: 24B
array([       nan, 2.33333333,        nan])
  * time     (time) datetime64[ns] 24B 2001-01-31 2001-04-30 2001-07-31