# pandas.Series.ewm

Series.ewm(com=None, span=None, halflife=None, alpha=None, min_periods=0, adjust=True, ignore_na=False, axis=0, times=None)

  Provide exponential weighted (EW) functions.

  Available EW functions: `mean()`, `var()`, `std()`, `corr()`, `cov()`.

  Exactly one parameter: `com`, `span`, `halflife`, or `alpha` must be provided.

  Parameters
    com float, optional

      Specify decay in terms of center of mass, \(\alpha = 1 / (1 + com)\), for \(com \geq 0\).

    span float, optional

      Specify decay in terms of span, \(\alpha = 2 / (span + 1)\), for \(span \geq 1\).

    halflife float, str, timedelta, optional

      Specify decay in terms of half-life, \(\alpha = 1 - \exp\left(-\ln(2) / halflife\right)\), for \(halflife > 0\).

      If `times` is specified, the time unit (str or timedelta) over which an observation decays to half its value. Only applicable to `mean()` and halflife value will not apply to the other functions.

      New in version 1.1.0.

    alpha float, optional

      Specify smoothing factor \(\alpha\) directly, \(0 < \alpha \leq 1\).

    min_periods int, default 0

      Minimum number of observations in window required to have a value (otherwise result is NA).

    adjust bool, default True

      Divide by decaying adjustment factor in beginning periods to account for imbalance in relative weightings (viewing EWMA as a moving average).

      - When `adjust=True` (default), the EW function is calculated using weights \(w_i = (1 - \alpha)^i\). For example, the EW moving average of the series [\(x_0, x_1, ..., x_t\)] would be:

      \[y_t = \frac{x_t + (1 - \alpha)x_{t-1} + (1 - \alpha)^2 x_{t-2} + ... + (1 - \alpha)^t x_0}{1 + (1 - \alpha) + (1 - \alpha)^2 + ... + (1 - \alpha)^t}\]

      - When `adjust=False`, the exponentially weighted function is calculated recursively:

      \[\begin{split}\begin{split} y_0 &= x_0\\ y_t &= (1 - \alpha) y_{t-1} + \alpha x_t, \end{split}\end{split}\]
    ignore_na bool, default False

      Ignore missing values when calculating weights; specify `True` to reproduce pre-0.15.0 behavior.

      - When `ignore_na=False` (default), weights are based on absolute positions. For example, the weights of \(x_0\) and \(x_2\) used in calculating the final weighted average of [\(x_0\), None, \(x_2\)] are \((1-\alpha)^2\) and \(1\) if `adjust=True`, and \((1-\alpha)^2\) and \(\alpha\) if `adjust=False`.

      - When `ignore_na=True` (reproducing pre-0.15.0 behavior), weights are based on relative positions. For example, the weights of \(x_0\) and \(x_2\) used in calculating the final weighted average of [\(x_0\), None, \(x_2\)] are \(1-\alpha\) and \(1\) if `adjust=True`, and \(1-\alpha\) and \(\alpha\) if `adjust=False`.

    axis{0, 1}, default 0

      The axis to use. The value 0 identifies the rows, and 1 identifies the columns.

    times str, np.ndarray, Series, default None

      New in version 1.1.0.

      Times corresponding to the observations. Must be monotonically increasing and `datetime64[ns]` dtype.

      If str, the name of the column in the DataFrame representing the times.

      If 1-D array like, a sequence with the same shape as the observations.

      Only applicable to `mean()`.

  Returns
    DataFrame

      A Window sub-classed for the particular operation.

  See also

  `rolling`

    Provides rolling window calculations.

  `expanding`

    Provides expanding transformations.

  Notes

  More details can be found at: Exponentially weighted windows.

  Examples

      >>> df = pd.DataFrame({'B': [0, 1, 2, np.nan, 4]})
      >>> df
           B
      0  0.0
      1  1.0
      2  2.0
      3  NaN
      4  4.0

      >>> df.ewm(com=0.5).mean()
                B
      0  0.000000
      1  0.750000
      2  1.615385
      3  1.615385
      4  3.670213

  Specifying `times` with a timedelta `halflife` when computing mean.

      >>> times = ['2020-01-01', '2020-01-03', '2020-01-10', '2020-01-15', '2020-01-17']
      >>> df.ewm(halflife='4 days', times=pd.DatetimeIndex(times)).mean()
                B
      0  0.000000
      1  0.585786
      2  1.523889
      3  1.523889
      4  3.233686