Spec-Zone.ru › pandas 2

pandas.Series.ewm

Series.ewm(com=None, span=None, halflife=None, alpha=None, min_periods=0, adjust=True, ignore_na=False, axis=_NoDefault.no_default, times=None, method='single')[source]

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

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

Параметры:
com:float, optional

Указать затухание относительно центра масс

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

span:float, optional

Указать затухание относительно размаха

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

halflife:float, str, timedelta, optional

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

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

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

alpha:float, optional

Указать коэффициент сглаживания \(\alpha\) непосредственно

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

min_periods:int, default 0

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

adjust:bool, default True

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

  • Когда adjust=True (по умолчанию), функция EW вычисляется с весами \(w_i = (1 - \alpha)^i\). Например, скользящее среднее EW ряда [\(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_na:bool, default False

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

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

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

axis:{0, 1}, default 0

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

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

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

times:np.ndarray, Series, default None

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

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

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

method:str {‘single’, ‘table’}, default ‘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

adjust

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

times

Экспоненциально взвешенное среднее со взвешиваниями, рассчитанными с помощью временного интервала 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

© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/2.2.2/reference/api/pandas.Series.ewm.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API