Spec-Zone.ru › Polars

polars.Expr.ewm_mean_by

Expr.ewm_mean_by(
    by: str_ | IntoExpr,
    *,
    half_life: str_ | timedelta,
) → Expr

Вычисляет экспоненциально взвешенное скользящее среднее на основе времени.

Для наблюдений \(x_0, x_1, \ldots, x_{n-1}\) в моменты времени \(t_0, t_1, \ldots, t_{n-1}\) EWMA вычисляется следующим образом:

\[ \begin{align}\begin{aligned}y_0 &= x_0\\\alpha_i &= 1 - \exp \left\{ \frac{ -\ln(2)(t_i-t_{i-1}) } { \tau } \right\}\\y_i &= \alpha_i x_i + (1 - \alpha_i) y_{i-1}; \quad i > 0\end{aligned}\end{align} \]

где \(\tau\) — half_life.

движок:В памяти
Параметры:
by

Моменты времени, по которым вычисляется среднее. Должен иметь тип данных DateTime, Date, UInt64, UInt32, Int64 или Int32.

half_life

Промежуток времени, за который значение наблюдения уменьшается вдвое.

Можно задать объектом timedelta или строкой, используя следующий формат:

  • 1ns (1 наносекунда)
  • 1us (1 микросекунда)
  • 1ms (1 миллисекунда)
  • 1s (1 секунда)
  • 1m (1 минута)
  • 1h (1 час)
  • 1d (1 день)
  • 1w (1 неделя)
  • 1i (1 индекс)

Или комбинируйте значения: “3d12h4m25s” # 3 дня, 12 часов, 4 минуты и 25 секунд

Обратите внимание: half_life считается постоянным промежутком времени. Календарные интервалы, например месяцы (или даже дни в случае часового пояса), не поддерживаются. Укажите приблизительно эквивалентное количество часов (например, ‘370h’ вместо ‘1mo’).

Возвращает:
Expr

Float16, если входные данные имеют тип Float16; class:.Float32, если входные данные имеют тип Float32; в противном случае class:.Float64.

Примеры

>>> from datetime import date, timedelta
>>> df = pl.DataFrame(
...     {
...         "values": [0, 1, 2, None, 4],
...         "times": [
...             date(2020, 1, 1),
...             date(2020, 1, 3),
...             date(2020, 1, 10),
...             date(2020, 1, 15),
...             date(2020, 1, 17),
...         ],
...     }
... ).sort("times")
>>> df.with_columns(
...     result=pl.col("values").ewm_mean_by("times", half_life="4d"),
... )
shape: (5, 3)
┌────────┬────────────┬──────────┐
│ values ┆ times      ┆ result   │
│ ---    ┆ ---        ┆ ---      │
│ i64    ┆ date       ┆ f64      │
╞════════╪════════════╪══════════╡
│ 0      ┆ 2020-01-01 ┆ 0.0      │
│ 1      ┆ 2020-01-03 ┆ 0.292893 │
│ 2      ┆ 2020-01-10 ┆ 1.492474 │
│ null   ┆ 2020-01-15 ┆ null     │
│ 4      ┆ 2020-01-17 ┆ 3.254508 │
└────────┴────────────┴──────────┘

© 2020 Ritchie Vink
© 2022 Polars contributors
Licensed under the MIT License.
https://docs.pola.rs/api/python/stable/reference/expressions/api/polars.Expr.ewm_mean_by.html

Spec-Zone.ru

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