Zum Inhalt springen
TramPuls

Wie diese Zahlen entstehen

Jede Zahl auf dieser Seite soll nachvollziehbar sein — auch die, die nicht schmeichelt. Hier steht, was gemessen wird, was bewusst nicht mitzählt und wo die Messung selbst Lücken hat.

Was gemessen wird

  1. Alle 30 Sekunden ruft TramPuls den offenen Echtzeit-Datenstrom des Verkehrsverbunds Rhein-Neckar ab und behält daraus nur die Fahrten der Rhein-Neckar-Verkehr GmbH. Jede Änderung an einem Halt wird mitgeschrieben.
  2. Diese Ist-Zeiten werden mit dem Fahrplan verglichen, der an genau diesem Tag galt — nicht mit dem aktuellen. Ein Fahrplanwechsel verändert deshalb keine Zahl von gestern.
  3. Daraus wird je Linie, Richtung und Stunde gezählt, wie viele Halte pünktlich waren und wie viele überhaupt gemessen werden konnten.

Die Zahlen auf einer Linienseite gelten für den dort eingestellten Zeitraum. Ohne Auswahl ist das alles, was bisher aufgezeichnet wurde — es wird kein Zeitfenster erfunden, das die Aufzeichnung gar nicht abdeckt. Ein einzelner Tag lässt sich daneben auswählen; die Zahl der gemessenen Halte steht dann daneben und zeigt, ob der Tag überhaupt trägt.

Warum vier Linien aus einer anderen Quelle kommen

Der Verbund-Datenstrom des VRN führt nicht alle Fahrten der Rhein-Neckar-Verkehr. Zu einigen Linien meldet er über den gesamten Aufzeichnungszeitraum keine einzige Ist-Zeit, obwohl sie im Fahrplan stehen. Für vier Straßenbahnlinien — 4, 4A, 6 und 6A — nimmt TramPuls die Ist-Zeiten deshalb aus dem eigenen offenen Datenstrom der Rhein-Neckar-Verkehr (openRNV), der dieselben Fahrten führt.

Drei Dinge sind daran wichtig, und alle drei stehen auf Befunde mit Zahlen:

Der Befund gilt der Weiterleitung im Verbund-Datenstrom, nicht dem Betrieb und nicht der Meldung durch das Unternehmen: die Fahrten werden gemeldet, nur eben im eigenen Datenstrom. Beide Quellen stehen unter derselben Lizenz und sind auf Lizenz genannt.

Was „pünktlich“ hier heißt

Pünktlich ist ein Halt, an dem die Bahn oder der Bus weniger als die eingestellte Zahl an Minuten zu spät ankam. Die Prozentzahl ist der Anteil solcher Halte an allen gemessenen Halten — also an denen, zu denen überhaupt eine Ist-Zeit gemeldet wurde. Diese Anzahl steht auf jeder Seite neben der Prozentzahl, weil 90 % aus 40 Halten etwas anderes sind als 90 % aus 4.000.

Warum es fünf Schwellen gibt und nicht eine

Auf der Linienseite lässt sich einstellen, ab wann eine Fahrt als zu spät gilt: ab 1, 3, 6, 15 oder 60 Minuten. Eine einzige, amtlich wirkende Zahl wäre bequemer, aber irreführend. Bei einem 5-Minuten-Takt sagt „unter 6 Minuten“ fast nichts — dort kann eine ausgefallene Bahn rechnerisch als „die nächste kam ja pünktlich“ durchgehen. Wer wissen will, wie verlässlich eine Linie wirklich ist, schaltet die Schwellen einmal durch.

Warum ein Ausfall nicht als pünktlich zählt

Fahrten, die abgesagt wurden, und Halte, an denen ein Fahrzeug vorbeifuhr, gehen nicht in die Pünktlichkeit ein. Sie als „null Minuten Verspätung“ zu zählen, würde jede Quote schöner machen, obwohl gar nichts gefahren ist. Sie stehen stattdessen auf jeder Linienseite in einem eigenen Abschnitt „Ausfälle“ — sichtbar, aber getrennt.

Woher die Richtungsangabe kommt

Der Datenstrom liefert für keine einzige RNV-Fahrt ein Fahrtziel — das Feld ist durchgehend leer. Die Richtung wird deshalb abgeleitet: aus dem Halt, an dem die meisten Fahrten dieser Richtung enden.

