Gasverbrauch mit Matplotlib darstellen

Dieser Tage ist viel von Gas bzw. dem Gasverbrauch die Rede. Die Verbraucher sollen Gas sparen, damit wir durch den Winter kommen, ohne Engpässe befürchten zu müssen. Wie sieht es also mit dem bisherigen Gasverbrauch aus und wie lässt er sich mit Python und Matplotlib visualisieren?

Kommen wir zunächst zu den Daten, die als Grafik mit Matplotlib dargestellt werden sollen. Der monatliche Gasverbrauch in Deutschland kann als CSV-Datei von den Internetseiten der Bundesnetzagentur heruntergeladen werden. Stand September 2022 sieht es wie folgt aus:

Monat;2022;2021
Januar;128.5;142.3
Februar;106.2;121.2
März;98.5;109.7
April;80.2;95.9
Mai;50.7;68.2
Juni;38.9;46.1
Juli;43.8;40.4
August;39.7;38.8
September;;45.3
Oktober;;73.2
November;;109.7
Dezember;;125.6

Die CSV-Datei habe ich unter der Bezeichnung „gasverbrauch.csv“ abgespeichert. Im gleichen Verzeichnis erstelle ich die Python-Datei „gasverbrauch.py“, die mit den Importanweisungen beginnt:

import pandas as pd
import matplotlib.pyplot as plt

Das Matplotlib zu importieren ist, dürfte klar sein. Zusätzlich verwende ich hier Pandas, um damit die Daten der CSV-Datei zu lesen:

csv_data = "gasverbrauch.csv"
df = pd.read_csv(csv_data, sep=";")

Die Monate werden der x-Achse zugewiesen. Hinsichtlich der y-Achse ist zu bedenken, dass die Werte für zwei Jahre (2021 und 2022) dargestellt werden sollen. Dementsprechend werden hier die beiden Variablen y_2021 und y_2022 verwendet:

x = df["Monat"]
y_2022 = df["2022"]
y_2021 = df["2021"]

Als nächstes wird mit

fig, ax = plt.subplots()

ein Subplot erstellt.

Für den Titel und die Beschriftung der Achsen sind folgende Zeilen verantwortlich:

plt.title("Gasverbrauch 2021/2022\n (in TWh pro Monat)", size="x-large")
plt.ylabel("Verbrauch", size="large")
plt.xlabel("Monat", size="x-large")

Dann ist noch sicherzustellen, dass hinsichtlich der x-Achse alle Monate richtig angezeigt werden:

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

Folgende Zeilen übernehmen dann das Zeichnen der beiden Linien (2021 und 2022), die den Verbrauch darstellen.

plt.plot(y_2022, "*-", markersize=6, linewidth=1, color="b", label="2022")
plt.plot(y_2021, "*-", markersize=6, linewidth=1, color="r", label="2021")

Möchte man eine Legende haben, was bei mehreren Linien durchaus sinnvoll ist, sollte folgende Zeile nicht fehlen:

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

Und schließlich wird durch die Zeile

plt.show()

das Liniendiagramm angezeigt. Wie gut zu erkennen ist, hat es in den Monaten Juli und August nicht mit dem Sparen funktioniert. Der Monatsverbrauch liegt etwas über dem Vorjahr.

Zum Schluss nochmal der vollständige Code:

import pandas as pd
import matplotlib.pyplot as plt

csv_data = "gasverbrauch.csv"
df = pd.read_csv(csv_data, sep=";")

x = df["Monat"]
y_2022 = df["2022"]
y_2021 = df["2021"]

fig, ax = plt.subplots()

plt.title("Gasverbrauch 2021/2022\n (in TWh pro Monat)", size="x-large")
plt.ylabel("Verbrauch", size="large")
plt.xlabel("Monat", size="x-large")

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

plt.plot(y_2022, "*-", markersize=6, linewidth=1, color="b", label="2022")
plt.plot(y_2021, "*-", markersize=6, linewidth=1, color="r", label="2021")

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

plt.show()