У меня есть сжатый файл 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