polars.Expr.rolling_quantile_by
-
Вычисляет скользящий квантиль на основе другого столбца.
Предупреждение
Эта функциональность считается нестабильной. Она может быть изменена в любой момент без того, чтобы это считалось нарушающим обратную совместимость изменением.
Для столбца
by<t_0, t_1, ..., t_n>значениеclosed="right"(по умолчанию) означает, что окна будут следующими:- (t_0 - window_size, t_0]
- (t_1 - window_size, t_1]
- …
- (t_n - window_size, t_n]
Изменено в версии 1.21.0: Параметр
min_periodsбыл переименован вmin_samples.- Параметры:
-
- by
-
Должен иметь тип данных
DateTime,Date,UInt64,UInt32,Int64илиInt32(обратите внимание, что для целочисленных типов требуется использовать'i'вwindow size). - quantile
-
Квантиль от 0.0 до 1.0.
-
interpolation{‘nearest’, ‘higher’, ‘lower’, ‘midpoint’, ‘linear’, ‘equiprobable’} -
Метод интерполяции.
- window_size
-
Длина окна. Может быть задана динамическим временным интервалом в виде timedelta или строкой следующего формата:
- 1ns (1 наносекунда)
- 1us (1 микросекунда)
- 1ms (1 миллисекунда)
- 1s (1 секунда)
- 1m (1 минута)
- 1h (1 час)
- 1d (1 календарный день)
- 1w (1 календарная неделя)
- 1mo (1 календарный месяц)
- 1q (1 календарный квартал)
- 1y (1 календарный год)
- 1i (1 индексное значение)
Под «календарным днем» понимается то же время следующего дня (который может длиться не 24 часа из-за перехода на летнее время; в неоднозначных случаях мы следуем RFC-5545 и сохраняем DST fold исходного значения datetime). То же относится к «календарной неделе», «календарному месяцу», «календарному кварталу» и «календарному году».
- min_samples
-
Количество значений в окне, которые должны быть не null, прежде чем будет вычислен результат.
-
closed{‘left’, ‘right’, ‘both’, ‘none’} -
Определяет, какие границы временного интервала включены; по умолчанию используется
'right'.
Примечания
Если необходимо вычислить несколько агрегатных статистик для одного и того же динамического окна, рассмотрите возможность использования
rolling— этот метод может кэшировать вычисление размера окна.Примеры
Создайте DataFrame со столбцом datetime и столбцом с номером строки
>>> from datetime import timedelta, datetime >>> start = datetime(2001, 1, 1) >>> stop = datetime(2001, 1, 2) >>> df_temporal = pl.DataFrame( ... {"date": pl.datetime_range(start, stop, "1h", eager=True)} ... ).with_row_index() >>> df_temporal shape: (25, 2) ┌───────┬─────────────────────┐ │ index ┆ date │ │ --- ┆ --- │ │ u32 ┆ datetime[μs] │ ╞═══════╪═════════════════════╡ │ 0 ┆ 2001-01-01 00:00:00 │ │ 1 ┆ 2001-01-01 01:00:00 │ │ 2 ┆ 2001-01-01 02:00:00 │ │ 3 ┆ 2001-01-01 03:00:00 │ │ 4 ┆ 2001-01-01 04:00:00 │ │ … ┆ … │ │ 20 ┆ 2001-01-01 20:00:00 │ │ 21 ┆ 2001-01-01 21:00:00 │ │ 22 ┆ 2001-01-01 22:00:00 │ │ 23 ┆ 2001-01-01 23:00:00 │ │ 24 ┆ 2001-01-02 00:00:00 │ └───────┴─────────────────────┘Вычислите скользящий квантиль с временными окнами, закрытыми справа:
>>> df_temporal.with_columns( ... rolling_row_quantile=pl.col("index").rolling_quantile_by( ... "date", window_size="2h", quantile=0.3 ... ) ... ) shape: (25, 3) ┌───────┬─────────────────────┬──────────────────────┐ │ index ┆ date ┆ rolling_row_quantile │ │ --- ┆ --- ┆ --- │ │ u32 ┆ datetime[μs] ┆ f64 │ ╞═══════╪═════════════════════╪══════════════════════╡ │ 0 ┆ 2001-01-01 00:00:00 ┆ 0.0 │ │ 1 ┆ 2001-01-01 01:00:00 ┆ 0.0 │ │ 2 ┆ 2001-01-01 02:00:00 ┆ 1.0 │ │ 3 ┆ 2001-01-01 03:00:00 ┆ 2.0 │ │ 4 ┆ 2001-01-01 04:00:00 ┆ 3.0 │ │ … ┆ … ┆ … │ │ 20 ┆ 2001-01-01 20:00:00 ┆ 19.0 │ │ 21 ┆ 2001-01-01 21:00:00 ┆ 20.0 │ │ 22 ┆ 2001-01-01 22:00:00 ┆ 21.0 │ │ 23 ┆ 2001-01-01 23:00:00 ┆ 22.0 │ │ 24 ┆ 2001-01-02 00:00:00 ┆ 23.0 │ └───────┴─────────────────────┴──────────────────────┘
Expr.rolling_quantile_by(
by: IntoExpr,
window_size: timedelta | str_,
*,
quantile: float,
interpolation: QuantileMethod = 'nearest',
min_samples: int = 1,
closed: ClosedInterval = 'right',
) → 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_quantile_by.html