Bei Linien, die dort enden, wo sie beginnen, führt das ins Leere — beide Richtungen bekämen denselben Namen, und die Umschaltung wäre wirkungslos. Dann benennt TramPuls stattdessen den Weg: den Halt nach einem Viertel der Strecke, weil dort entschieden ist, herum welchen Weg die Fahrt nimmt. Auf der Seite steht dann Umlauf über … statt Richtung …. Betroffen sind zwei Linien.

Viele Fahrten enden vor dem genannten Ziel. Das steht klein unter der Richtungsangabe, weil es sonst so aussähe, als führe jede Fahrt die ganze Strecke — bei einzelnen Linien sind es zwei von drei Fahrten.

Warum das Ruftaxi getrennt steht

Zwölf RNV-Linien fahren nur auf Anmeldung — sie stehen im Fahrplan, fahren aber erst, wenn jemand sie bestellt. Eine Fahrt, die niemand bestellt hat und die deshalb nicht fährt, ist kein Ausfall, und eine Pünktlichkeitsquote misst dort etwas anderes als bei einer Linie im festen Takt.

Diese Linien stehen deshalb auf Linien in einem eigenen Block und zählen nicht in die Zahlen für das ganze Netz. Ihre eigenen Zahlen werden trotzdem gerechnet und angezeigt — sie verschwinden nicht, sie werden nur nicht mit dem Rest verrechnet.

Welche Linien das sind, steht nicht in einer Regel wie „Nummer über 1000“, sondern in einer gepflegten Liste. Der Unterschied ist nicht theoretisch: die Linie RNV 85 heißt „Ruftaxi: LU Oppau – LU Oppau West“ und wäre jeder solchen Nummernregel entgangen.

Aktueller Tag oder gesamter Zeitraum

Auf Start und Netz lässt sich umschalten, worauf sich die Netzzahlen beziehen: auf den aktuellen Betriebstag — das ist die Voreinstellung — oder auf alles, was bisher aufgezeichnet wurde. Die Wahl steht in der Adresse und ist damit zitierbar.

Über mehrere Tage werden dieselben gezählten Größen aufaddiert: geplante Halte, gemessene Halte, pünktliche Halte, Fahrten und Halte ausgefallener Fahrten. Die Prozentzahl entsteht danach aus Summe durch Summe und nicht als Mittelwert über Tagesquoten — sonst zählte ein Tag mit 200 gemessenen Halten so viel wie einer mit 40.000. Die Verspätung im Schnitt wird nach der Zahl der gemessenen Halte gewichtet, aus demselben Grund.

Eine Größe fehlt in dieser Ansicht bewusst: die Zahl der Linien. Sie gilt je Betriebstag, und eine Linie, die an allen Tagen fuhr, wäre in einer Summe mehrfach gezählt. Statt einer Zahl, die verlässlich aussieht und es nicht ist, steht dort die Zahl der Betriebstage, die eingegangen sind. Welche Linien es gibt, steht auf Linien.

Der Zeitraum ist nicht lückenlos. Er umfasst die Tage, für die Zahlen vorliegen; wie vollständig jeder einzelne davon erhoben ist, steht in der Tabelle weiter unten auf dieser Seite. Ein Tag mit geringer Deckung zieht die Gesamtzahl entsprechend seiner Fallzahl mit — er wird weder ausgeschlossen noch hochgerechnet.

Was ein Vergleich aussagt

Auf Vergleich stehen dieselben Kennzahlen zweimal nebeneinander — für zwei frei gewählte Zeiträume, für Schulzeit und Ferien oder für Werktag und Wochenende. Neu gerechnet wird dabei nichts; es sind dieselben Zahlen wie auf der Linienseite, nur getrennt aufaddiert. Werktag und Wochenende brauchen dabei keine Ferienliste: der Wochentag steht schon im Betriebstag selbst.

