Набор данных размером больше памяти с полярамиPython

Программы на Python
Ответить
Anonymous
 Набор данных размером больше памяти с полярами

Сообщение Anonymous »

У меня есть файл паркета с набором данных следующего вида:

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

import polars as pl

df = pl.LazyFrame(
{
"target": [
[1.0, 2.0],
[3.0, 4.0],
],
"point_cloud": [
[
[7.0, 8.0],
[9.0, 10.0],
],
[
[9.0, 10.0],
],
],
},
schema={
"target": pl.Array(pl.Float32, 2),
"point_cloud": pl.List(pl.Array(pl.Float32, 2)),
},
)
Файл содержит 4 миллиона строк и занимает 20 ГБ (не помещается в ОЗУ).
Я пытаюсь получить размер облаков точек, например:

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

df = (
pl.scan_parquet(dataset).select(size=pl.col("point_cloud").list.len()).collect()
)
Но моей программе не хватает памяти, и она умирает. Я попробовал изменить Collect(engine="streaming"), но результат тот же.
Я озадачен, потому что, когда я пытаюсь получить, например. координату x всех целей, все работает нормально (и очень быстро):

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

df = pl.scan_parquet(dataset).select(x=pl.col("target").arr.get(0)).collect()
Могу ли я получить некоторую помощь с этим?
Спасибо
РЕДАКТИРОВАНИЕ
Это график с распределением длины каждого списка (созданный путем запуска одного и того же кода на компьютере с достаточным объемом оперативной памяти для размещения всего набора данных).
Изображение


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

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

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

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

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

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