CLI Logo

Geparste Zugverspätungen

Die geparsten Zugverspätungen decken nahezu alle Zugbewegungen in Deutschland seit September 2021 ab. Ab September 2023 erfassen wir auch die Entwicklung der Verspätungsprognosen der DB. Dieser Datensatz wird von Bahn-Vorhersage verwendet, um Verspätungsvorhersagemodelle zu trainieren.

Datenmodell

Unser Datenmodell unterscheidet sich von vielen anderen Verkehrsdatenmodellen, aber wer mit GTFS vertraut ist, dem werden viele Spaltennamen bekannt vorkommen. Die Daten sind in tägliche Parquet-Dateien nach service_date (dem Datum, an dem die Fahrt begann) gruppiert. Jedes Halteereignis ist ein separater Datenpunkt, sodass die meisten Haltestellen zwei Datenpunkte erzeugen: einen für die Ankunft und einen für die Abfahrt. Wenn nur ein Typ benötigt wird, muss nach der Spalte is_arrival gefiltert werden.

Die Daten haben eine zeitliche Auflösung / Genauigkeit von einer Minute. Einige Spalten enthalten Dauern in Sekunden, aber das bedeutet nicht, dass die ursprünglichen Messungen Sekunden enthalten. Soweit wir wissen, schneidet die DB Sekunden für Ankunfts- und Abfahrtszeiten ab (z.B. wird 10:20:56 zu 10:20:00).

Da die Daten seit September 2023 die Entwicklung der Verspätungsprognosen erfassen, enthält nicht jeder Datenpunkt die endgültige Verspätung. Die Spalte is_final zeigt an, ob dies die letzte von Bahn-Vorhersage empfangene Prognose ist. Spaltennamen können verwirrend sein: Zum Beispiel enthält time_real nicht unbedingt die tatsächliche Zeit. Die Spalte sollte als time_prognosed behandelt werden. Endgültige Werte sind es nur, wenn nach is_final==true gefiltert wurde.

Die folgende Tabelle gibt vollständige Details zu allen Spalten.

NameBeschreibung
trip_idInt64: Gehashte ID, eindeutig pro Fahrt
time_scheduleDatetime: Geplante Zeit
time_realDatetime: Prognostizierte Zeit. Wenn is_final==true, ist dies die tatsächliche Zeit.
update_timestampDatetime: Crawling-Zeitstempel der Echtzeitinformationen, die in diesem Datenpunkt enthalten sind.
delayInt32: Differenz in Sekunden zwischen time_real und time_schedule.
dwell_time_scheduleInt32: Geplante Haltezeit an der Haltestelle. Fehlt, wenn nur Ankunfts- oder Abfahrtszeit verfügbar ist.
dwell_time_realInt32: Prognostizierte (oder tatsächliche) Haltezeit an der Haltestelle.
is_finalBoolean: Zeigt an, ob dies das endgültige Echtzeit-Update ist.
is_arrivalBoolean: Ob der Datenpunkt eine Ankunft ist.
is_cancelledBoolean: Gibt an, ob dieser Halt entfällt. Da ein Halt meistens aus Ankunft und Abfahrt besteht, kann auch nur eine davon entfallen.
is_regionalBoolean: Ob die Kategorie als Regionalzug betrachtet wird.
categoryString: Kategorie des Zuges (zum Beispiel: ICE, RE, RB, S).
numberString: Zugnummer
lineString: Linienkennung (zum Beispiel: '6' für S6, '200' für RE 200 oder 'RB61' für ag RB61).
operatorString: Operator code des Eisenbahnunternehmens, das den Zug betreibt
stop_idInt64: ID der Haltestelle; verlinkt zum Haltestellendatensatz (siehe Haltestellen).
platform_id_scheduleInt64: Geplante Bahnsteig-/Haltestellen-ID; verlinkt zum Haltestellendatensatz (siehe Haltestellen).
platform_id_realInt64: Vorhergesagte (oder tatsächliche) Bahnsteig-/Haltestellen-ID. Die Haltestelle kann nicht von der geplanten Haltestelle abweichen. Verlinkt zum Haltestellendatensatz (siehe Haltestellen).
latFloat64: Breitengrad der Haltestelle. Die Quellen geben das Referenzsystem nicht an; wir nehmen EPSG:4326 an.
lonFloat64: Längengrad der Haltestelle
distance_traveledInt32: Geplante Entfernung in Metern, die die Fahrt seit ihrem Ursprung zurückgelegt hat. Vom Parser angenommen.
initial_scheduled_departureDatetime: Ursprünglich geplante Abfahrtszeit am Ursprung.
initial_stop_idInt64: Haltestellen-ID des Ursprungs; verlinkt zum Haltestellendatensatz (siehe Haltestellen).
stop_sequenceUInt16: Sequenznummer der Haltestelle, beginnend mit 1 für den Ursprung.
trip_headsignInt64: Haltestellen-ID der Zielhaltestelle; verlinkt zum Haltestellendatensatz (siehe Haltestellen).
is_betriebshaltBoolean: Ob die Haltestelle vom Parser als Betriebshalt (eine Haltestelle, an der Fahrgäste nicht ein- oder aussteigen dürfen) betrachtet wird.
pickup_drop_off_typeEnum: Entweder REGULAR (=0) oder NOT_ALLOWED (=1).
message_codesList(Int16): Liste der dem Ereignis zugeordneten Nachrichtencodes.
Datenschema der tabellarischen Daten. Datentyp in Kursivschrift. Alle Datumsangaben sind in UTC und verwenden Mikrosekunden.

Datenvollständigkeit

Der Datensatz ist aufgrund von Crawling-Fehlern unvollständig. Fehlende Daten werden im folgenden Data-Paper im Absatz "Completeness and Scope" beschrieben. Das Paper beschreibt zudem auch den Prozess der Datensammlung genau.

Preprint Data Paper

Daten

Die Daten sind in der Mobilithek verfügbar: Du musst eingeloggt sein, um Daten zu sehen und anzufordern.

Geparste Zugverspätungsdaten anfordern

Der Datensatz enthält jährliche .tar Archive mit täglichen Parquet-Dateien. Neue Archive werden hochgeladen, nachdem das Jahr abgeschlossen ist.

Lizenz

Die Daten sind unter der Open Database License verfügbar. Credits müssen an Bahn-Vorhersage, Deutsche Bahn, Trainline und DELFI zugeordnet werden.

Wenn Du ein Problem mit dieser Dokumentation findest, dann öffne doch bitte ein Issue auf GitLab.

Gefördert von:

Logo des Bundesministeriums für Bildung und Forschung

Zeitraum: Sep. 23 - Feb. 24

Logo des Prototypefunds
Logo des Schülerforschungszentrums Südwürttemberg
© 2026 Bahn-Vorhersage ist ein unabhängiger Service. Dieser steht in keiner Verbindung mit der Deutschen Bahn und ihren Tochter-Unternehmen.