Der Unterschied darunter ist deshalb kein Befund über den Betrieb. TramPuls sieht Verspätung, nicht ihren Grund: eine Baustelle, eine Umleitung oder ein Fahrplanwechsel erscheinen in diesen Zahlen nicht als solche. Genauso kann ein Unterschied schlicht daher kommen, dass in einem Zeitraum mehr Sonntage lagen, dass dort weniger gemessen wurde oder dass zu wenige Fahrten dahinterstehen. Diese drei Angaben stehen deshalb unter jedem Vergleich, und wo sie deutlich auseinandergehen, steht ein ausdrücklicher Vorbehalt daneben.

Was „in den Ferien“ hier heißt

Ein Betriebstag gilt als Ferientag, wenn an diesem Tag in Baden-Württemberg Schulferien waren. Das Land ist nicht beliebig gewählt: dort liegen 84,2 % der geplanten Halte des RNV-Netzes (353.506 von 419.991, gemessen am 7. September 2026). Die Ferientermine stammen aus den Kultusministerien der drei Länder, in denen die rnv fährt, und stehen als gepflegte Liste im Projekt — nicht aus einer fremden Schnittstelle, die ausfallen kann.

Die übrigen 15,4 % des Netzes liegen in Rheinland-Pfalz und 0,4 % in Hessen, und dort gilt eine eigene Ferienordnung. Während der baden-württembergischen Sommerferien 2026 — vom 30. Juli bis 12. September — war in Rheinland-Pfalz ab dem 10. August wieder Schule. Ein Ferientag in dieser Auswertung ist also für einen Teil des Netzes ein ganz normaler Schultag. Wie viele Tage einer Auswahl das betrifft, steht unter jedem Vergleich.

Eingeordnet wird der Betriebstag, nicht der Kalendertag: die Bahn um 1:30 Uhr in der Nacht auf den ersten Ferientag zählt noch zum letzten Schultag.

Was in dieser Einordnung nicht steckt

Warum der Unterschied nicht die Wirkung der Ferien ist

Zwei Dinge stehen zwischen der Differenz und einer Erklärung, und beide sind gemessen:

Der Fahrplan ist nicht überall derselbe. Netzweit unterscheidet sich das geplante Angebot zwischen einem Ferien- und einem Schulmittwoch nur um 0,7 % — bei 34 von 107 Linien aber überhaupt, und bei einzelnen erheblich: die Linie 21 fährt an einem Schulmittwoch 202 statt 106 Fahrten (gemessen am 7. September 2026 gegen die Fahrplanfassung vom 27. August 2026). Wo das eine Linie betrifft, steht es als Vorbehalt unter ihrem Vergleich, und die Fahrten je Betriebstag stehen in der Tabelle daneben.

Ferien sind ein Zeitraum, keine Ursache. Sommerferien sind auch Sommer, Weihnachtsferien auch Winter. Wetter, Baustellensaison, Berufsverkehr und Urlaubsverkehr verschieben sich mit. TramPuls kann sagen, dass zwei Tagesmengen verschiedene Zahlen tragen — nicht, woran das liegt.

Warum nicht jeder geplante Halt gemessen werden konnte

Auf jeder Seite stehen zwei Zahlen nebeneinander: geplante Halte (alle, die im Fahrplan standen) und gemessene Halte (die, zu denen eine Ist-Zeit ankam). Der Unterschied hat drei Gründe, und alle drei sind hier ausgewiesen statt weggerechnet:

Wenn der Fahrplan wechselt, der Betrieb aber noch nicht

Der Verkehrsverbund veröffentlicht einen neuen Fahrplan oft Wochen bevor er gefahren wird. In dieser Zeit gibt es zwei gültige Fassungen, und jede Fahrt trägt in beiden eine andere Kennung. TramPuls entscheidet je Betriebstag, welche Fassung galt — und zwar danach, welche zu den Meldungen dieses Tages passt, nicht danach, welche die neuere ist. Ein Kalenderdatum kann das nicht entscheiden: die neue Datei beansprucht Gültigkeit ab sofort, auch wenn draußen noch der alte Fahrplan gefahren wird.

An dem Tag, an dem umgeschaltet wird, kann ein Teil der Meldungen deshalb zur jeweils anderen Fassung gehören. Diese Fahrten lassen sich keinem geplanten Halt zuordnen und fließen in keine Kennzahl ein. Sie verschwinden aber nicht stillschweigend — sie stehen in der Tabelle unten als „Fahrten ohne Fahrplanbezug". Steht dort eine Null, gab es an diesem Tag keine. Steht dort eine größere Zahl, ist der Tag nicht einfach schlecht gemessen, sondern es ist bekannt, woran es lag.

