Spec-Zone.ru › Polars

polars.Expr.rolling_std

Expr.rolling_std(
    window_size: int,
    weights: list_[float] | None = None,
    *,
    min_samples: int | None = None,
    center: bool = False,
    ddof: int = 1,
) → Expr

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

Окно длиной window_size будет перемещаться по массиву. Значения, попадающие в это окно, будут (при необходимости) умножены на веса, заданные вектором weights. Полученные значения будут агрегированы в стандартное отклонение. Веса нормализуются так, чтобы их сумма равнялась 1.

Окно для заданной строки включает саму строку и window_size - 1 предшествующих элементов.

движок:В памяти

Изменено в версии 1.21.0: Параметр min_periods был переименован в min_samples.

Параметры:
window_size

Длина окна в количестве элементов.

weights

Необязательный срез той же длины, что и окно. После нормализации до суммы 1 он будет поэлементно умножен на значения в окне.

min_samples

Количество ненулевых значений в окне, необходимое для вычисления результата. Если задано None (по умолчанию), значение будет установлено равным window_size.

center

Разместить метки в центре окна.

ddof

«Поправка на число степеней свободы»: делитель для окна длины N равен N - ddof

Примечания

Если требуется вычислить несколько статистик агрегации для одного и того же динамического окна, рассмотрите возможность использования rolling — этот метод может кэшировать вычисление размера окна.

Примеры

>>> df = pl.DataFrame({"A": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]})
>>> df.with_columns(
...     rolling_std=pl.col("A").rolling_std(window_size=2),
... )
shape: (6, 2)
┌─────┬─────────────┐
│ A   ┆ rolling_std │
│ --- ┆ ---         │
│ f64 ┆ f64         │
╞═════╪═════════════╡
│ 1.0 ┆ null        │
│ 2.0 ┆ 0.707107    │
│ 3.0 ┆ 0.707107    │
│ 4.0 ┆ 0.707107    │
│ 5.0 ┆ 0.707107    │
│ 6.0 ┆ 0.707107    │
└─────┴─────────────┘

Задайте веса для умножения значений в окне:

>>> df.with_columns(
...     rolling_std=pl.col("A").rolling_std(
...         window_size=2, weights=[0.25, 0.75]
...     ),
... )
shape: (6, 2)
┌─────┬─────────────┐
│ A   ┆ rolling_std │
│ --- ┆ ---         │
│ f64 ┆ f64         │
╞═════╪═════════════╡
│ 1.0 ┆ null        │
│ 2.0 ┆ 0.433013    │
│ 3.0 ┆ 0.433013    │
│ 4.0 ┆ 0.433013    │
│ 5.0 ┆ 0.433013    │
│ 6.0 ┆ 0.433013    │
└─────┴─────────────┘

Расположите значения в центре окна

>>> df.with_columns(
...     rolling_std=pl.col("A").rolling_std(window_size=3, center=True),
... )
shape: (6, 2)
┌─────┬─────────────┐
│ A   ┆ rolling_std │
│ --- ┆ ---         │
│ f64 ┆ f64         │
╞═════╪═════════════╡
│ 1.0 ┆ null        │
│ 2.0 ┆ 1.0         │
│ 3.0 ┆ 1.0         │
│ 4.0 ┆ 1.0         │
│ 5.0 ┆ 1.0         │
│ 6.0 ┆ null        │
└─────┴─────────────┘

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

Spec-Zone.ru

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