Vom Rohdaten-Archiv zum Master-Datensatz
Data-Engineering-Pipeline für das Zürcher Tramnetz (VBZ) | 2023–2025
Der technische Weg durch die Pipeline
Zusammenführung der fünf Datenquellen zu einem reproduzierbaren Master-Datensatz
38 GB schweizweite Ist-Daten als Ausgangsvolumen
Die IST-Rohdaten beschreiben den gesamten öffentlichen Verkehr der Schweiz — jeder Zug, Bus, jedes Tram, Schiff, jede Seilbahn. Relevant ist ein schmaler Ausschnitt: VBZ Tram Zürich.
Werkzeugwahl per Benchmark auf dem realen Datenvolumen
| Pandas | Polars | Faktor | |
|---|---|---|---|
| Ladezeit (alle Parquets) | 25,7 s | 6,6 s | ~4× |
| RAM-Verbrauch | 6,1 GB | ~1,4 GB | ~4× |
Entscheidung: Polars für alle großen Operationen (IST, Merge). Pandas bleibt für kleine Quellen (GTFS/Meteo/Events) und als Lernreferenz.
Warum Polars — und wie der Wechsel funktioniert
Benchmark auf dem realen IST-Datensatz (~88 Mio Zeilen), nicht auf Spielzeugdaten
Bei dieser Größe am RAM-Limit (6,1 GB) — keine Lazy Evaluation
Query-Planung + Streaming: scan_parquet('*.parquet') liest ~1.035 Tages-Parquets als einen Datensatz
pl.from_pandas() / df.to_pandas() für den Wechsel zwischen kleinen und großen Operationen
Regelbasierte Filterung von ~400 Betreibern auf das VBZ-Tramnetz
~400 CH-Unternehmen → BETREIBER_ID 85:3849 (VBZ), PRODUKT_ID = Tram
2023–2025, nur Format v1 (v2 ab Mitte 2025 ausgeklammert)
nur REAL-GPS-Messungen; Durchfahrten & Zusatzfahrten raus
FAELLT_AUS_TF = true bewusst drin — extremster Verspätungsfall
21 Rohfelder → 10 (KEEP_COLS); Delays & stop_sequence abgeleitet
~11 % der Zeilen entfernt — übrig bleiben echte, planmäßige Halte mit GPS-Zeitstempeln, plus alle Ausfälle.
Soll-Fahrplan und Haltestellen-Stammdaten aus dem ZVV-Netz
Drei heterogene Quellen, konsolidiert auf Stundenbasis
Fehlende Open-Data-Quelle durch eigene Recherche geschlossen
Räumliche Zuordnung der Haltestellen per Spatial Join
Vier Quellen über drei Joins zum validierten Master
Vollständigkeitserhalt: Fehlwerte als null statt Zeilenverlust
Left Join überall: jede Tram-Fahrt bleibt erhalten. Fehlende Werte (Sensor-Ausfall, Event-freier Tag) werden null — statt die Zeile zu löschen.
Datenverlust durch Join ist der häufigste stille Bug in Merge-Pipelines. Left Join macht ihn unmöglich.
Datentyp- und Zeitraster-Fallstricke beim Zusammenführen
Analysefertige, reproduzierbare Datengrundlage
vbz_master.parquet — eine Zeile pro Halt (~230 je Fahrt), angereichert mit Fahrplan, Wetter, Events und Stadtkreis. 1:1 reproduzierbar über die 9 Notebooks.
Zusammensetzung nach Quelle
| Quelle | Spalten | Beispiele |
|---|---|---|
| IST (Verkehr) | 10 | operating_date, trip_id, line_name, arrival_delay, canceled, stop_sequence |
| GTFS (Fahrplan) | 3 | stop_name, stop_lat, stop_lon |
| Geo (Stadtkreis) | 2 | district_nr, district_name |
| Meteo (Wetter) | 7 | temperature, precipitation, wind_speed, flood_intensity |
| Events | 4 | event_name, event_type, event_size, event_location |
| Master gesamt | 26 | eine Zeile pro Halt-Ereignis |
Validation Notebook — die Qualitätsprüfung
26 Spalten, erwartete Typen (date, timestamp[us], float, dictionary …)
94.358.531 Zeilen — deckungsgleich mit dem ursprünglichen Referenz-Datensatz
Left-Join-Nulls plausibel (z.B. event_* an event-freien Tagen)
Voller Lauf 00–08 erzeugt denselben Master — idempotent, resume-fähig
Dokumentierte Scope-Entscheidungen dieser Ausbaustufe
Bewusst dokumentierte Grenzen, nicht übersehene Fehler. Transparenz über Known Issues gehört zu sauberem Data Engineering.
Erweiterungen für eine nächste Iteration
Ab Ende 2025 wechselt opentransportdata.swiss auf Format v2 (großer VBZ-Fahrplanwechsel Dez 2025) — Integration in einer späteren Iteration.
Durchgängige Fahrt-Identität herstellen — Voraussetzung für richtungsspezifische und Kaskadenanalysen.
Weitere abgeleitete Merkmale aus dem Master (z.B. Standzeit/Puffer je Halt) als Modellierungsgrundlage.
Das Resultat: ein neu prozessierter Master v2 ab den Roh-ZIPs mit den erweiterten Feldern.
Vom Rohdaten-Archiv zum Master-Datensatz
Data-Engineering-Pipeline für das Zürcher Tramnetz (VBZ) | 2023–2025
Recherche · Reduktion · Anreicherung · Vereinigung
Master-Datensatz als Data-Engineering-Fundament für das Analyse-Projekt zh-tram-flow