Wiener Straßenquartett

Zählstellen

Das sind die Stellen in der Stadt an denen Verkehrsaufkommen gemessen wird.
Quelle: https://www.data.gv.at/katalog/dataset/4707e82a-154f-48b2-864c-89fffc6334e1
Abgerufen: 18.05.2025

In [2]:
import pandas as pd

zaehlstellen = pd.read_csv("datasets/zaehlstellen.csv")
zaehlstellen.head()
Out[2]:
FID OBJECTID SHAPE ZST_ID ZST_NAME STR_NR BETRIEBNAHME RICHTUNG_1 RICHTUNG_2 LAGE GERAETEART GERAETEART_TXT SE_ANNO_CAD_DATA
0 DAUERZAEHLOGD.507937 507937 POINT (16.379336322827115 48.292896928422145) 1194 Prager Straße B3 2004-03-26 Zentrum Langenzersdorf R1: 5m nach Mayerweckstr.; R2: 5m nach Mayerwe... M_SG MIV_Scheifengerät NaN
1 DAUERZAEHLOGD.507938 507938 POINT (16.341178158960396 48.135722503775334) 1201 Vorarlberger Allee Ost NaN 2007-04-13 Laxenburger Str. S1 100m nach Kreisverkehr M_SG MIV_Scheifengerät NaN
2 DAUERZAEHLOGD.507939 507939 POINT (16.33910997225494 48.13491173912837) 1202 Spange Vösendorf NaN 2007-04-13 Vösendorf S1 140m nach Kreisverkehr M_SG MIV_Scheifengerät NaN
3 DAUERZAEHLOGD.507940 507940 POINT (16.317131840072264 48.163835316772314) 1207 Altmannsdorfer Straße II B224 2009-11-01 Vösendorf Zentrum im Kreuzungsbereich Hetzendorfer Str. M_SG MIV_Scheifengerät NaN
4 DAUERZAEHLOGD.507941 507941 POINT (16.338386633791632 48.13637270019372) 1200 Vorarlberger Allee West NaN 2007-04-13 Zentrum S1 100m nach Kreisverkehr M_SG MIV_Scheifengerät NaN

Das Datenset enthält auch Zählstellen für Radverkehr.
Hier nicht relevant, deshalb entfernen.

In [3]:
zaehlstellen = zaehlstellen[zaehlstellen['GERAETEART'] != 'R_SG']

Eine der vier Metriken der Quartettkarten ist die Spurenanzahl.
Zählstellenposition auf Google Street View ansteuern und zählen.
Abgerufen 18.05.2025

In [4]:
lanes_mapping = {
    1075: 6,
    1078: 7,
    1089: 4,
    1096: 4,
    1131: 6,
    1170: 8,
    1171: 2,
    1172: 4,
    1177: 4,
    1179: 6,
    1180: 3,
    1181: 2,
    1182: 6,
    1184: 2,
    1187: 4,
    1188: 5,
    1189: 5,
    1190: 3,
    1191: 6,
    1192: 3,
    1193: 4,
    1194: 3,
    1195: 2,
    1196: 5,
    1197: 3,
    1198: 3,
    1199: 2,
    1200: 2,
    1201: 2,
    1202: 2,
    1203: 3,
    1204: 3,
    1205: 2,
    1206: 2,
    1207: 4,
    1208: 5,
    1209: 5,
    1210: 2,
    1211: 6,
    1212: 5,
    1213: 3,
    1214: 2,
    1215: 5,
    1216: 3,
    1217: 6,
    1218: 2,
    1219: 2,
    1220: 4,
    1221: 4,
    1222: 3,
    1223: 4,
    1224: 6,
    1600: 2,
    1603: 3,
    1607: 3,
    1608: 8,
    1609: 3,
    1610: 4,
    1611: 2,
    1612: 2,
    1613: 2,
    1614: 2,
    1615: 3,
    1616: 2,
    1617: 2,
    1618: 2,
    1619: 2,
    1620: 2,
    1621: 7,
    1622: 2,
    1623: 2,
    1624: 2,
    1625: 4,
    1626: 5,
    1627: 2
}
zaehlstellen['LANES'] = zaehlstellen['ZST_ID'].map(lanes_mapping)
zaehlstellen[['ZST_NAME', 'ZST_ID', 'LANES']].head()
Out[4]:
ZST_NAME ZST_ID LANES
0 Prager Straße 1194 3
1 Vorarlberger Allee Ost 1201 2
2 Spange Vösendorf 1202 2
3 Altmannsdorfer Straße II 1207 4
4 Vorarlberger Allee West 1200 2

