Python, Pandas und Verkehrsunfälle in Kiel

In den ersten drei Python-Beiträgen ging es um die Darstellung von Daten unter Verwendung von Matplotlib. Bevor Daten aber visualisiert werden können, muss man zunächst einmal überhaupt Zugriff auf sie haben. Außerdem bedarf es u.U. einer Datenaufarbeitung. Denn eventuell werden nur bestimmte Daten eines Datensatzes benötigt, was bedeutet, dass man diese Daten von den übrigen Daten extrahieren muss. Und nicht zuletzt mag auch eine Analyse der Daten von Interesse sein. Hier kommt Pandas ins Spiel, eine Python-Bibliothek, die genau diesen Anforderungen gerecht wird.

Als Datensatz für nachfolgendes Beispiel habe ich erneut eine CSV-Datei aus dem Open-Data-Portal der Stadt Kiel gewählt. Diesmal geht es um Straßenverkehrsunfälle in Kiel.

Vorbereitungen

Ladet die erforderliche CSV-Datei herunter. Ich habe einen kürzeren Dateinamen vergeben und sie “kiel_unfaelle.csv” genannt.

Des Weiteren müssen folgende Pakete installiert sein:

  • pandas
  • matplotlib

Dafür kann beispielsweise pip bzw. pip3 in der Shell bzw. PowerShell verwendet werden:

$ pip3 install pandas matplotlib

Zum Code

Legt eine neue Datei, zum Beispiel mit dem Namen “kiel_unfaelle.py”, an und importiert zunächst die erforderlichen Bibliotheken:

import pandas as pd
import matplotlib.pyplot as plt

Da für die Darstellung der Daten als Liniendiagramm die Darstellung der X-Achse anpasst werden soll, wird zunächst ein Subplot festgelegt:

fig, ax = plt.subplots()

Jetzt kommt Pandas ins Spiel: Dank dieser Bibliothek wird das Einlesen eines Datensatzes von einer CSV-Datei zum Kinderspiel:

df = pd.read_csv("kiel_unfaelle.csv", sep=";")
print(df.head())

Häufig wird „df“ als Variablennamen verwendet, was als Kurzform für dataframe steht. Falls Euch der Begriff Dataframe noch nicht begegnet ist: Die Pandas-Bibliothek enthält einige nützliche Datenstrukturen, u.a. das Dataframe-Objekt. Dabei handelt es sich um eine Zwei-Dimensionale Tabelle mit Zeilen und Spalten (so wie man es beispielsweise aus einer Tabellenkalkulation wie Excel oder Numbers kennt).

Die Funktion read_csv() erledigt das Einlesen der Daten, wobei hier ein Semikolon als Trennzeichen angegeben werden muss.

Führt nun den bisherigen Code aus, um zu testen ob das Einlesen auch tatsächlich funktioniert. Hierfür wollen wir uns nicht den kompletten Datensatz anzeigen lassen, weswegen head() benutzt wird, was dazu führt, dass lediglich die ersten fünf Zeilen des Datensatzes ausgegeben werden.

War dies erfolgreich, können wir uns nun der eigentlichen Aufgabe widmen: Ziel ist es, die Daten in den Spalten „Jahr“ und „Unfaelle“ grafisch darzustellen. Alle übrigen Spalten interessieren uns nicht. Mit Pandas ist dies sehr einfach zu realisieren. Die Werte der jeweiligen Spalten werden wie folgt den Variablen x und y zugewiesen:

x = df['Jahr']
y = df['Unfaelle']

Anschließend können die Daten grafisch dargestellt werden. Da der Code mit demjenigen der vorhergehenden Beispiele identisch ist, verzichte ich hier darauf, erneut im Detail darauf einzugehen:

plt.title("Straßenverkehrsunfälle", size="x-large")
plt.ylabel("Anzahl", size="x-large")
plt.xlabel("Jahr", size="x-large")

plt.plot(y, "*-", markersize=6, linewidth=1, color='b', label="Unfälle")

plt.legend(loc=(0.4, 0.8))

ax.set_xticks(range(len(x)))
ax.set_xticklabels(x, rotation='vertical')

plt.show()
Strassenverkehrsunfälle in Kiel

Weiterführende Links

Der komplette Code steht bei Github zum Download bereit. So könnt Ihr sofort loslegen und als Übung eine andere CSV-Datei mit interessanten Daten auswerten.

Darüber hinaus könnten noch nachfolgende Links von Interesse sein:

Zuletzt aktualisiert am 19. Juni 2021