Почему Polars запускает OOM при попытке прочитать сжатый файл CSV, а Pandas может это сделать?Python

Программы на Python
Ответить
Anonymous
 Почему Polars запускает OOM при попытке прочитать сжатый файл CSV, а Pandas может это сделать?

Сообщение Anonymous »

У меня есть сжатый файл CSV, сжатый как csv.gz, который я хочу обработать. Обычно я использую Polars, потому что они более эффективно используют память и работают быстрее. Вот код, который я использую, чтобы лениво читать и фильтровать его, прежде чем запустить какую-либо другую обработку.

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

df = (
pl.scan_csv(underlying_file_path, try_parse_dates=True, low_memory=True)
.select(pl.col("bin", "price", "type", "date", "fut"))
.filter(pl.col("date") == pl.col("date").min())
.collect()
)
При запуске у меня, кажется, заканчивается память, потому что я просто получаю сообщение «Убито» без каких-либо других выходных данных. С другой стороны, когда я пытаюсь прочитать и распечатать один и тот же фрейм данных с помощью Pandas:

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

df = pd.read_csv(underlying_file_path, usecols=["bin_endtime", "strike_price", "opt_type", "expiry_date", "cp_fut"], parse_dates=True, low_memory=True)
Это работает нормально, и я могу нормально распечатать и обработать файл. Это странно, потому что до сих пор я всегда замечал, что Polars способен обрабатывать большие данные, чем Pandas, и при этом работает быстрее. Почему это может происходить?
Подробнее
  • ОС: Ubuntu 22.04.5 LTS
  • Версия Pandas: 2.3.3
  • Версия Polars: 1.35.2
  • Версия Python: 3.10.12
  • Файл размер: 2,1Г
  • Количество строк в CSV-файле: 42,39М
Я хочу отладить то, что здесь происходит, и, если это действительно ограничение Polars, сообщить об этом разработчикам. Как мне увидеть, где что-то разваливается.
Сообщите мне, если потребуются какие-либо другие подробности.

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

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

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

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

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

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