Замените операцию поворота для использования в ленивой оценке с полярами.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Замените операцию поворота для использования в ленивой оценке с полярами.

Сообщение Anonymous »

У меня есть набор событий с временными метками, и для каждой временной метки мне нужна сумма «последних» значений каждого имени пользователя. Это можно сделать с помощью сводной таблицы, но я хотел бы использовать LazyFrame, потому что при большом количестве уникальных имен пользователей сводная таблица переполнит ОЗУ. Однако LazyFrame не поддерживает сводку.
Количество уникальных имен пользователей составляет около 1000, а количество событий - порядка десятков миллионов. .
Рабочий пример с опорной точкой и DataFrame:
Входной кадр данных:

Код: Выделить всё

df = pl.from_repr("""
┌────────────┬──────────┬───────┐
│ timestamp  ┆ username ┆ kudos │
│ ---        ┆ ---      ┆ ---   │
│ i64        ┆ str      ┆ i64   │
╞════════════╪══════════╪═══════╡
│ 1690886106 ┆ ABC      ┆ 123   │
│ 1690886107 ┆ DEF      ┆ 10    │
│ 1690886110 ┆ DEF      ┆ 12    │
│ 1690886210 ┆ GIH      ┆ 0     │
└────────────┴──────────┴───────┘
""")
Я могу выполнить эту задачу с помощью Pivot:

Код: Выделить всё

(
df.pivot(
on="username",
index="timestamp",
values=["kudos"],
aggregate_function="last",
)
.select(pl.all().forward_fill())
.fill_null(strategy="zero")
.select(pl.col("timestamp"), pl.sum_horizontal(df["username"].unique().to_list()).alias("sum"))
)
Результаты верны:

Код: Выделить всё

shape: (4, 2)
┌────────────┬─────┐
│ timestamp  ┆ sum │
│ ---        ┆ --- │
│ i64        ┆ i64 │
╞════════════╪═════╡
│ 1690886106 ┆ 123 │
│ 1690886107 ┆ 133 │
│ 1690886110 ┆ 135 │
│ 1690886210 ┆ 135 │
└────────────┴─────┘
Как это можно реализовать с помощью LazyFrame, чтобы он был эффективен для большого количества уникальных имен пользователей (т. е. с использованием отложенной оценки и, возможно, без гигантской разреженной сводной таблицы)?< /п>

Подробнее здесь: https://stackoverflow.com/questions/768 ... ith-polars
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Замените операцию поворота для использования в ленивой оценке с полярами.
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Как объединить head(n) и Tail(n) в одну группу_by с полярами
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Проблемы с памятью при сортировке большего размера, чем файл памяти с полярами
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Квантили ряда с полярами в качестве кадра данных
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Квантили ряда с полярами в качестве кадра данных
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»