Warum der Tag bis nach Mitternacht reicht

Ein Ein Betriebstag beginnt morgens und endet erst, wenn die letzte Nachtfahrt durch ist — meist gegen 3 Uhr früh. Die Bahn um 1:30 Uhr zählt deshalb noch zum Tag davor und nicht zum neuen. ist nicht dasselbe wie ein Kalendertag. Er endet nicht um Mitternacht, sondern wenn die letzte Nachtfahrt durch ist. Die Bahn um 1:30 Uhr gehört deshalb noch zum Abend davor und erscheint im Tagesverlauf als Stunde 25, nicht als Stunde 1 des Folgetags. Wer sie auf 1 Uhr zurückrechnet, verliert genau die Nachtfahrten aus der Auswertung.

Was diese Seite nicht kann

Sie sagt nicht, wann die nächste Bahn kommt — TramPuls schaut zurück, nicht nach vorn. Und sie zeigt keinen laufenden Tag als fertiges Ergebnis: welcher Tag zuletzt vollständig ausgewertet wurde, steht in der Fußzeile jeder Seite. Ist der heutige Tag dabei, ist er naturgemäß noch nicht zu Ende — die Zahlen sind dann ein Zwischenstand, und das steht auch dort, wo die Zahl steht.

Wie vollständig jeder Tag aufgezeichnet wurde

Wie stabil die Prognose war, bevor die Fahrt ankam

Technische Einzelheiten und Begriffe

Auf der Seite steht Alltagssprache. Wer die Zahlen gegen die Rohdaten prüfen will, findet hier die genaue Entsprechung.

