Ich habe eine komprimierte CSV-Datei, die als csv.gz komprimiert ist und die ich verarbeiten möchte. Ich wähle im Allgemeinen Polars, weil es speichereffizienter und schneller ist. Hier ist der Code, den ich verwende, um ihn langsam zu lesen und zu filtern, bevor ich eine andere Verarbeitung darauf ausführen kann.
Code: Select all
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()
)
Wenn ich das ausführe, scheint mir der Speicher auszugehen, weil ich nur die Meldung „Killed“ ohne weitere Ausgabe erhalte. Wenn ich andererseits versuche, denselben Datenrahmen mit Pandas zu lesen und zu drucken:
Code: Select all
df = pd.read_csv(underlying_file_path, usecols=["bin_endtime", "strike_price", "opt_type", "expiry_date", "cp_fut"], parse_dates=True, low_memory=True)
Das funktioniert einwandfrei und ich kann die Datei problemlos drucken und verarbeiten. Das ist unheimlich, denn bisher ist mir immer aufgefallen, dass Polars größere Datenmengen verarbeiten kann als Pandas und dabei schneller ist. Warum könnte das passieren?
Details
- Betriebssystem: Ubuntu 22.04.5 LTS
- Pandas-Version: 2.3.3
- Polars-Version: 1.35.2
- Python-Version: 3.10.12
- Dateigröße: 2.1G
- Anzahl der Zeilen in der CSV-Datei: 42,39 Millionen
Ich möchte debuggen, was hier passiert, und falls es sich um eine echte Einschränkung von Polars handelt, melden Sie es den Entwicklern. Wie erkenne ich, wo etwas auseinanderfällt?
Bitte lassen Sie mich wissen, wenn weitere Details erforderlich sind.