200 000 Messungen mit vier Spalten werden einmal als CSV und einmal als Parquet geschrieben. Wie gross sind die Dateien, und kommen die Datentypen beim Zurücklesen richtig an?
messung int64
standort object
wert float64
status object
dtype: object
Output Zeile für Zeile
Ausgabe
Wie sie zu lesen ist
Dateigrössen
Parquet ist deutlich kleiner als CSV; das genaue Verhältnis hängt von Bibliothek, Version und Kompression ab und steht in der Ausgabe
Verhältnis
wie viele Parquet-Dateien in eine CSV-Datei passen
Datentypen
integer, character, numeric in R, int64, object, float64 in pandas: wie geschrieben, ohne Raten
Interpretation
Die beiden Sprachen zeigen verschiedene Dateigrössen. Das ist erwartet: Sie schreiben CSV mit unterschiedlicher Formatierung, und die Parquet-Schreiber wählen je nach Version andere Voreinstellungen. Gleich ist die Grössenordnung des Gewinns. Wichtiger als die Grösse sind die Typen: Eine Parquet-Datei weiss, dass wert eine Zahl ist. Eine CSV-Datei weiss es nicht, und genau dort entstehen die Probleme aus Datenimport und Formate.
Frage und Datenlage
Für eine Auswertung werden nur standort und wert gebraucht. Parquet kann die anderen Spalten beim Lesen überspringen.
Bei vier Spalten ist der Gewinn klein. Bei einer Tabelle mit fünfzig Spalten, von denen drei gebraucht werden, liest Parquet einen Bruchteil der Daten. Mit CSV ist das nicht möglich: usecols in pandas oder col_select in readr sparen Speicher, aber die Datei wird trotzdem vollständig durchlaufen.
Frage und Datenlage
Gesucht sind je Standort die Zahl der gültigen Messungen und ihr Mittelwert. Statt die ganze Datei zu laden, wird die Auswertung beschrieben und erst am Ende ausgeführt: in R mit Arrow und dplyr, in Python mit Polars.
Die erste Ausgabe ist kein Ergebnis, sondern der Plan: Arrow zeigt die beschriebene Abfrage, Polars den Ausführungsplan mit dem Filter direkt beim Lesen der Datei.
Interpretation
Der Vorteil liegt im Plan. Weil die ganze Abfrage bekannt ist, bevor gerechnet wird, kann das Werkzeug den Filter an die Datei weiterreichen und nur die Spalten lesen, die in Filter, Gruppierung und Mittelwert vorkommen. Beide Sprachen liefern dieselben Zahlen, weil ihre Dateien aus denselben Daten entstanden sind, auch wenn die Dateien selbst nicht Byte für Byte gleich sind. Die Werkzeuge sind austauschbar, das Format verbindet sie.
Typische Aufgaben
Eine grosse CSV einmal in Parquet umwandeln, ohne sie ganz zu laden
open_dataset("gross.csv", format ="csv") |>write_dataset("parquet_ordner")