Gemessene Halte Halte, zu denen eine Ankunftsverspätung gemeldet wurde — der Nenner jeder Pünktlichkeitsquote. Im Datenmodell: bewertbare_halte.
Geplante Halte Alle Halte laut Sollfahrplan, einschließlich der ausgefallenen. Im Datenmodell: soll_halte.
Übersprungene Halte Halte, die der Echtzeitstrom als SKIPPED meldet: die Fahrt fuhr, hielt hier aber nicht.
Ausgefallene Fahrten Fahrten mit CANCELED im Echtzeitstrom.
Halte ohne Rückmeldung Geplante Halte, zu denen in einer aufgezeichneten Stunde nichts gemeldet wurde. Nicht dasselbe wie „Fahrten ohne jede Rückmeldung“ darunter: dort geht es um ganze Fahrten, hier um einzelne Halte. Im Datenmodell: halte_ohne_meldung.
Fahrten ohne jede Rückmeldung Fahrten aus dem Sollfahrplan, zu denen an keinem Halt je etwas gemeldet wurde, ohne dass sie als ausgefallen gekennzeichnet waren. Ursache offen: echter Ausfall oder Aufzeichnungslücke. Zählt deshalb nicht als Ausfall.
Fahrten ohne Fahrplanbezug Fahrten, zu denen Meldungen ankamen, deren Kennung aber in der für diesen Betriebstag gewählten Fahrplanfassung fehlt — meist beim Wechsel zwischen zwei Fahrplanperioden. Sie gehen in keine Kennzahl ein und sind ausdrücklich nicht in „Halte ohne Rückmeldung“ oder „Nicht aufgezeichnet“ enthalten; sie fallen früher heraus. Im Datenmodell: fahrten_ohne_sollrahmen.
Prozentpunkte Die Einheit des Unterschieds auf der Vergleichsseite. Von 80 % auf 88 % sind acht Punkte — nicht acht Prozent, denn das wären 86,4 %. Die Unterscheidung ist keine Wortklauberei: sie entscheidet, ob eine Zahl doppelt so groß wirkt, wie sie ist.
Verspätung im Schnitt Mittelwert der Ankunftsverspätung über alle gemessenen Halte der Auswahl. Ausgefallene und übersprungene Halte sind nicht darin. Über mehrere Tage wird nach Anzahl der gemessenen Halte gewichtet — sonst zählte ein ruhiger Sonntag mit wenigen Fahrten so viel wie ein Werktag. Im Datenmodell: delay_schnitt_sek.
Halte ausgefallener Fahrten Nicht Fahrten, sondern Halte: jeder geplante Halt einer Fahrt, die als ausgefallen gemeldet wurde. Eine ausgefallene Fahrt mit 20 Halten zählt hier zwanzigfach. Im Datenmodell: halte_fahrt_ausgefallen.
Linien Zahl der Linien mit mindestens einem geplanten Halt an diesem Tag. Ruftaxi ist nicht darin (siehe oben), Straßenbahn und Bus werden getrennt gezählt — sieben Nummern gibt es zweimal, einmal je Verkehrsart.
Nicht aufgezeichnet Geplante Halte in einer Stunde, in der TramPuls gar nichts empfangen hat. Sie sind etwas anderes als Halte ohne Rückmeldung: hier fehlt die Aufzeichnung, nicht die Meldung. Im Datenmodell: halte_nicht_erhoben.
Durchgehend „ja“, wenn für jede Betriebsstunde dieses Tages mindestens eine Beobachtung vorliegt. Ein „nein“ heißt nicht, dass der Tag unbrauchbar ist — nur, dass eine Lücke darin steckt. Im Datenmodell: erhebung_vollstaendig.
Kurzlauf Eine Fahrt, die vor dem Ziel endet, das die Richtung benennt — etwa eine Bahn, die nur bis zur halben Strecke fährt. Im Datenmodell: kurzlauf_anteil je Richtung.
Umlauf Eine Fahrt, die dort endet, wo sie beginnt. Im Datenmodell: ringfahrten_anteil je Richtung.
Anteil gemessen Gemessene Halte geteilt durch geplante Halte, je Betriebstag.
Stunden ohne Aufzeichnung Betriebsstunden eines Tages, für die keine einzige Beobachtung vorliegt — Lücken der Erhebung selbst, nicht des Verkehrs.
Prognose 15 Minuten vorher Die zuletzt gemeldete Ankunftsverspätung eines Halts, mindestens 15 Minuten bevor die letzte Meldung zu diesem Halt kam. Im Datenmodell: prognose_15min_vorher.
Abweichung Betrag der Differenz zwischen der Prognose 15 Minuten vorher und dem letzten gemeldeten Stand desselben Halts. Im Datenmodell: abweichung_sek.
Ferientag / Schultag Einordnung eines Betriebstags danach, ob in Baden-Württemberg Schulferien waren — dem Land mit 84,2 % der geplanten Halte. Grundlage ist eine gepflegte Liste der Ferientermine, keine Ableitung aus dem Fahrplan. Im Datenmodell: ferien_bw in mart_kalender.
Nicht eingeordnet Ein Betriebstag, der jenseits der hinterlegten Ferienliste liegt. Er zählt weder als Ferientag noch als Schultag. Der Unterschied ist wichtig: als „Schultag“ gezählt würde ein solcher Tag eine veröffentlichte Quote verschieben, ohne dass es auffiele. Im Datenmodell: NULL, nicht false.
Fahrten je Betriebstag Geplante Fahrten einer Linie geteilt durch die Zahl der Betriebstage einer Auswahl. Steht unter dem Vergleich, weil eine Linie, die auf beiden Seiten unterschiedlich oft fährt, dort nicht zweimal denselben Betrieb zeigt.
Betriebstag Der Verkehrstag von der ersten bis zur letzten Fahrt, über Mitternacht hinaus. Fahrplanzeiten wie 25:30:00 sind Sekunden seit Betriebstagsbeginn, keine Uhrzeiten.
Dazugekommen Auf der Linienseite: wie viel Verspätung ein Streckenabschnitt im Schnitt hinzufügt (positiv) oder abbaut (negativ). Trennt neu entstehende von mitgeschleppter Verspätung.

Datengrundlage ist der GTFS-Realtime-Strom des VRN, abgerufen alle 30 Sekunden und gefiltert auf die Agency vrn-05 (Rhein-Neckar-Verkehr GmbH). Der Sollfahrplan wird versioniert aufbewahrt; Ist-Daten werden immer gegen die Version verknüpft, die am jeweiligen Betriebstag gültig war. Aggregiert wird über die Station, nicht über den einzelnen Bahnsteig.