Jede Quartettkarte braucht eine Kurzbeschreibung unter dem Titel.
Dafür Wien-Geschichte-Wiki-Artikel (https://www.geschichtewiki.wien.gv.at) zu Straße auf der die jeweilige Zählstelle liegt zusammenfassen mit ChatGPT.

In [5]:
description_mapping = {
  1623: "Benannt nach der Gemeinde Breitenlee, früher Pressburger Straße.",
  1612: "Benannt nach Josephine Haas von Längenfeld-Pfalzheim, Stifterin.",
  1620: "Benannt nach Robert Endres, früher Teil der Hauptstraße.",
  1187: "Historische Handelsstraße nach Triest, ab 1934 verbreitert.",
  1191: "Teil der Westeinfahrt Wiens, gebaut in den 1930er Jahren.",
  1197: "Benannt nach Breitenlee, um 1830 als Pressburger Straße bekannt.",
  1205: "Benannt zur Wahrung des Namens Hernals, seit 1905 verändert.",
  1206: "Benannt nach Hütteldorf, früher Breitenseer-Hütteldorfer Straße.",
  1211: "Benannt nach Laxenburg, 1971 zur modernen Durchzugsstraße ausgebaut.",
  1212: "Benannt nach dem 22. Bezirk Donaustadt, seit 1971.",
  1600: "Verbindet die Stadt mit Schönbrunn, früher Hundsturmerstraße.",
  1614: "Benannt nach der Ansiedlung Maxing, führt nach Küniglberg.",
  1616: "Benannt nach dem Vorort Gersthof, früher Gersthofer Hauptstraße.",
  1184: "Benannt nach Himberg, früher Teil der Favoritenstraße.",
  1192: "Folgt einer mittelalterlichen Ausfallstraße, 1938-45 umbenannt.",
  1210: "Benannt nach Dr. Josef Kopp, früher Teil der Neustiftgasse.",
  1216: "Benannt nach Perchtoldsdorf, einer Nachbargemeinde Wiens.",
  1609: "Teil des Währinger Gürtels, früher Linienwall.",
  1181: "Früher Liesinger Weg, später Breitenfurter Waldämtliche Straße.",
  1195: "Benannt nach Deutsch-Wagram, früher Süßenbrunner Straße.",
  1198: "Verbindet Wien mit Brünn, 1736 als Reichsstraße angelegt.",
  1208: "Benannt nach dem Wienerberg, früher Meidlinger Straße.",
  1209: "Benannt nach Atzgersdorf, mehrfach verlängert und verändert.",
  1214: "Einer der ältesten Verkehrswege Wiens, seit 1862 benannt.",
  1619: "Früher Liesinger Weg, ab 1888 Breitenfurter Straße.",
  1170: "Franz-Josefs-Kai, ehemals Teil der Stadtmauern, stark befahren.",
  1618: "Benannt nach Werner von Siemens, früher Leopoldauerstraße.",
  1622: "Benannt nach Himberg, ehemals Teil der Favoritenstraße.",
  1078: "Wichtiger Verkehrsknotenpunkt, zweitgrößtes Verkehrsbauwerk Wiens.",
  1177: "Benannt nach dem Donauhandel, früher Handelsquai.",
  1180: "Führt über eine Anhöhe zwischen Rodaun und Perchtoldsdorf.",
  1199: "Benannt nach dem Ortsnamen Essling.",
  1215: "Benannt nach Erzherzog Carl, früher Asperner Straße.",
  1194: "Historische Reichsstraße nach Prag, seit 1728.",
  1201: "Benannt nach Bäumen aus Vorarlberg, seit 1990 offiziell.",
  1202: "Verbindungsstraße bei Vösendorf.",
  1207: "Benannt nach Altmannsdorf, früher Laxenburger Straße.",
  1200: "Benannt nach Bäumen aus Vorarlberg, seit 1990 offiziell.",
  1624: "Benannt nach der Ortschaft Seyring, früher Leopoldauer Platz.",
  1608: "Benannt nach der Vorstadt Margareten, Teil des Gürtelsystems.",
  1610: "Teil des Währinger Gürtels, früher Linienwall.",
  1131: "Benannt nach Karl VI., früher eine Aulandschaft.",
  1172: "Begleitstraße des Donaukanals, stark befahren, seit 1857.",
  1182: "Römische Militärstraße, Teil der historischen Limesstraße.",
  1188: "Benannt nach Altmannsdorf, früher Laxenburger Allee.",
  1189: "Benannt nach der Fabrikantenfamilie Shuttleworth.",
  1193: "Benannt nach Heiligenstadt, früher Nußdorfer Straße.",
  1196: "Benannt nach Erzherzog Carl, früher Asperner Straße.",
  1204: "Erinnert an die Türkenbelagerungen, früher Am Glacis.",
  1607: "Begleitet den Donaukanal, früher Teil der Pressburger Bahn.",
  1615: "Benannt nach Ludwig Freiherr von Gablenz, früher Burggasse.",
  1611: "Römische Militärstraße, Teil der historischen Limesstraße.",
  1613: "Benannt nach Lainz, urkundlich seit 1313 belegt.",
  1213: "Benannt nach der Hofburg, eine der ältesten Straßen Wiens.",
  1603: "Benannt nach Hirschstetten, früher Hirschstettner Hauptstraße.",
  1617: "Benannt nach Angern an der March, früher Bahngasse.",
  1075: "Doppelstockbrücke für Auto-, U-Bahn- und Radverkehr.",
  1089: "Ersetzt die Kaiser-Franz-Josephs-Brücke, 1978 neu eröffnet.",
  1096: "Straßenbrücke über die Donau, seit 1982 in Betrieb.",
  1171: "Benannt nach dem Verlauf entlang des Donaukanals.",
  1179: "Benannt nach Brunn am Gebirge, südlich von Wien.",
  1190: "Straßenname unklar, keine weiteren Informationen verfügbar.",
  1203: "Benannt nach Maria Theresia, früher Teil einer Allee.",
  1218: "Verbindungsstraße bei Leopoldsdorf.",
  1217: "Benannt nach den dortigen Museen, früher Hofstallstraße.",
  1219: "Benannt nach dem Fabrikanten Stephan Barawitzka.",
  1220: "Historisch gewachsene Vorstadtstraße mit repräsentativen Gebäuden.",
  1625: "Benannt nach dem Taubstummeninstitut, seit 1816 erwähnt.",
  1626: "Benannt nach Ludwig von Höhnel, historisch umstritten.",
  1627: "Benannt nach der Ried Felbern, bedeutet Weidenbaum.",
  1221: "Benannt nach einem historischen Flurnamen, früher Grenzweg.",
  1222: "Benannt nach der Universität Wien, früher Franzensring.",
  1223: "Benannt nach dem Dichter Adalbert Stifter.",
  1224: "Benannt nach Deutsch-Wagram, früher Süßenbrunner Straße.",
  1621: "Teil des Währinger Gürtels, früher Linienwall."
}

zaehlstellen['DESCRIPTION'] = zaehlstellen['ZST_ID'].map(description_mapping)
zaehlstellen[['ZST_NAME', 'ZST_ID', 'DESCRIPTION']].head()
Out[5]:
ZST_NAME ZST_ID DESCRIPTION
0 Prager Straße 1194 Historische Reichsstraße nach Prag, seit 1728.
1 Vorarlberger Allee Ost 1201 Benannt nach Bäumen aus Vorarlberg, seit 1990 ...
2 Spange Vösendorf 1202 Verbindungsstraße bei Vösendorf.
3 Altmannsdorfer Straße II 1207 Benannt nach Altmannsdorf, früher Laxenburger ...
4 Vorarlberger Allee West 1200 Benannt nach Bäumen aus Vorarlberg, seit 1990 ...

Die Zählstellenkoordinaten liegen als WKT-Spalte vor.
Auf separate Long- und Lat-Spalten verteilen.

In [6]:
zaehlstellen['LATITUDE'] = zaehlstellen['SHAPE'].apply(lambda x: float(x[7:].split()[1][:-1]))
zaehlstellen['LONGITUDE'] = zaehlstellen['SHAPE'].apply(lambda x: float(x[7:].split()[0]))
zaehlstellen[['ZST_NAME', 'LATITUDE', 'LONGITUDE']].head()
Out[6]:
ZST_NAME LATITUDE LONGITUDE
0 Prager Straße 48.292897 16.379336
1 Vorarlberger Allee Ost 48.135723 16.341178
2 Spange Vösendorf 48.134912 16.339110
3 Altmannsdorfer Straße II 48.163835 16.317132
4 Vorarlberger Allee West 48.136373 16.338387

Jede Quartettkarte inkludiert das Wappen des Bezirks in dem sich die jeweilige Zählstelle befindet.
Dafür PLZ der Zählstellenkoordinate ermitteln.

In [7]:
from joblib import Memory
import time
from geopy.geocoders import Nominatim
from geopy.exc import GeocoderTimedOut

memory = Memory("./cache", verbose=0)
geolocator = Nominatim(user_agent="postcode_retriever")

# https://stackoverflow.com/questions/75202475/joblib-persistence-across-sessions-machines/
def cache(mem, module, **mem_kwargs):
    def cache_(f):
        f.__module__ = module
        f.__qualname__ = f.__name__
        return mem.cache(f, **mem_kwargs)
    return cache_

@cache(memory, "verkehrszaehlungen")
def get_postcode(lat, lon):
    time.sleep(1)  # Nominatim rate limit respektieren
    try:
        location = geolocator.reverse((lat, lon), exactly_one=True)
        if location and 'address' in location.raw:
            return location.raw['address'].get('postcode', None)
    except GeocoderTimedOut:
        return None

zaehlstellen['PLZ'] = zaehlstellen.apply(lambda row: get_postcode(row['LATITUDE'], row['LONGITUDE']), axis=1)

zaehlstellen[['ZST_NAME', 'PLZ']].head()
Out[7]:
ZST_NAME PLZ
0 Prager Straße 1210
1 Vorarlberger Allee Ost 1230
2 Spange Vösendorf 1230
3 Altmannsdorfer Straße II 1120
4 Vorarlberger Allee West 1230

Sind eh alle Zählstellen in Wien bzw. haben eine Wiener PLZ?

In [8]:
zaehlstellen[~zaehlstellen['PLZ'].astype(str).str.startswith('1')]
Out[8]:
FID OBJECTID SHAPE ZST_ID ZST_NAME STR_NR BETRIEBNAHME RICHTUNG_1 RICHTUNG_2 LAGE GERAETEART GERAETEART_TXT SE_ANNO_CAD_DATA LANES DESCRIPTION LATITUDE LONGITUDE PLZ

Ja!

Zählwerte

Das sind die eigentlichen Messwerte des Verkehrsaufkommens.
Quelle: https://www.data.gv.at/katalog/dataset/4707e82a-154f-48b2-864c-89fffc6334e1
Abgerufen: 18.05.2025

In [9]:
zaehlungen = pd.read_csv("datasets/zaehlungen.csv", encoding="latin", sep=";")
zaehlungen.head()
Out[9]:
JAHR MONAT ZNR ZNAME STRTYP STRNR RINAME FZTYP DTVMS DTVMF DTVMO DTVDD DTVFR DTVSA DTVSF TVMAX TVMAXT
0 2024 DEZ. 1075 Reichsbrücke B 8 Leopoldstadt Kfz 17629 20578 18756 21370 20676 14684 10886 26516 Do,05.12.
1 2024 DEZ. 1075 Reichsbrücke B 8 Leopoldstadt LkwÄ 552 732 702 768 672 290 186 1076 Do,05.12.
2 2024 DEZ. 1075 Reichsbrücke B 8 Donaustadt Kfz 13422 14907 14163 15230 14950 12429 9747 18146 *Do,19.12.
3 2024 DEZ. 1075 Reichsbrücke B 8 Donaustadt LkwÄ 517 682 641 725 614 304 167 956 *Mi,18.12.
4 2024 DEZ. 1075 Reichsbrücke B 8 Gesamt Kfz 31051 35485 32919 36601 35626 27112 20633 43147 Do,05.12.

Getrennte JAHR- und MONAT-Spalte zu einer Datumsspalte zusammenführen.

In [10]:
month_mapping = {
    'JAN.': 1, 'FEB.': 2, 'MÄRZ': 3, 'APRIL': 4, 'MAI': 5, 'JUNI': 6,
    'JULI': 7, 'AUG.': 8, 'SEP.': 9, 'OKT.': 10, 'NOV.': 11, 'DEZ.': 12
}
zaehlungen['MONAT'] = zaehlungen['MONAT'].map(month_mapping)
zaehlungen = zaehlungen.rename(columns={'MONAT': 'MONTH', 'JAHR': 'YEAR'})
zaehlungen['DATE'] = pd.to_datetime(zaehlungen[['YEAR', 'MONTH']].assign(DAY=1))
zaehlungen[['DATE', 'ZNAME']].head()
Out[10]:
DATE ZNAME
0 2024-12-01 Reichsbrücke
1 2024-12-01 Reichsbrücke
2 2024-12-01 Reichsbrücke
3 2024-12-01 Reichsbrücke
4 2024-12-01 Reichsbrücke

Zählstellen mit Zählwerten verknüpfen

Kann jeder Zählwert einer Zählstelle zugeordnet werden?

In [11]:
set(zaehlungen['ZNR']) - set(zaehlstellen['ZST_ID'])
Out[11]:
{1185, 1605, 1606}

Nope! Welche Zählstellen fehlen?

In [12]:
set(zaehlungen[(zaehlungen['ZNR'] == 1185) | (zaehlungen['ZNR'] == 1605) | (zaehlungen['ZNR'] == 1606)]['ZNAME'])
Out[12]:
{'Burggasse', 'Leopoldsdorfer Str.', 'Neustiftgasse'}

Von den fehlenden Zählstellen sind nur die Straßennamen bekannt.
Die Koordinate in etwa auf den Mittelpunkt der Straße legen.
Fehlende Zählstellen konstruieren, einfügen und die beiden Datensätze verknüpfen.

In [13]:
zaehlstellen = pd.concat([zaehlstellen, pd.DataFrame.from_records([{ 'ZST_ID': 1185, 'ZST_NAME': 'Neustiftgasse' ,'LONGITUDE': 16.34754073472826, 'LATITUDE': 48.205706700846775, 'PLZ': 1070, 'LANES': 2 , 'DESCRIPTION': 'Einer der ältesten Verkehrswege Wiens, seit 1862 benannt.' }])])
zaehlstellen = pd.concat([zaehlstellen, pd.DataFrame.from_records([{ 'ZST_ID': 1605, 'ZST_NAME': 'Burggasse' , 'LONGITUDE': 16.347385492037365, 'LATITUDE': 48.20443811428511, 'PLZ': 1070,'LANES': 2, 'DESCRIPTION': 'Benannt nach der Hofburg, eine der ältesten Straßen Wiens.'  }])])
zaehlstellen = pd.concat([zaehlstellen, pd.DataFrame.from_records([{ 'ZST_ID': 1606, 'ZST_NAME': 'Leopoldsdorfer Straße' , 'LONGITUDE': 16.39689203897414, 'LATITUDE': 48.13088363172005, 'PLZ': 1100,'LANES': 2, 'DESCRIPTION': 'Führt nach Leopoldsdorf, 1956 durch Blumengasse verlängert.'  }])])

zaehlungen = pd.merge(zaehlstellen, zaehlungen, left_on="ZST_ID", right_on="ZNR", how="inner")

Die verknüpften Zählwerte auf relevante Spalten reduzieren.

Wichtige Abkürzungen:

  • DTVMS = Durchschnittlicher täglicher Verkehr Montag bis Sonntag
  • RINAME = Richtungsname
  • FZTYP = Fahrzeugtyp (Kfz/LkwÄ)
In [14]:
zaehlungen = zaehlungen[['DATE', 'ZST_ID', 'ZST_NAME', 'DESCRIPTION', 'LATITUDE', 'LONGITUDE', 'PLZ', 'RINAME', 'FZTYP', 'DTVMS', 'LANES']]
zaehlungen.head()
Out[14]:
DATE ZST_ID ZST_NAME DESCRIPTION LATITUDE LONGITUDE PLZ RINAME FZTYP DTVMS LANES
0 2024-12-01 1194 Prager Straße Historische Reichsstraße nach Prag, seit 1728. 48.292897 16.379336 1210 Zentrum Kfz 4887 3
1 2024-12-01 1194 Prager Straße Historische Reichsstraße nach Prag, seit 1728. 48.292897 16.379336 1210 Zentrum LkwÄ 148 3
2 2024-12-01 1194 Prager Straße Historische Reichsstraße nach Prag, seit 1728. 48.292897 16.379336 1210 Langenzersd. Kfz 4775 3
3 2024-12-01 1194 Prager Straße Historische Reichsstraße nach Prag, seit 1728. 48.292897 16.379336 1210 Langenzersd. LkwÄ 142 3
4 2024-12-01 1194 Prager Straße Historische Reichsstraße nach Prag, seit 1728. 48.292897 16.379336 1210 Gesamt Kfz 9662 3

Jeder Zählwert (Zeile im Datensatz) enthält die Messwerte an einer Zählstelle für:

  1. einen Monat
  2. eine Fahrrichtung
  3. einen Fahrzeugtypen

Als erstes die Zählwerte auf jeweils jene Fahrtrichtung mit den höchsten Messwerten reduzieren.
Pro Zählstelle, Monat und Fahrzeugtyp gibt es je drei Zählwerte:

  • Richtung A
  • Richtung B
  • Gesamt.

Für Einbahnen sind die Messwerte der Gegenrichtung sowie für Gesamt gleich -1.
Zählwerte reduzieren auf jene mit dem höchsten Messwert.

In [15]:
zaehlungen = zaehlungen.groupby(list(zaehlungen.columns.drop(['DTVMS', 'RINAME'])), as_index=False).agg({ 'DTVMS': 'max' })
zaehlungen.head()
Out[15]:
DATE ZST_ID ZST_NAME DESCRIPTION LATITUDE LONGITUDE PLZ FZTYP LANES DTVMS
0 2016-01-01 1075 Reichsbrücke Doppelstockbrücke für Auto-, U-Bahn- und Radve... 48.230152 16.413131 1220 Kfz 6 33645
1 2016-01-01 1075 Reichsbrücke Doppelstockbrücke für Auto-, U-Bahn- und Radve... 48.230152 16.413131 1220 LkwÄ 6 1088
2 2016-01-01 1078 Westbahnhof Wichtiger Verkehrsknotenpunkt, zweitgrößtes Ve... 48.192688 16.338406 1150 Kfz 7 68974
3 2016-01-01 1078 Westbahnhof Wichtiger Verkehrsknotenpunkt, zweitgrößtes Ve... 48.192688 16.338406 1150 LkwÄ 7 2278
4 2016-01-01 1089 Floridsdorfer Brücke Ersetzt die Kaiser-Franz-Josephs-Brücke, 1978 ... 48.246367 16.382532 1200 Kfz 4 25707

Als nächstes Messwerte für verschiedene Fahrzeugtypen summieren und LKW-Anteil berechnen.

In [16]:
dtvms_sum = zaehlungen.groupby(list(zaehlungen.columns.drop(['DTVMS', 'FZTYP'])))['DTVMS'].transform('sum')
zaehlungen['LKWRATIO'] = zaehlungen['DTVMS'] / dtvms_sum
zaehlungen['DTVMS'] = dtvms_sum
zaehlungen = zaehlungen[zaehlungen['FZTYP'] == 'LkwÄ']
zaehlungen = zaehlungen.drop('FZTYP', axis=1)
zaehlungen.head()
Out[16]:
DATE ZST_ID ZST_NAME DESCRIPTION LATITUDE LONGITUDE PLZ LANES DTVMS LKWRATIO
1 2016-01-01 1075 Reichsbrücke Doppelstockbrücke für Auto-, U-Bahn- und Radve... 48.230152 16.413131 1220 6 34733 0.031325
3 2016-01-01 1078 Westbahnhof Wichtiger Verkehrsknotenpunkt, zweitgrößtes Ve... 48.192688 16.338406 1150 7 71252 0.031971
5 2016-01-01 1089 Floridsdorfer Brücke Ersetzt die Kaiser-Franz-Josephs-Brücke, 1978 ... 48.246367 16.382532 1200 4 26302 0.022622
7 2016-01-01 1096 Brigittenauer Brücke Straßenbrücke über die Donau, seit 1982 in Bet... 48.236765 16.391940 1200 4 21514 0.032769
9 2016-01-01 1131 Karlsplatz Benannt nach Karl VI., früher eine Aulandschaft. 48.199949 16.372730 1040 6 31821 0.028377

Die prozentuelle Veränderung der Messwerte einer Zählstelle über die letzten fünf Jahre berechnen.
Dazu zunächst die durchschnittlichen Zählwerte für das Jahr 2019 berechnen und in einer eigenen Spalte speichern.

In [17]:
dtvms2019 = zaehlungen[zaehlungen['DATE'].dt.year == 2019].groupby('ZST_NAME')['DTVMS'].mean().reset_index()
dtvms2019 = dtvms2019.rename(columns={ 'DTVMS': 'DTVMS2019' })
zaehlungen = zaehlungen.merge(dtvms2019, on='ZST_NAME', how='left')
zaehlungen.head()
Out[17]:
DATE ZST_ID ZST_NAME DESCRIPTION LATITUDE LONGITUDE PLZ LANES DTVMS LKWRATIO DTVMS2019
0 2016-01-01 1075 Reichsbrücke Doppelstockbrücke für Auto-, U-Bahn- und Radve... 48.230152 16.413131 1220 6 34733 0.031325 39569.9
1 2016-01-01 1078 Westbahnhof Wichtiger Verkehrsknotenpunkt, zweitgrößtes Ve... 48.192688 16.338406 1150 7 71252 0.031971 75259.0
2 2016-01-01 1089 Floridsdorfer Brücke Ersetzt die Kaiser-Franz-Josephs-Brücke, 1978 ... 48.246367 16.382532 1200 4 26302 0.022622 29655.0
3 2016-01-01 1096 Brigittenauer Brücke Straßenbrücke über die Donau, seit 1982 in Bet... 48.236765 16.391940 1200 4 21514 0.032769 23283.8
4 2016-01-01 1131 Karlsplatz Benannt nach Karl VI., früher eine Aulandschaft. 48.199949 16.372730 1040 6 31821 0.028377 33687.0

Dann die durchschnittlichen Zählwerte für 2024 berechnen.

In [18]:
zaehlungen = zaehlungen[zaehlungen['DATE'].dt.year == 2024]
zaehlungen = zaehlungen.groupby(list(zaehlungen.columns.drop(['DATE', 'DTVMS', 'LKWRATIO', 'DTVMS2019'])), as_index=False).agg({ 'DTVMS': 'mean', 'LKWRATIO': 'mean', 'DTVMS2019': 'max' })
zaehlungen.head()
Out[18]:
ZST_ID ZST_NAME DESCRIPTION LATITUDE LONGITUDE PLZ LANES DTVMS LKWRATIO DTVMS2019
0 1075 Reichsbrücke Doppelstockbrücke für Auto-, U-Bahn- und Radve... 48.230152 16.413131 1220 6 32296.6 0.038217 39569.9
1 1078 Westbahnhof Wichtiger Verkehrsknotenpunkt, zweitgrößtes Ve... 48.192688 16.338406 1150 7 68973.9 0.023171 75259.0
2 1089 Floridsdorfer Brücke Ersetzt die Kaiser-Franz-Josephs-Brücke, 1978 ... 48.246367 16.382532 1200 4 26241.8 0.024012 29655.0
3 1096 Brigittenauer Brücke Straßenbrücke über die Donau, seit 1982 in Bet... 48.236765 16.391940 1200 4 24286.6 0.024286 23283.8
4 1131 Karlsplatz Benannt nach Karl VI., früher eine Aulandschaft. 48.199949 16.372730 1040 6 33040.5 0.028761 33687.0

Dann die prozentuelle Veränderung der 2019er-Werte zum 2024er-Wert hin berechnen.

In [19]:
zaehlungen['TREND'] = (zaehlungen['DTVMS'] - zaehlungen['DTVMS2019']) / zaehlungen['DTVMS2019']
zaehlungen = zaehlungen.drop('DTVMS2019', axis=1)
zaehlungen.head()
Out[19]:
ZST_ID ZST_NAME DESCRIPTION LATITUDE LONGITUDE PLZ LANES DTVMS LKWRATIO TREND
0 1075 Reichsbrücke Doppelstockbrücke für Auto-, U-Bahn- und Radve... 48.230152 16.413131 1220 6 32296.6 0.038217 -0.183809
1 1078 Westbahnhof Wichtiger Verkehrsknotenpunkt, zweitgrößtes Ve... 48.192688 16.338406 1150 7 68973.9 0.023171 -0.083513
2 1089 Floridsdorfer Brücke Ersetzt die Kaiser-Franz-Josephs-Brücke, 1978 ... 48.246367 16.382532 1200 4 26241.8 0.024012 -0.115097
3 1096 Brigittenauer Brücke Straßenbrücke über die Donau, seit 1982 in Bet... 48.236765 16.391940 1200 4 24286.6 0.024286 0.043069
4 1131 Karlsplatz Benannt nach Karl VI., früher eine Aulandschaft. 48.199949 16.372730 1040 6 33040.5 0.028761 -0.019191

Jede Quartettkarte gehört einer Kategorie an.
Jede Kategorie umfasst genau vier Karten.

Bei 71 Zählstellen müssen drei Zählstellen entfernt werden ... 71 % 4 = 3
Zu entfernende Zählstellen erhalten im Kategorie-Mapping den Wert -1

Die restlichen möglichst sinnvollen Kategorien zuordnen.
Jede Karte enthält auch drei Verweise auf die anderen Karten in der jeweiligen Kategorie (siehe create_linked_strings).

In [20]:
categories = {
    1: 'Am Gürtel',
    2: 'Uferstraßen',
    3: 'Brücken',
    4: 'Zweierlinie',
    5: 'Stadteinfahrten Nord',
    6: 'Stadteinfahrten Süd',
    7: 'Autobahnzufahrten',
    8: 'Gewerbegebiete Süd',
    9: 'Hauptverkehrsstraßen Süd',
    10: 'Sehenswürdigkeiten',
    11: 'Im Wienerwald',
    12: 'Hauptverkehrsstraßen Nord',
    13: 'Gewerbegebiete Nord',
    14: 'Wohnstraßen Zentrum',
    15: 'Wohnstraßen West',
    16: 'Wohnstraßen Süd',
    17: 'Wohnstraßen Nord'
}

categories_mapping = {
    1078: 1,
    1621: 1,
    1170: 2,
    1608: 1,
    1207: 9,
    1191: 11,
    1075: 3,
    1193: 2,
    1131: 10,
    1179: 8,
    1221: 9,
    1215: 12,
    1089: 3,
    1096: 3,
    1220: 4,
    1222: 10,
    1607: 2,
    1177: 2,
    1219: 17,
    1196: 12,
    1626: 7,
    1208: 9,
    1212: 12,
    1224: 12,
    1189: -1,   # Shuttleworthstraße entfernen
    1223: 3,
    1188: 9,
    1182: 6,
    1187: 6,
    1211: 8,
    1217: 4,
    1612: -1,   # Längenfeldgasse entfernen
    1199: 5,
    1209: 16,
    1198: 5,
    1600: 1,
    1197: 5,
    1619: 6,
    1205: 15,
    1618: 13,
    1616: 17,
    1627: 14,
    1210: 15,
    1603: 13,
    1204: 4,
    1611: 10,
    1617: 17,
    1615: 15,
    1200: 8,
    1623: 13,
    1181: 11,
    1202: 7,
    1192: 11,
    1624: 17,
    1190: -1,   # Angyalföldstraße entfernen
    1614: 10,
    1613: 16,
    1625: 14,
    1203: 4,
    1622: 6,
    1206: 15,
    1180: 11,
    1184: 7,
    1194: 13,
    1214: 14,
    1213: 14,
    1218: 7,
    1201: 8,
    1216: 16,
    1195: 5,
    1620: 16,
}
zaehlungen['CATEGORY_ID'] = zaehlungen['ZST_ID'].map(categories_mapping)
zaehlungen = zaehlungen[zaehlungen['CATEGORY_ID'] != -1]
zaehlungen['CATEGORY'] = zaehlungen['CATEGORY_ID'].map(categories)
zaehlungen['CATEGORY_ID_UNIQUE'] = zaehlungen['CATEGORY_ID'].astype(str) + zaehlungen.groupby('CATEGORY_ID').cumcount().map(lambda x: ['A', 'B', 'C', 'D'][x])


def create_linked_strings(group):
    linked_entries = []
    for _, row in group.iterrows():
        others = group[group['CATEGORY_ID_UNIQUE'] != row['CATEGORY_ID_UNIQUE']]
        linked_strings = others.apply(
            lambda other: f"{other['CATEGORY_ID_UNIQUE'][-1].lower()}) {other['ZST_NAME']}", axis=1
        ).tolist()
        if len(linked_strings) != 3:
            raise ValueError("Zu jeder Quartett-Kategorie muss es genau vier Karten geben")
        linked_strings = linked_strings[:3]
        linked_entries.append(linked_strings)
    group = group.copy()
    group[['LINK1', 'LINK2', 'LINK3']] = linked_entries
    return group

zaehlungen = zaehlungen.groupby('CATEGORY_ID', group_keys=False, as_index=False).apply(lambda group: create_linked_strings(group.reset_index(drop=True)), include_groups=True)
zaehlungen = zaehlungen.drop(columns=['CATEGORY_ID'])
zaehlungen = zaehlungen.rename(columns={'CATEGORY_ID_UNIQUE': 'CATEGORY_ID'})
zaehlungen = zaehlungen.reset_index()
zaehlungen[['ZST_NAME', 'ZST_ID', 'CATEGORY', 'CATEGORY_ID', 'LINK1', 'LINK2', 'LINK3']].head()
/var/folders/q5/nzz5_jt15v76ywqnh46qpm9w0000gn/T/ipykernel_4858/2571595554.py:115: DeprecationWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.
  zaehlungen = zaehlungen.groupby('CATEGORY_ID', group_keys=False, as_index=False).apply(lambda group: create_linked_strings(group.reset_index(drop=True)), include_groups=True)
Out[20]:
ZST_NAME ZST_ID CATEGORY CATEGORY_ID LINK1 LINK2 LINK3
0 Westbahnhof 1078 Am Gürtel 1A b) Schönbrunner Straße c) Margaretengürtel d) Währinger Gürtel Nord/Süd
1 Schönbrunner Straße 1600 Am Gürtel 1B a) Westbahnhof c) Margaretengürtel d) Währinger Gürtel Nord/Süd
2 Margaretengürtel 1608 Am Gürtel 1C a) Westbahnhof b) Schönbrunner Straße d) Währinger Gürtel Nord/Süd
3 Währinger Gürtel Nord/Süd 1621 Am Gürtel 1D a) Westbahnhof b) Schönbrunner Straße c) Margaretengürtel
4 Obere Donaustraße/Franz-Josefs-Kai 1170 Uferstraßen 2A b) Handelskai c) Heiligenstädter Straße d) Weißgerber Lände

