pandas.Series.ewm#

Series.ewm(com=None, span=None, halflife=None, alpha=None, min_periods=0, adjust=True, ignore_na=False, axis=, times=None, method='single')[источник]#

Предоставить экспоненциально взвешенные (EW) вычисления.

Ровно один из com, span, halflife, или alpha должен быть предоставлен, если times не предоставлен. Если times предоставлен, halflife и один из com, span или alpha может быть предоставлен.

Параметры:
comfloat, опционально

Укажите затухание в терминах центра масс

\(\alpha = 1 / (1 + com)\), для \(com \geq 0\).

spanfloat, опционально

Укажите затухание в терминах интервала

\(\alpha = 2 / (span + 1)\), для \(span \geq 1\).

период полураспадаfloat, str, timedelta, optional

Укажите затухание в терминах периода полураспада

\(\alpha = 1 - \exp\left(-\ln(2) / halflife\right)\), для \(halflife > 0\).

Если times указана, конвертируемая единица времени, за которую наблюдение уменьшается до половины своего значения. Применимо только к mean(), и значение периода полураспада не будет применяться к другим функциям.

alphafloat, опционально

Укажите коэффициент сглаживания \(\alpha\) напрямую

\(0 < \alpha \leq 1\).

min_periodsint, по умолчанию 0

Минимальное количество наблюдений в окне, необходимое для получения значения; в противном случае результат np.nan.

настроитьbool, по умолчанию True

Разделить на затухающий корректирующий коэффициент в начальных периодах для учёта дисбаланса в относительных весах (рассматривая EWMA как скользящее среднее).

  • Когда adjust=True (по умолчанию), функция EW рассчитывается с использованием весов \(w_i = (1 - \alpha)^i\). Например, экспоненциально взвешенное скользящее среднее ряда [\(x_0, x_1, ..., x_t\)] будет:

\[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}\]
  • Когда adjust=False, экспоненциально взвешенная функция вычисляется рекурсивно:

\[\begin{split}\begin{split} y_0 &= x_0\\ y_t &= (1 - \alpha) y_{t-1} + \alpha x_t, \end{split}\end{split}\]
ignore_nabool, по умолчанию False

Игнорировать пропущенные значения при расчёте весов.

  • Когда ignore_na=False (по умолчанию), веса основаны на абсолютных позициях. Например, веса \(x_0\) и \(x_2\) используется при вычислении итогового взвешенного среднего [\(x_0\), None, \(x_2\)] являются \((1-\alpha)^2\) и \(1\) if adjust=True, и \((1-\alpha)^2\) и \(\alpha\) if adjust=False.

  • Когда ignore_na=True, веса основаны на относительных позициях. Например, веса \(x_0\) и \(x_2\) используется при вычислении итогового взвешенного среднего [\(x_0\), None, \(x_2\)] являются \(1-\alpha\) и \(1\) if adjust=True, и \(1-\alpha\) и \(\alpha\) if adjust=False.

ось{0, 1}, по умолчанию 0

Если 0 или 'index', вычислять по строкам.

Если 1 или 'columns', вычислять по столбцам.

Для Series этот параметр не используется и по умолчанию равен 0.

разnp.ndarray, Series, по умолчанию None

Применимо только к mean().

Времена, соответствующие наблюдениям. Должны монотонно возрастать и datetime64[ns] тип данных.

Если 1-D массивоподобный, последовательность с той же формой, что и наблюдения.

методstr {'single', 'table'}, по умолчанию 'single'

Добавлено в версии 1.4.0.

Выполнить операцию скользящего окна для отдельного столбца или строки ('single') или по всему объекту ('table').

Этот аргумент реализован только при указании engine='numba' в вызове метода.

Применимо только к mean()

Возвращает:
pandas.api.typing.ExponentialMovingWindow

Смотрите также

rolling

Предоставляет скользящие оконные вычисления.

expanding

Предоставляет расширяющиеся преобразования.

Примечания

См. Операции скользящего окна для получения дополнительных сведений об использовании и примеров.

Примеры

>>> 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
>>> df.ewm(alpha=2 / 3).mean()
          B
0  0.000000
1  0.750000
2  1.615385
3  1.615385
4  3.670213

настроить

>>> df.ewm(com=0.5, adjust=True).mean()
          B
0  0.000000
1  0.750000
2  1.615385
3  1.615385
4  3.670213
>>> df.ewm(com=0.5, adjust=False).mean()
          B
0  0.000000
1  0.666667
2  1.555556
3  1.555556
4  3.650794

ignore_na

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

раз

Экспоненциально взвешенное среднее с весами, рассчитанными с помощью timedelta halflife относительно times.

>>> 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