Python & Matplotlib – Straßenverkehrsunfälle in Schleswig-Holstein

Das Land Schleswig-Holstein hat zahlreiche Datensätze in einem Open-Data-Portal zur Verfügung gestellt. Dort findet sich auch die Rubrik „Verkehr“, in der ein Datensatz — als CSV-Datei — zu Straßenverkehrsunfällen in Schleswig-Holstein im Zeitraum von 2007 bis 2020 veröffentlicht wurde.

Neben den eigentlichen Daten, enthält diese Datei auch einige Anmerkungen. Deswegen habe ich eine neue CSV-Datei angelegt und jene Spalten, die mich für die grafische Darstellung interessieren, in eine neue CSV-Datei kopiert. Diese hat den Namen „Strassenverkehrsunfaelle-SH.csv“ erhalten:

Jahr;Insgesamt
2007;59645
2008;56314
2009;61067
2010;66699
2011;66317
2012;67296
2013;75034
2014;79333
2015;85346
2016;85443
2017;90105
2018;90707
2019;92209
2020;79566

Zu Beginn der Python-Datei „strassenverkehrsunfaelle-sh.py“ stehen zunächst die Import-Anweisungen:

import pandas as pd
import matplotlib.pyplot as plt

Der dann folgende Code ist dem Code der anderen Beispiele in diesem Blog, z.B. zu den Straßenverkehrsunfällen in Kiel, sehr ähnlich. Allerdings habe ich hier mit

# Set style
plt.style.use('fivethirtyeight')

ein anderes Aussehen definiert. Welche Styles zur Verfügung stehen, lässt sich z.B. in der IDLE Shell mit

>>> import matplotlib.pyplot as plt
>>> plt.style.available

in Erfahrung bringen.

Es geht weiter mit dem Lesen des Datensatzes der CSV-Datei, dem Erstellen eines Subplots und der Zuweisung der zu verwendenden Spalten:

# CSV-Daten lesen
csv_data = 'Strassenverkehrsunfaelle-SH.csv'
df = pd.read_csv(csv_data, sep=';')

# Subplot erstellen
fig, ax = plt.subplots()

# Die Spalten 'Jahr' und 'Insgesamt' zuweisen
x = df['Jahr']
y = df['Insgesamt']

Das Liniendiagramm soll auch eine Überschrift erhalten. Und selbstverständlich dürfen auch die Beschriftungen der X- und der Y-Achse nicht fehlen:

# Beschriftungen hinzufügen
plt.title('Straßenverkehrsunfälle\n in Schleswig-Holstein', size='x-large')
plt.ylabel('Anzahl', size='x-large')
plt.xlabel('Jahr', size='x-large')

Dann folgt das Aussehen der X-Achse und der Linie. Zum Schluss soll die Grafik angezeigt werden. Darüber hinaus ließe sie sich auch als PNG-Datei speichern:

# Aussehen der x-Achse festlegen
ax.set_xticks(range(len(x)))
ax.set_xticklabels(x, rotation='vertical')

# Aussehen der Linie festlegen
plt.plot(y, '*-', markersize=6, linewidth=1, color='r')

# Show line plot
plt.show()

# Save line plot
# plt.savefig('export.png')

Wählt man den Style „dark_background“ führt dies schließlich zu folgendem Liniendiagramm:

Liniendiagramm zu Verkehrsunfällen in Schleswig-Holstein
Liniendiagramm mit dunklem Hintergrund

Weiterführende Links