Die aufbereiteten Daten sichten...

In [21]:
zaehlungen = zaehlungen.sort_values('DTVMS', ascending=False)

with pd.option_context('display.max_rows', None, 'display.max_columns', None): 
    display(zaehlungen)
index ZST_ID ZST_NAME DESCRIPTION LATITUDE LONGITUDE PLZ LANES DTVMS LKWRATIO TREND CATEGORY CATEGORY_ID LINK1 LINK2 LINK3
3 3 1621 Währinger Gürtel Nord/Süd Teil des Währinger Gürtels, früher Linienwall. 48.220674 16.343514 1090 7 72891.2 0.051115 0.244387 Am Gürtel 1D a) Westbahnhof b) Schönbrunner Straße c) Margaretengürtel
0 0 1078 Westbahnhof Wichtiger Verkehrsknotenpunkt, zweitgrößtes Ve... 48.192688 16.338406 1150 7 68973.9 0.023171 -0.083513 Am Gürtel 1A b) Schönbrunner Straße c) Margaretengürtel d) Währinger Gürtel Nord/Süd
4 0 1170 Obere Donaustraße/Franz-Josefs-Kai Franz-Josefs-Kai, ehemals Teil der Stadtmauern... 48.212700 16.377005 1020 8 61988.1 0.038506 -0.112207 Uferstraßen 2A b) Handelskai c) Heiligenstädter Straße d) Weißgerber Lände
2 2 1608 Margaretengürtel Benannt nach der Vorstadt Margareten, Teil des... 48.180930 16.359132 1050 8 53247.8 0.093062 0.217229 Am Gürtel 1C a) Westbahnhof b) Schönbrunner Straße d) Währinger Gürtel Nord/Süd
33 1 1207 Altmannsdorfer Straße II Benannt nach Altmannsdorf, früher Laxenburger ... 48.163835 16.317132 1120 4 47117.3 0.038578 -0.037715 Hauptverkehrsstraßen Süd 9B a) Altmannsdorfer Straße c) Wienerbergstraße d) Grenzackerstraße
42 2 1191 Wientalstraße Teil der Westeinfahrt Wiens, gebaut in den 193... 48.200817 16.241025 1130 6 46844.4 0.030124 -0.103513 Im Wienerwald 11C a) Hochstraße b) Breitenfurter Straße d) Hauptstraße
6 2 1193 Heiligenstädter Straße Benannt nach Heiligenstadt, früher Nußdorfer S... 48.269765 16.361501 1190 4 33067.5 0.037519 -0.106168 Uferstraßen 2C a) Obere Donaustraße/Franz-Josefs-Kai b) Handelskai d) Weißgerber Lände
36 0 1131 Karlsplatz Benannt nach Karl VI., früher eine Aulandschaft. 48.199949 16.372730 1040 6 33040.5 0.028761 -0.019191 Sehenswürdigkeiten 10A b) Universitätsring c) Simmeringer Hauptstraße d) Maxinggasse
8 0 1075 Reichsbrücke Doppelstockbrücke für Auto-, U-Bahn- und Radve... 48.230152 16.413131 1220 6 32296.6 0.038217 -0.183809 Brücken 3A b) Floridsdorfer Brücke c) Brigittenauer Brücke d) Adalbert-Stifter-Straße
28 0 1179 Brunner Straße Benannt nach Brunn am Gebirge, südlich von Wien. 48.129480 16.297933 1230 6 31024.2 0.065875 -0.080034 Gewerbegebiete Süd 8A b) Vorarlberger Allee West c) Vorarlberger Allee Ost d) Laxenburger Straße
35 3 1221 Grenzackerstraße Benannt nach einem historischen Flurnamen, frü... 48.163745 16.375273 1100 4 28401.8 0.032557 -0.078791 Hauptverkehrsstraßen Süd 9D a) Altmannsdorfer Straße b) Altmannsdorfer Straße II c) Wienerbergstraße
46 2 1215 Erzherzog-Karl-Straße III Benannt nach Erzherzog Carl, früher Asperner S... 48.225634 16.464737 1220 5 27221.2 0.043560 -0.011981 Hauptverkehrsstraßen Nord 12C a) Erzherzog-Karl-Straße b) Donaustadtstraße II d) Wagramer Straße II
9 1 1089 Floridsdorfer Brücke Ersetzt die Kaiser-Franz-Josephs-Brücke, 1978 ... 48.246367 16.382532 1200 4 26241.8 0.024012 -0.115097 Brücken 3B a) Reichsbrücke c) Brigittenauer Brücke d) Adalbert-Stifter-Straße
7 3 1607 Weißgerber Lände Begleitet den Donaukanal, früher Teil der Pres... 48.209444 16.395203 1030 3 25952.8 0.022823 -0.147795 Uferstraßen 2D a) Obere Donaustraße/Franz-Josefs-Kai b) Handelskai c) Heiligenstädter Straße
10 2 1096 Brigittenauer Brücke Straßenbrücke über die Donau, seit 1982 in Bet... 48.236765 16.391940 1200 4 24286.6 0.024286 0.043069 Brücken 3C a) Reichsbrücke b) Floridsdorfer Brücke d) Adalbert-Stifter-Straße
37 1 1222 Universitätsring Benannt nach der Universität Wien, früher Fran... 48.210643 16.360720 1010 3 24125.7 0.031578 0.032774 Sehenswürdigkeiten 10B a) Karlsplatz c) Simmeringer Hauptstraße d) Maxinggasse
5 1 1177 Handelskai Benannt nach dem Donauhandel, früher Handelsquai. 48.212263 16.423229 1020 4 23276.4 0.042384 -0.064882 Uferstraßen 2B a) Obere Donaustraße/Franz-Josefs-Kai c) Heiligenstädter Straße d) Weißgerber Lände
15 3 1220 Am Heumarkt Historisch gewachsene Vorstadtstraße mit reprä... 48.203068 16.381609 1030 4 23078.0 0.031034 -0.155827 Zweierlinie 4D a) Maria-Theresien-Straße b) Türkenstraße c) Museumstraße
34 2 1208 Wienerbergstraße Benannt nach dem Wienerberg, früher Meidlinger... 48.171294 16.334826 1120 5 21273.8 0.052423 -0.034094 Hauptverkehrsstraßen Süd 9C a) Altmannsdorfer Straße b) Altmannsdorfer Straße II d) Grenzackerstraße
64 0 1219 Barawitzkagasse Benannt nach dem Fabrikanten Stephan Barawitzka. 48.244604 16.355692 1190 2 21261.0 0.046046 -0.042099 Wohnstraßen Nord 17A b) Gersthofer Straße c) Angerer Straße d) Seyringer Straße
44 0 1196 Erzherzog-Karl-Straße Benannt nach Erzherzog Carl, früher Asperner S... 48.231327 16.449445 1220 5 20892.1 0.033873 -0.070165 Hauptverkehrsstraßen Nord 12A b) Donaustadtstraße II c) Erzherzog-Karl-Straße III d) Wagramer Straße II
27 3 1626 Ludwig-von-Höhnel-Gasse Benannt nach Ludwig von Höhnel, historisch ums... 48.158955 16.387076 1100 5 19905.5 0.056274 -0.051514 Autobahnzufahrten 7D a) Himberger Straße b) Spange Vösendorf c) Spange Leopoldsdorf
45 1 1212 Donaustadtstraße II Benannt nach dem 22. Bezirk Donaustadt, seit 1... 48.221422 16.443841 1220 5 19566.9 0.044443 -0.117232 Hauptverkehrsstraßen Nord 12B a) Erzherzog-Karl-Straße c) Erzherzog-Karl-Straße III d) Wagramer Straße II
21 1 1187 Triester Straße Historische Handelsstraße nach Triest, ab 1934... 48.138209 16.326676 1230 4 19116.0 0.041289 -0.036511 Stadteinfahrten Süd 6B a) Simmeringer Hauptstraße c) Breitenfurter Straße II d) Himberger Str. II
20 0 1182 Simmeringer Hauptstraße Römische Militärstraße, Teil der historischen ... 48.148460 16.461401 1110 6 19109.4 0.060751 0.127741 Stadteinfahrten Süd 6A b) Triester Straße c) Breitenfurter Straße II d) Himberger Str. II
11 3 1223 Adalbert-Stifter-Straße Benannt nach dem Dichter Adalbert Stifter. 48.238397 16.367133 1200 4 18904.2 0.029146 -0.053796 Brücken 3D a) Reichsbrücke b) Floridsdorfer Brücke c) Brigittenauer Brücke
47 3 1224 Wagramer Straße II Benannt nach Deutsch-Wagram, früher Süßenbrunn... 48.253628 16.446353 1220 6 18750.6 0.033542 -0.103828 Hauptverkehrsstraßen Nord 12D a) Erzherzog-Karl-Straße b) Donaustadtstraße II c) Erzherzog-Karl-Straße III
32 0 1188 Altmannsdorfer Straße Benannt nach Altmannsdorf, früher Laxenburger ... 48.138134 16.324620 1230 5 18565.8 0.041759 -0.056625 Hauptverkehrsstraßen Süd 9A b) Altmannsdorfer Straße II c) Wienerbergstraße d) Grenzackerstraße
19 3 1199 Eßlinger Hauptstraße Benannt nach dem Ortsnamen Essling. 48.208368 16.540175 1220 2 17966.4 0.058586 0.054014 Stadteinfahrten Nord 5D a) Wagramer Straße b) Breitenleer Straße c) Brünner Straße
31 3 1211 Laxenburger Straße Benannt nach Laxenburg, 1971 zur modernen Durc... 48.131769 16.355382 1230 6 17836.5 0.170843 -0.085204 Gewerbegebiete Süd 8D a) Brunner Straße b) Vorarlberger Allee West c) Vorarlberger Allee Ost
65 1 1616 Gersthofer Straße Benannt nach dem Vorort Gersthof, früher Gerst... 48.226978 16.325904 1180 2 17377.9 0.095560 -0.051150 Wohnstraßen Nord 17B a) Barawitzkagasse c) Angerer Straße d) Seyringer Straße
60 0 1209 Atzgersdorfer Straße Benannt nach Atzgersdorf, mehrfach verlängert ... 48.169687 16.295998 1130 5 17166.6 0.026144 -0.111671 Wohnstraßen Süd 16A b) Perchtoldsdorfer Straße c) Lainzer Straße d) Endresstraße
18 2 1198 Brünner Straße Verbindet Wien mit Brünn, 1736 als Reichsstraß... 48.301339 16.422884 1210 3 16962.2 0.042799 -0.046366 Stadteinfahrten Nord 5C a) Wagramer Straße b) Breitenleer Straße d) Eßlinger Hauptstraße
14 2 1217 Museumstraße Benannt nach den dortigen Museen, früher Hofst... 48.206862 16.355735 1070 6 16891.7 0.019016 -0.424587 Zweierlinie 4C a) Maria-Theresien-Straße b) Türkenstraße d) Am Heumarkt
1 1 1600 Schönbrunner Straße Verbindet die Stadt mit Schönbrunn, früher Hun... 48.185970 16.338361 1120 2 16782.6 0.044415 -0.069278 Am Gürtel 1B a) Westbahnhof c) Margaretengürtel d) Währinger Gürtel Nord/Süd
50 2 1618 Siemensstraße Benannt nach Werner von Siemens, früher Leopol... 48.266575 16.429032 1210 2 16650.7 0.107106 0.773955 Gewerbegebiete Nord 13C a) Prager Straße b) Hirschstettner Straße d) Breitenleer Straße II
56 0 1205 Hernalser Hauptstraße Benannt zur Wahrung des Namens Hernals, seit 1... 48.219377 16.326554 1170 2 16500.2 0.020143 0.231947 Wohnstraßen West 15A b) Hütteldorfer Straße c) Koppstraße d) Gablenzgasse
55 3 1627 Felberstraße Benannt nach der Ried Felbern, bedeutet Weiden... 48.197310 16.334788 1150 2 16021.6 0.026837 -0.060284 Wohnstraßen Zentrum 14D a) Burggasse II b) Neustiftgasse II c) Taubstummengasse
22 2 1619 Breitenfurter Straße II Früher Liesinger Weg, ab 1888 Breitenfurter St... 48.136981 16.286399 1230 2 16004.8 0.039905 -0.030218 Stadteinfahrten Süd 6C a) Simmeringer Hauptstraße b) Triester Straße d) Himberger Str. II
49 1 1603 Hirschstettner Straße Benannt nach Hirschstetten, früher Hirschstett... 48.242203 16.457850 1220 3 15704.4 0.041726 0.044551 Gewerbegebiete Nord 13B a) Prager Straße c) Siemensstraße d) Breitenleer Straße II
58 2 1210 Koppstraße Benannt nach Dr. Josef Kopp, früher Teil der N... 48.208534 16.321206 1160 2 15141.6 0.027929 -0.061388 Wohnstraßen West 15C a) Hernalser Hauptstraße b) Hütteldorfer Straße d) Gablenzgasse
38 2 1611 Simmeringer Hauptstraße Römische Militärstraße, Teil der historischen ... 48.155944 16.439590 1110 2 14845.7 0.055039 -0.123881 Sehenswürdigkeiten 10C a) Karlsplatz b) Universitätsring d) Maxinggasse
51 3 1623 Breitenleer Straße II Benannt nach der Gemeinde Breitenlee, früher P... 48.250874 16.512603 1220 2 14540.7 0.076455 0.078119 Gewerbegebiete Nord 13D a) Prager Straße b) Hirschstettner Straße c) Siemensstraße
13 1 1204 Türkenstraße Erinnert an die Türkenbelagerungen, früher Am ... 48.219062 16.367604 1090 3 14351.6 0.028581 -0.271943 Zweierlinie 4B a) Maria-Theresien-Straße c) Museumstraße d) Am Heumarkt
59 3 1615 Gablenzgasse Benannt nach Ludwig Freiherr von Gablenz, früh... 48.205840 16.322240 1160 3 14147.2 0.022476 -0.058147 Wohnstraßen West 15D a) Hernalser Hauptstraße b) Hütteldorfer Straße c) Koppstraße
29 1 1200 Vorarlberger Allee West Benannt nach Bäumen aus Vorarlberg, seit 1990 ... 48.136373 16.338387 1230 2 14039.6 0.121090 -0.077198 Gewerbegebiete Süd 8B a) Brunner Straße c) Vorarlberger Allee Ost d) Laxenburger Straße
66 2 1617 Angerer Straße Benannt nach Angern an der March, früher Bahng... 48.258139 16.403061 1210 2 13563.9 0.025068 -0.013707 Wohnstraßen Nord 17C a) Barawitzkagasse b) Gersthofer Straße d) Seyringer Straße
54 2 1625 Taubstummengasse Benannt nach dem Taubstummeninstitut, seit 181... 48.194720 16.369867 1040 4 13095.0 0.027739 -0.038702 Wohnstraßen Zentrum 14C a) Burggasse II b) Neustiftgasse II d) Felberstraße
41 1 1181 Breitenfurter Straße Früher Liesinger Weg, später Breitenfurter Wal... 48.137946 16.238963 1230 2 12967.3 0.034317 -0.033884 Im Wienerwald 11B a) Hochstraße c) Wientalstraße d) Hauptstraße
25 1 1202 Spange Vösendorf Verbindungsstraße bei Vösendorf. 48.134912 16.339110 1230 2 12578.7 0.062167 -0.078416 Autobahnzufahrten 7B a) Himberger Straße c) Spange Leopoldsdorf d) Ludwig-von-Höhnel-Gasse
43 3 1192 Hauptstraße Folgt einer mittelalterlichen Ausfallstraße, 1... 48.207717 16.227658 1140 3 12317.2 0.047575 0.011273 Im Wienerwald 11D a) Hochstraße b) Breitenfurter Straße c) Wientalstraße
39 3 1614 Maxinggasse Benannt nach der Ansiedlung Maxing, führt nach... 48.179356 16.298859 1130 2 12129.1 0.079787 -0.056483 Sehenswürdigkeiten 10D a) Karlsplatz b) Universitätsring c) Simmeringer Hauptstraße
62 2 1613 Lainzer Straße Benannt nach Lainz, urkundlich seit 1313 belegt. 48.179826 16.283935 1130 2 11995.5 0.073544 0.120269 Wohnstraßen Süd 16C a) Atzgersdorfer Straße b) Perchtoldsdorfer Straße d) Endresstraße
67 3 1624 Seyringer Straße Benannt nach der Ortschaft Seyring, früher Leo... 48.274647 16.457665 1210 2 11895.4 0.033550 -0.067086 Wohnstraßen Nord 17D a) Barawitzkagasse b) Gersthofer Straße c) Angerer Straße
24 0 1184 Himberger Straße Benannt nach Himberg, früher Teil der Favorite... 48.127540 16.388957 1100 2 10935.8 0.036309 0.058122 Autobahnzufahrten 7A b) Spange Vösendorf c) Spange Leopoldsdorf d) Ludwig-von-Höhnel-Gasse
57 1 1206 Hütteldorfer Straße Benannt nach Hütteldorf, früher Breitenseer-Hü... 48.198976 16.307015 1140 2 10716.9 0.013420 0.009647 Wohnstraßen West 15B a) Hernalser Hauptstraße c) Koppstraße d) Gablenzgasse
40 0 1180 Hochstraße Führt über eine Anhöhe zwischen Rodaun und Per... 48.132039 16.258624 1230 3 10640.6 0.043439 -0.073667 Im Wienerwald 11A b) Breitenfurter Straße c) Wientalstraße d) Hauptstraße
23 3 1622 Himberger Str. II Benannt nach Himberg, ehemals Teil der Favorit... 48.136839 16.383397 1100 2 10608.1 0.113576 -0.058597 Stadteinfahrten Süd 6D a) Simmeringer Hauptstraße b) Triester Straße c) Breitenfurter Straße II
12 0 1203 Maria-Theresien-Straße Benannt nach Maria Theresia, früher Teil einer... 48.216543 16.366159 1090 3 10422.7 0.037628 -0.309865 Zweierlinie 4A b) Türkenstraße c) Museumstraße d) Am Heumarkt
53 1 1214 Neustiftgasse II Einer der ältesten Verkehrswege Wiens, seit 18... 48.205704 16.344844 1070 2 9776.7 0.033343 -0.075245 Wohnstraßen Zentrum 14B a) Burggasse II c) Taubstummengasse d) Felberstraße
48 0 1194 Prager Straße Historische Reichsstraße nach Prag, seit 1728. 48.292897 16.379336 1210 3 9695.5 0.033494 -0.033061 Gewerbegebiete Nord 13A b) Hirschstettner Straße c) Siemensstraße d) Breitenleer Straße II
52 0 1213 Burggasse II Benannt nach der Hofburg, eine der ältesten St... 48.204198 16.351433 1070 3 8870.2 0.042291 -0.070619 Wohnstraßen Zentrum 14A b) Neustiftgasse II c) Taubstummengasse d) Felberstraße
26 2 1218 Spange Leopoldsdorf Verbindungsstraße bei Leopoldsdorf. 48.128329 16.389218 1100 2 8534.8 0.028946 0.007746 Autobahnzufahrten 7C a) Himberger Straße b) Spange Vösendorf d) Ludwig-von-Höhnel-Gasse
30 2 1201 Vorarlberger Allee Ost Benannt nach Bäumen aus Vorarlberg, seit 1990 ... 48.135723 16.341178 1230 2 8207.9 0.179734 -0.052107 Gewerbegebiete Süd 8C a) Brunner Straße b) Vorarlberger Allee West d) Laxenburger Straße
16 0 1195 Wagramer Straße Benannt nach Deutsch-Wagram, früher Süßenbrunn... 48.278931 16.491721 1220 2 7114.9 0.039881 0.006152 Stadteinfahrten Nord 5A b) Breitenleer Straße c) Brünner Straße d) Eßlinger Hauptstraße
61 1 1216 Perchtoldsdorfer Straße Benannt nach Perchtoldsdorf, einer Nachbargeme... 48.132167 16.281046 1230 3 6749.0 0.038288 -0.127563 Wohnstraßen Süd 16B a) Atzgersdorfer Straße c) Lainzer Straße d) Endresstraße
63 3 1620 Endresstraße Benannt nach Robert Endres, früher Teil der Ha... 48.150463 16.271124 1230 2 5130.9 0.081216 -0.016466 Wohnstraßen Süd 16D a) Atzgersdorfer Straße b) Perchtoldsdorfer Straße c) Lainzer Straße
17 1 1197 Breitenleer Straße Benannt nach Breitenlee, um 1830 als Pressburg... 48.251742 16.460960 1220 3 -58.0 0.500000 -1.003345 Stadteinfahrten Nord 5B a) Wagramer Straße c) Brünner Straße d) Eßlinger Hauptstraße

... und als JSON abspeichern.

In [22]:
zaehlungen.to_json('web/quartett.json', orient="records", index=False)