polars.Expr.rolling_std
-
Вычисляет скользящее стандартное отклонение.
Окно длиной
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 │ └─────┴─────────────┘
Expr.rolling_std(
window_size: int,
weights: list_[float] | None = None,
*,
min_samples: int | None = None,
center: bool = False,
ddof: int = 1,
) → Expr
© 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