Как улучшить ленивое сканирование и поворот Polars?Python

Программы на Python
Ответить
Anonymous
 Как улучшить ленивое сканирование и поворот Polars?

Сообщение Anonymous »

У меня есть конвейер, в котором я использую pl.scan_ipc для ленивого сканирования коллекции файлов перьев, каждый из которых соответствует кадру данных с уникальным значением «market». Я хочу вычислить значение для каждого загруженного фрейма данных и представить его в виде выходного столбца с рыночной стоимостью в качестве имени столбца.

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

# sample_paths = ['market1.fth', 'market2.fth', 'market3.fth']
query = (
pl.scan_ipc(sample_paths, memory_map=False)
.filter(some_condition)
.select(pl.col('time'), pl.col('market'), pl.col('value').do_something())
.collect()
.pivot(on='market', index='time', values='value')
)
┌─────────────────────┬───────────┬───────────┬──────┐
│ time                ┆ m1        ┆ m2        ┆ m3   │
│ ---                 ┆ ---       ┆ ---       ┆ ---  │
│ datetime[ms]        ┆ f64       ┆ f64       ┆ f64  │
╞═════════════════════╪═══════════╪═══════════╪══════╡
│ 2023-03-10 08:00:00 ┆ 0.023035  ┆ 0.000126  ┆ null │
│ 2023-03-10 08:01:00 ┆ 0.023     ┆ 0.000126  ┆ null │
│ 2023-03-10 08:02:00 ┆ 0.023     ┆ 0.000126  ┆ null │
│ 2023-03-10 08:03:00 ┆ 0.023034  ┆ 0.0001255 ┆ null │
│ 2023-03-10 08:04:00 ┆ 0.0232051 ┆ 0.000125  ┆ null │
└─────────────────────┴───────────┴───────────┴──────┘
Эта операция отлично работает для небольшого количества входных данных, и я могу успешно собрать ряды для всех входных данных (~500 кадров данных по ~1_000_000 строк), но операция поворота в конце требует очень больших вычислительных ресурсов и медленна, и я не уверен, смогу ли я делать это лениво?>

Подробнее здесь: https://stackoverflow.com/questions/785 ... -operation
Ответить

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

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

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

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

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