Python & Matplotlib – Sozialhilfeaufwendungen in Kiel

Zum Github-Repository Kiel_Open_Data ist ein weiteres Projekt hinzugekommen. Diesmal geht es um die Darstellung der Sozialhilfeaufwendungen in Kiel. Dazu gibt es im Open-Data-Portal der Stadt Kiel einige Zahlen. In diesem Beispiel habe ich aber lediglich die Aufwendungen zur Grundsicherung im Zeitraum von 2010 bis 2021 als Liniendiagramm dargestellt. Um dies umsetzen zu können, müssen folgende Module installiert werden:

  • requests,
  • pandas,
  • numpy und
  • matplotlib

Der Code sieht wie folgt aus:

#!/usr/bin/env python3

import io
import requests
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# Set width and height
plt.rcParams["figure.figsize"] = (14.0, 8.0)

CSV_URL = "https://www.kiel.de/de/kiel_zukunft/statistik_kieler_zahlen/open_data/kiel_soziales_sozialhilfeaufwendungen.csv"


def main():
    # Fetch data
    csv_data = requests.get(CSV_URL).content

    # Read data
    df = pd.read_csv(io.StringIO(csv_data.decode("utf-8")), sep=";")
    print(df.head(3))

    # Create a subplot
    _, ax = plt.subplots()

    # Drop NA values
    df_cleaned = df.dropna(how="all")

    # Unsigned integer
    df_years = df_cleaned["Jahr"].astype(np.uint16)

    x = df_years.values
    y = df_cleaned["Grundsicherung"].values

    # Set title and x/y label
    plt.title("Kiel - Sozialhilfeaufwendungen\n Grundsicherung (2010-2021)")
    plt.ylabel("Grundsicherung", size="x-large")
    plt.xlabel("Jahr", size="x-large")

    # Repress scientific notation (y-axis)
    plt.ticklabel_format(style="plain", axis="y")

    # Plot data
    plt.plot(y, "*-", markersize=6, linewidth=1, color="b")

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

    plt.show()


if __name__ == "__main__":
    main()

Da ich bereits in älteren Artikeln ausführlicher auf die Datenvisualisierung mit Matplotlib eingegangen bin, erspare ich mir an dieser Stelle weitere Ausführungen. Hinweisen möchte ich lediglich auf folgende Zeile:

plt.ticklabel_format(style="plain", axis="y")

Im Gegensatz zu den anderen in diesem Blog veröffentlichten Beispielen, habe ich sie hier hinzugefügt, damit hinsichtlich der Beschriftung der Y-Achse keine wissenschaftliche Notation verwendet wird.

Als Ergebnis erhält man folgendes Liniendiagramm:

Entwicklung der Aufwendungen zur Grundsicherung in Kiel
Aufwendungen zur Grundsicherung in Kiel

Die entsprechende Jupyter-Notebook-Version findet Ihr auf Github.

Weiterführende Links