Spec-Zone.ru › Polars

polars.DataFrame.upsample

DataFrame.upsample(
    time_column: str,
    *,
    every: str | timedelta,
    group_by: str | Sequence[str] | None = None,
    maintain_order: bool = False,
) → DataFrame

Выполняет передискретизацию DataFrame с регулярной частотой.

Аргумент every задаётся строкой на следующем языке:

  • 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.

Параметры:
time_column

Столбец времени, используемый для определения date_range. Обратите внимание, что этот столбец должен быть отсортирован, чтобы результат имел смысл.

every

Интервал будет начинаться с каждой указанной продолжительности.

group_by

Сначала выполните группировку по этим столбцам, а затем передискретизацию для каждой группы.

maintain_order

Сохранять предсказуемый порядок. Это работает медленнее.

Возвращает:
DataFrame

Результат будет отсортирован по time_column (обратите внимание: если переданы столбцы group_by, сортировка будет выполняться только внутри каждой группы).

Примеры

Выполнить передискретизацию DataFrame с заданным интервалом.

>>> from datetime import datetime
>>> df = pl.DataFrame(
...     {
...         "time": [
...             datetime(2021, 2, 1),
...             datetime(2021, 4, 1),
...             datetime(2021, 5, 1),
...             datetime(2021, 6, 1),
...         ],
...         "groups": ["A", "B", "A", "B"],
...         "values": [0, 1, 2, 3],
...     }
... ).set_sorted("time")
>>> df.upsample(
...     time_column="time", every="1mo", group_by="groups", maintain_order=True
... ).select(pl.all().fill_null(strategy="forward"))
shape: (7, 3)
┌─────────────────────┬────────┬────────┐
│ time                ┆ groups ┆ values │
│ ---                 ┆ ---    ┆ ---    │
│ datetime[μs]        ┆ str    ┆ i64    │
╞═════════════════════╪════════╪════════╡
│ 2021-02-01 00:00:00 ┆ A      ┆ 0      │
│ 2021-03-01 00:00:00 ┆ A      ┆ 0      │
│ 2021-04-01 00:00:00 ┆ A      ┆ 0      │
│ 2021-05-01 00:00:00 ┆ A      ┆ 2      │
│ 2021-04-01 00:00:00 ┆ B      ┆ 1      │
│ 2021-05-01 00:00:00 ┆ B      ┆ 1      │
│ 2021-06-01 00:00:00 ┆ B      ┆ 3      │
└─────────────────────┴────────┴────────┘

© 2020 Ritchie Vink
© 2022 Polars contributors
Licensed under the MIT License.
https://docs.pola.rs/api/python/stable/reference/dataframe/api/polars.DataFrame.upsample.html

Spec-Zone.ru

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