polars.Expr.rolling
-
Создаёт скользящие группы на основе столбца с временными или целочисленными значениями.
Если у вас есть временной ряд
<t_0, t_1, ..., t_n>, то по умолчанию будут созданы окна- (t_0 - period, t_0]
- (t_1 - period, t_1]
- …
- (t_n - period, t_n]
Если же передать значение
offset, отличное от значения по умолчанию, окна будут иметь вид- (t_0 + offset, t_0 + offset + period]
- (t_1 + offset, t_1 + offset + period]
- …
- (t_n + offset, t_n + offset + period]
Аргументы
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 часа из-за перехода на летнее время). То же относится к «календарной неделе», «календарному месяцу», «календарному кварталу» и «календарному году».
- Параметры:
-
- index_column
-
Столбец, используемый для группировки по временному окну. Часто имеет тип Date/Datetime. Этот столбец должен быть отсортирован по возрастанию. При группировке по индексу с помощью скользящего окна тип данных должен быть одним из следующих: {UInt32, UInt64, Int32, Int64}. Обратите внимание: первые три типа временно преобразуются в Int64, поэтому, если важна производительность, используйте столбец типа Int64.
- period
-
Длина окна — должна быть неотрицательной.
- offset
-
Смещение окна. По умолчанию —
-period. -
closed{‘right’, ‘left’, ‘both’, ‘none’} -
Задаёт, какие границы временного интервала включаются в него.
Примеры
>>> 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.DataFrame({"dt": dates, "a": [3, 7, 5, 9, 2, 1]}).with_columns( ... pl.col("dt").str.strptime(pl.Datetime).set_sorted() ... ) >>> df.with_columns( ... sum_a=pl.sum("a").rolling(index_column="dt", period="2d"), ... min_a=pl.min("a").rolling(index_column="dt", period="2d"), ... max_a=pl.max("a").rolling(index_column="dt", period="2d"), ... ) shape: (6, 5) ┌─────────────────────┬─────┬───────┬───────┬───────┐ │ dt ┆ a ┆ sum_a ┆ min_a ┆ max_a │ │ --- ┆ --- ┆ --- ┆ --- ┆ --- │ │ datetime[μs] ┆ i64 ┆ i64 ┆ i64 ┆ i64 │ ╞═════════════════════╪═════╪═══════╪═══════╪═══════╡ │ 2020-01-01 13:45:48 ┆ 3 ┆ 3 ┆ 3 ┆ 3 │ │ 2020-01-01 16:42:13 ┆ 7 ┆ 10 ┆ 3 ┆ 7 │ │ 2020-01-01 16:45:09 ┆ 5 ┆ 15 ┆ 3 ┆ 7 │ │ 2020-01-02 18:12:48 ┆ 9 ┆ 24 ┆ 3 ┆ 9 │ │ 2020-01-03 19:45:32 ┆ 2 ┆ 11 ┆ 2 ┆ 9 │ │ 2020-01-08 23:16:43 ┆ 1 ┆ 1 ┆ 1 ┆ 1 │ └─────────────────────┴─────┴───────┴───────┴───────┘
Expr.rolling(
index_column: IntoExprColumn,
*,
period: str_ | timedelta,
offset: str_ | timedelta | None = None,
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.html