70 Transportunternehmen befördern in der Schweiz täglich 1,3 Millionen Menschen vom Ausgangs- zum Zielort. Mit über 3000 Zügen bedienen sie zusammen 1'800 Bahnhöfe auf einem Schienennetz von ca. 5’300 Kilometern. Das entspricht einer Luftlinien-Distanz von Zürich nach Pakistan:
Die kleinflächige Schweiz verfügt über eine einzigartige Kombination von Zugs- und Nutzungsdichte, Servicequalität und Zugsicherheit. Das zeigt eine regelmässig durchgeführte Studie der Boston Consulting Group mit dem sogenannten European Performance Index. Laut diesem Ranking ist die Schweiz seit 2012 Spitzenreiterin in der europäischen Zugfahrt, gefolgt von skandinavischen Ländern und Deutschland (letzte Messung: 2017). Trotz dieser herausragenden Leistung sind die Meinungen und Emotionen der Schweizer Bevölkerung gegenüber der Eisenbahn ambivalent: Einerseits ist sie ein Markenzeichen der Schweiz und Teil des Nationalstolzes. Andererseits werden ihr gerne schlechte Zugverbindungen, Unpünktlichkeit und teure Preise zugeschrieben. Eine Google-Suche unter der Kategorie Schweizer-News und den Stichworten «Pünktlichkeit Züge Schweiz» ergibt für den Zeitraum vom Januar 2017 bis heute rund 360 Treffer (Stand Mai 2018) und zeigt die Breite der Diskussionen zum Thema, unter anderem auch zu immer weniger toleranten Pendlern.
Mit dieser Web-Applikation soll aber nicht Partei ergriffen werden. Im Gegenteil. Sie verfolgt das Ziel, objektiv über die Verspätungen (oder eben die Pünktlichkeit) auf dem Schienennetz zu berichten. Dies geschieht anhand einer Datenvisualisierung.
Mit der Visualisierung von Zugdaten sollen sich Pendlerinnen und Pendler ein Bild von der durchschnittlichen Verspätungslage im morgendlichen Zugverkehr der Schweiz machen können. Dazu wurden öffentlich zugänglichen Daten von der Open-Data-Plattform öV Schweiz verwendet. Hier veröffentlicht die Geschäftsstelle «Systemaufgaben Kundeninformation» (SKI) der SBB im Auftrag des Bundesamts für Verkehr (BAV) die Daten des gesamten öffentlichen Verkehrs der Schweiz (inkl. Züge, Busse, Trams, Schiffe etc.). Die SKI stellt für jeden Tag ein Datenfile mit ca. 1 Million Einträgen (Verbindungen) bereit. Zu jeder Verbindung sind Informationen wie Bahnhof, Zugtyp, Zugnummer sowie prognostizierte und effektive Ankunfts- und Abfahrtszeit angegeben.
Für dieses Visualisierungsprojekt wurden die Abfahrtszeiten vom 1. Januar 2018 bis 17. April 2018 analysiert. In einem ersten Schritt wurde die Datenmenge reduziert, indem sie nach folgenden Kriterien gefiltert wurde:
Verkehrsmittel: | nur Züge | |
Bahnhöfe: | 11 grosse Bahnhöfe aus allen Landesteilen |
|
Uhrzeit: | Verbindungen von 04 Uhr bis 11 Uhr | |
Wochentage: | Montag bis Freitag |
Durch die Filtrierung wurden die Daten von etwas über 100 Millionen Einträgen auf rund 127'000 reduziert. Detailliertere Informationen zur Datenaufbereitung und zur Entwicklung der Web-Applikation sind in der Rubrik «Entstehung» anzutreffen.
Hauptkreise | 11 Bahnhöfe in jedem Landesteil der Schweiz |
Sekundärkreise | Zugtypen je Bahnhof (z.B. IC, IR, S-Bahn etc.) |
Kreisgrösse | Anzahl Verbindungen im gewählten Zeitfenster (je grösser der Kreis, desto mehr Züge) |
Verbindungen | T = täglicher Durchschnitt W = wöchentlicher Durchschnitt G = Gesamtanzahl für den analysierten Zeitraum |
Farben | Pünktlichkeit der Züge im gewählten Zeitfenster (je heller die Farbe, desto pünktlicher die Züge) |
Verspätung in Prozent | Durchschnitt für den analysierten Zeitraum vom 1.1.-17.4.18. Ein Zug wird hier als verspätet eingestuft, wenn er den Bahnhof mehr als 2 Minuten nach der geplanten Zeit verlässt. |
Legende Zugtypen | AT: Autoverlad / BEX: Bernina Express / EC: EuroCity / EXT: Extrazug / IC: InterCity / ICE: InterCityExpress / IR: InterRegio / NJ: Nightjet / R: Regio / RB: Regionalbahn / RE: RegioExpress / RJ: Railjet / S: S-Bahn / SN: S-Bahn Nachtlinie / TE2: Transport express régional 200 / TER: Transport express régional / TVG: Train à grande vitesse / VAE: Voralpen-Express |
Nachstehend werden die wichtigsten Aspekte zur Visualisierung beschrieben, interpretiert und mit Massnahmen ergänzt.
Zwischen 9 und 11 Uhr morgens (Montag bis Freitag) sind im Durchschnitt neun von zehn Züge pünktlich. Über alle Bahnhöfe hinweg treten die häufigsten Verspätungen erwartungsgemäss in den Pendlerströmen zwischen 7 und 9 Uhr morgens auf. Ab 9 Uhr werden die Züge im Durchschnitt wieder pünktlicher, während sich die Zugsdichte (Anzahl Verbindungen) bis 11 Uhr kaum verändert.
In Bellinzona und Lausanne sind die Züge generell weniger pünktlich als die Züge in den übrigen visualisierten Bahnhöfen. In Brig entstehen die Verspätungen erst gegen Mittag, insbesondere durch die Zugtypen EC und RE. Bern und Zürich, die beiden grössten Bahnhöfe der Schweiz, schneiden im Pünktlichkeitsvergleich gut ab, während die Züge im Knotenbahnhof Olten im morgendlichen Pendlerverkehr weniger pünktlich sind.
Im Vergleich zwischen den Zugtypen ist festzustellen, dass die S-Bahn den Fahrplan generell weit besser einhalten kann als Züge wie IR, IC, EC oder ICE, die weniger getaktet fahren, weniger Haltestellen bedienen und aus dieser Betrachtungsweise weniger Potenzial für Verspätungen aufweisen. Ausnahme bildet der Bahnhof Bellinzona. Hier verlässt die S-Bahn ihren Bahnhof in bis zu 50% der Fälle verspätet. Verspätungen entstehen also primär im nationalen und internationalen Fernverkehr. Insbesondre die Zugtypen TGV, ICE, NJ und EC sind stark betroffen.
Die Visualisierung zeigt, dass im Zugland Schweiz durchwegs mit Verspätungen zu rechnen ist. Allerdings gilt es zu berücksichtigen, dass die hier berechneten Zahlen mit einer Toleranzgrenze von 2 Minuten Abfahrtsverspätung berechnet wurden. Hebt man die Toleranzgrenze auf 5 Minuten an, würde sich die durchschnittliche Verspätung aller visualisierten Bahnhöfe von 10% auf 2% reduzieren. Gerade in den Bahnhöfen Lausanne und Bellinzona liegen 14% respektive 25% der Verspätungen zwischen 2 und 5 Minuten (hier nicht visualisiert).
Wie gezeigt, ist die S-Bahn generell sehr pünktlich. Dies erstaunt nicht nur wegen der vielen Haltestellen, die S-Bahnen auf ihrem Weg bedienen, sondern auch weil die sogenannten «Bummler» an Kontenbahnhöfen hin und wieder verspätete Züge des Fernverkehrs abwarten müssen. Dass sich dieser Umstand nicht stärker auf die Daten auswirkt, ist womöglich statistisch begründet: Eine hohe Taktung der S-Bahnen bei weniger getaktetem Fernverkehr hebt die durchschnittliche Pünktlichkeit an.
Der internationale Verkehr aus Italien kann als kritisch eingestuft werden. Das zeigt sich anhand der verspäteten EC-Züge aus Milano nach Zürich via Bellinzona und nach Genf via Brig. Dies könnte zur Folge haben, dass Grenzgänger, die regelmässig von Italien in die Schweiz zur Arbeit pendeln das Auto als Transportmittel bevorzugen. Dasselbe gilt für TGV-Verbindungen aus Frankreich. Auch hier ist aber anzumerken, dass der Grossteil der Verbindungen weniger als 5 Minuten verspätet ist.
Welche Massnahmen könnten ergriffen werden, um die Toleranz von Pendlern und Nicht-Pendlern für gelegentliche Verspätungen im Zugverkehr zu erhöhen? Wie könnte das Bewusstsein gefördert werden, dass die Züge in der Schweiz im Grunde sehr pünktlich sind? Ein möglicher Ansatz ist, Menschen mit Fakten für den öffentlichen Verkehr zu gewinnen, indem z.B. Portale wie pünktlichkeit.ch besser bekannt gemacht werden. Weiter könnten die Verspätungsdaten mit einer Kategorie «Verspätungsgründe» ergänzt und öffentlich zur Verfügung gestellt werden. So könnten detailliertere Auswertungen gezogen und Visualisierungen kreiert werden, etwa zu Kettenreaktionen durch Ereignisse wie Tiere in Gleisnähe, Stellwerkstörungen, Wetterbedingungen oder ein unerwarteter Ausfall eines Lokführers. Diese Visualisierungen sollten wiederum an die Bevölkerung gebracht werden.
Weshalb nicht eine spielerische Visualisierung solcher Daten auf der SBB-App integrieren oder einzelne Züge mit Touchscreens ausstatten, auf denen sich Reisende ihre Zeit mit einem Faktencheck zu den Zuglinien ihres Interessens verkürzen können? Basierend auf der psychologischen Erkenntnis, dass ein negatives Erlebnis mit fünf positiven kompensiert werden will (Baumeister, Bratslavski, Finkenauer & Vohs, 2001), könnte ferner das Ziel verfolgt werden, Zuginsassen immer auch darüber zu informieren, wenn ein Zug pünktlich ist. Dies wird heute bei mündlichen Durchsagen teilweise schon umgesetzt. Vielleicht gäbe es Möglichkeiten, solche Pünktlichkeitsinformation auch in automatischen Durchsagen zu integrieren.
Im Folgenden wird in Kürze beschrieben, wie die App von K wie «Kennenlernen» bis W wie «Website» entstanden ist.
In einem ersten Schritt wurden die Daten von der Open-Data-Plattform öV Schweiz heruntergeladen. Jeder Tag besteht aus einem separaten, bis zu 230 MB grossen csv-Datenfile mit über einer Million Zeilen. Zu Beginn wurde ein einzelnes Tagesdatenfile detailliert gesichtet, um ein inhaltliches Verständnis zu erlangen. Es stellten sich zu Beginn Fragen zur Datenqualität, zu den Bezeichnungen der Spalten und technischen Werten, die durch Internetrecherchen geklärt werden konnten.
Eine der grössten Herausforderung des Projekts lag im Umgang mit der Datenmasse. Manipulationen mit Dateien dieser Grösse bringen Standard-Computer an ihre Leistungsgrenze. Dieser Erschwernis konnte mit der Datenbankfunktion von Excel entgegengewirkt werden. Sie bietet die Möglichkeit, beliebig viele Dateien desselben Formats unter Anwendung eigener Filterkriterien in einem Mal einzulesen. So entstand die erste Datenaggregation für einen Monat unter Anwendung der weiter oben aufgeführten Filterkriterien. Die Datenbasis wurde später im Prozess auf 3,5 Monate ausgeweitet.
Anschliessend wurde mit Excel weitergearbeitet. Mit S-Verweisen und mehrfach verschachtelten sowie UND-ODER Bedingungen verknüpften Wenn-Dann-Formeln liessen sich die Verspätungen in Minuten, Verspätungskategorien und Zeitkategorien für jede einzelne Zugverbindung berechnen. Durch PowerPivot war es anschliessend möglich, mehrere Excel-Daten miteinander zu verknüpfen, auszuwerten und in Excel-Diagrammen (klicke für Beispiele) zu visualisieren.
Nun entstand die Idee, welche in der Form von mehreren Papier-Prototypen verfeinert wurde. Die finale Version beinhaltete unterschiedliche features: Zeitregler zum Beobachten der Veränderungen der Pünktlichkeit, Einstellung zur Regulierung der Transformations-Geschwindigkeit der Kreise, Schalter zum Wechseln der Primärkreise «Bahnhof ⇔ Zugtyp», Visualisierung eines Barcharts beim Klick auf einen Bahnhof, das über die Entwicklung der Verspätungskategorien je Wochentag (Mo-Fr) informiert sowie ein Suchfeld zur Eingabe einer Zugnummer und dessen Visualisierung auf dem Barchart. Sämtliche Features sind im finalen Prototypen eingezeichnet.
Mit dem Prototypen in der Hand begann die Suche nach geeigneten D3-Visualisierungen. Die Wahl fiel auf Zoomable Circle Packing von Mike Bostock. Dieses Code-Snippet verlangt nach einem hierarchischen JSON-Datenformat. Die Verspätungsdaten entsprechend zu transformieren, stellte die nächste Herausforderung dar. Dieses Beispiel gibt Einblick in diesen Arbeitsschritt. Mit Erstellung der Website wurde rasch klar, dass sich nicht alle features in der verfügbaren Zeit in die App integrieren liessen. Aufgrund der Annahme, dass Verspätungen regional geprägt sind, fiel der Entscheid schliesslich auf die Visualisierung mit den Bahnhöfen im Primärkreis.
Parallel zur Entwicklung der Applikation entstand die Website. Sie wurde mittels Bootstrap und D3.js sowie unter Verwendung der Programmiersprachen HTML5, CSS und Javascript erstellt. Sie sollte benutzerfreundlich, erfrischend, modern und somit mobile first sein. So zeichnete sich nach und nach das Gesamtbild dieses Projekts, bis schliesslich die fertig entwickelte Web-Applikation ihren Platz im Serverhimmel fand.
Herzlichen Dank an alle, dich mich bei der Entwicklung dieser Applikation unterstützt haben. Ein grosses «Merci!» gilt den Programming Coaches der OpenData-Veranstaltung. Namentlich möchte ich mich zudem bei Oskar Meier und Janik Endtner für ihre geduldige und engagierte Unterstützung bei der Entwicklung der App bedanken.
Lorenz Ryser
(Bern, Switzerland)