Как правильно брать пробу из Polars LazyFrame?Python

Программы на Python
Anonymous
 Как правильно брать пробу из Polars LazyFrame?

Сообщение Anonymous »

Я имею дело с огромным объемом данных (из набора данных CC NEWS).
Перед выполнением данные сохраняются в паркетном файле. Я должен загрузить его с помощью pl.scan_parquet(path), поскольку pl.DataFrame не помещается в память.
Что я пробовал до сих пор:

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

import polars as pl

lf = pl.scan_parquet(path)
lf.select(pl.col("col_of_interest").sample(n=sample_size,seed=0)) \
.sink_parquet("sample.parquet") # (1) crashes

# (2) when above code is run without .sink_parquet():
lf.collect() # crashes
В моем случае интересующий столбец — это содержимое просканированной веб-страницы. Без этого столбца LazyFrame можно было бы легко собрать, поскольку полученный DataFrame будет намного меньше по размеру. При выполнении приведенного выше кода с col_of_interest, даже когда sample_size = 1, программа вылетает (я точно знаю, что образец размера 1 помещается в память). При использовании вместо этого другого столбца с гораздо меньшими данными программа выполняется без каких-либо нареканий.
Мой вопрос:
Каков правильный (эффективный с точки зрения памяти) способ выборки из pl.LazyFrame?
Решения с эффективным использованием памяти, которые производят выборку при сканировании (или чтении) данных, также принимаются.

Подробнее здесь: https://stackoverflow.com/questions/797 ... -lazyframe

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