polars.LazyFrame.rolling
-
Создать скользящие группы на основе столбца с временными данными или целочисленного столбца.
В отличие от
group_by_dynamic, окна теперь определяются отдельными значениями и не имеют постоянных интервалов. Для постоянных интервалов используйтеLazyFrame.group_by_dynamic().Если у вас есть временной ряд
<t_0, t_1, ..., t_n>, то по умолчанию будут созданы следующие окна:- (t_0 - период, t_0]
- (t_1 - период, t_1]
- …
- (t_n - период, t_n]
Если же передать значение
offset, отличное от значения по умолчанию, окна будут следующими:- (t_0 + смещение, t_0 + смещение + период]
- (t_1 + смещение, t_1 + смещение + период]
- …
- (t_n + смещение, t_n + смещение + период]
Аргументы
periodиoffsetсоздаются на основе 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 индексная позиция)
Или объедините их: «3d12h4m25s» # 3 дня, 12 часов, 4 минуты и 25 секунд
Под «календарным днём» подразумевается соответствующее время следующего дня (который может длиться не 24 часа из-за перехода на летнее время). То же относится к «календарной неделе», «календарному месяцу», «календарному кварталу» и «календарному году».
Изменено в версии 0.20.14: Параметр
byбыл переименован вgroup_by.- Параметры:
-
- index_column
-
Столбец, используемый для группировки по временному окну. Часто имеет тип Date/Datetime. Этот столбец должен быть отсортирован по возрастанию (или, если указан
group_by, он должен быть отсортирован по возрастанию внутри каждой группы).При группировке по скользящему окну на основе индексов тип данных должен быть одним из следующих: {UInt32, UInt64, Int32, Int64}. Обратите внимание, что первые три типа временно приводятся к Int64, поэтому, если важна производительность, используйте столбец Int64.
- period
-
Длина окна — должна быть неотрицательной.
- offset
-
Смещение окна. По умолчанию —
-period. -
closed{‘right’, ‘left’, ‘both’, ‘none’} -
Определяет, какие границы временного интервала включены.
- group_by
-
Также группировать по этому столбцу или этим столбцам
- Возвращает:
-
- LazyGroupBy
-
Объект, для которого можно вызвать
.agg, чтобы агрегировать данные по группам. Результат будет отсортирован поindex_column(но обратите внимание: если переданы столбцыgroup_by, сортировка будет выполняться только внутри каждой группы).
См. также
Примеры
>>> dates = [ ... "2020-01-01 13:45:48", ... "2020-01-01 16:42:13", ... "2020-01-01 16:45:09", ... "2020-01-02 18:12:48", ... "2020-01-03 19:45:32", ... "2020-01-08 23:16:43", ... ] >>> df = pl.LazyFrame({"dt": dates, "a": [3, 7, 5, 9, 2, 1]}).with_columns( ... pl.col("dt").str.strptime(pl.Datetime).set_sorted() ... ) >>> out = ( ... df.rolling(index_column="dt", period="2d") ... .agg( ... pl.sum("a").alias("sum_a"), ... pl.min("a").alias("min_a"), ... pl.max("a").alias("max_a"), ... ) ... .collect() ... ) >>> out shape: (6, 4) ┌─────────────────────┬───────┬───────┬───────┐ │ dt ┆ sum_a ┆ min_a ┆ max_a │ │ --- ┆ --- ┆ --- ┆ --- │ │ datetime[μs] ┆ i64 ┆ i64 ┆ i64 │ ╞═════════════════════╪═══════╪═══════╪═══════╡ │ 2020-01-01 13:45:48 ┆ 3 ┆ 3 ┆ 3 │ │ 2020-01-01 16:42:13 ┆ 10 ┆ 3 ┆ 7 │ │ 2020-01-01 16:45:09 ┆ 15 ┆ 3 ┆ 7 │ │ 2020-01-02 18:12:48 ┆ 24 ┆ 3 ┆ 9 │ │ 2020-01-03 19:45:32 ┆ 11 ┆ 2 ┆ 9 │ │ 2020-01-08 23:16:43 ┆ 1 ┆ 1 ┆ 1 │ └─────────────────────┴───────┴───────┴───────┘
LazyFrame.rolling(
index_column: IntoExpr,
*,
period: str | timedelta,
offset: str | timedelta | None = None,
closed: ClosedInterval = 'right',
group_by: IntoExpr | Iterable[IntoExpr] | None = None,
) → LazyGroupBy
© 2020 Ritchie Vink
© 2022 Polars contributors
Licensed under the MIT License.
https://docs.pola.rs/api/python/stable/reference/lazyframe/api/polars.LazyFrame.rolling.html