Spec-Zone.ru › Polars

polars.Expr.rolling

Expr.rolling(
    index_column: IntoExprColumn,
    *,
    period: str_ | timedelta,
    offset: str_ | timedelta | None = None,
    closed: ClosedInterval = 'right',
) → Expr

Создаёт скользящие группы на основе столбца с временными или целочисленными значениями.

Если у вас есть временной ряд <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     │
└─────────────────────┴─────┴───────┴───────┴───────┘

© 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

Spec-Zone.ru

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