Für dieses Beispiel benötigst Du die Geometrie der Wahlkreise als Shape-Datei und die Ergebnisse der vergangenen Bundestagswahl als CSV-Datei. Beides kannst Du auf den Seiten des Bundeswahlleiters herunterladen:
- Geometrie der Wahlkreise in geografischen Koordinaten (Angabe in Länge- und Breitengrad, Datum WGS84)
- Tabelle: Endgültige Ergebnisse nach Wahlkreisen
Dann geht es schon los.
Installiere Geopandas und lade die benötigten Libraries
pip install geopandas import geopandas as gpd import matplotlib.pyplot as plt import pandas as pd
Importiere Geometriedaten
map_wk = gpd.read_file("Geometrie_Wahlkreise_19DBT_geo.shp")
Zeichne Karte mit Wahlkreisen
f, ax = plt.subplots(1, figsize=(12, 18)) ax = map_wk.plot(ax=ax) ax.set_axis_off()

Importiere Wahlergebnisse von 2017
data_df = pd.read_csv("wk_votes.csv") data_df.head()

Verknüpfe Wahldaten und Geometrie der Wahlkreise
combined = map_df.set_index("WKR_NR").join(data_df.set_index("wk")).reset_index()
Jetzt kann es auch schon losegehen. Zum Beispiel mit einer Karte der Zweitstimmen der Grünen
fig, ax = plt.subplots(1, figsize=(12, 18)) combined.plot(column="green_second_vote", cmap="Greens", linewidth=0.8, ax=ax) ax.axis("off") vmin = 0 vmax = data_df["green_second_vote"].max() sm = plt.cm.ScalarMappable(cmap="Greens", norm=plt.Normalize(vmin=vmin, vmax=vmax)) sm._A = [] cbar = fig.colorbar(sm, fraction=0.046, pad=0.04)

Oder alternativ für die SPD…
fig, ax = plt.subplots(1, figsize=(12, 18)) combined.plot(column="spd_second_vote", cmap="Reds", linewidth=0.8, ax=ax) ax.axis("off") vmin = 0 vmax = data_df["spd_second_vote"].max() sm = plt.cm.ScalarMappable(cmap="Reds", norm=plt.Normalize(vmin=vmin, vmax=vmax)) sm._A = [] cbar = fig.colorbar(sm, fraction=0.046, pad=0.04)
