Data-projects-with-R-and-GitHub

Analyse einer Photovoltaikanlage

Viele Haushalte in Deutschland nutzen Photovoltaikanlagen, um ihren eigenen Strom zu erzeugen. Dies bietet die Möglichkeit, den produzierten Strom selbst zu verbrauchen und somit die Kosten für den Strombezug zu senken. Dieser sogenannte Eigenverbrauch kann durch den Einsatz von Batteriespeichern weiter erhöht werden. In den meisten Fällen wird überschüssiger Strom ins Netz eingespeist, wofür eine Einspeisevergütung gezahlt wird.

In dieser Analyse sollen die Daten einer Photovoltaikanlage untersucht werden, um den Eigenverbrauchsanteil zu bestimmen und die Wirtschaftlichkeit der Anlage zu bewerten. Dazu werden verschiedene Kennzahlen berechnet und visualisiert.

Die Photovoltaikanlage

Die Anlage selbst besteht aus einer 9 kWp Photovoltaikanlage und einem 6 kWh Batteriespeicher. Hierbei bedeutet “9 kWp” (Kilowatt Peak), dass die Anlage unter optimalen Bedingungen eine maximale Leistung von 9 Kilowatt erzeugen kann. Und die “6 kWh” (Kilowattstunden) bedeuten, dass der Batteriespeicher 6 Kilowatt Leistung für eine Stunde bereitstellen kann (oder entsprechend weniger Leistung für eine längere Zeit).

Zur Orientierung, ein Fön benötigt etwa 1.5 kW Leistung. Wenn man seine Haare für 10 Minuten föhnt, verbraucht man somit 0.25 kWh (1.5 kW * 1/6 Stunde) Strom. Mit dem 6 kWh Speicher könnten wir also 4 Stunden lang unsere Haare föhnen, wenn der Speicher voll aufgeladen ist.

Die Hersteller solcher Anlagen ermöglichen es, die Daten der Anlage über eine Online-Plattform zu überwachen. Hier ein Beispiel der Produktionsübersicht einer VARTA Anlage.

Oftmals können die Daten auch als tabellarische Datei heruntergeladen werden, was die persönliche Analyse erleichtert.

Daten

Die Daten der Photovoltaikanlage inklusive Speicher wurden von der Herstellerseite monatsweise exportiert und stehen im ./PV/ Unterordner dieses Projektverzeichnisses jeweils als ZIP Datei zur Verfügung. Jede ZIP-Datei enthält eine CSV-Datei mit den Daten des jeweiligen Monats, welche wie folgt strukturiert sind:

Datum Netzeinspeisung [kWh] Netzbezug [kWh] Speicherung [kWh] PV Ertrag [kWh]
31.01.2025 6,9 0,75 4,4 11,99
30.01.2025 8,11 0,88 4,25 14,77
29.01.2025 7,85 0,94 3,46 11,7
28.01.2025 2,07 0,76 4,37 6,96

Hierbei sind die Spalten wie folgt zu verstehen:

Aufgaben

Datenimport

Die Daten der Photovoltaikanlage liegen in mehreren ZIP-Dateien vor, die jeweils eine CSV-Datei mit den Daten eines Monats enthalten. Die Aufgabe besteht darin, alle ZIP-Dateien zu entpacken, die enthaltenen CSV-Dateien zu lesen und die Daten in einem einzigen DataFrame zusammenzuführen. Dabei soll darauf geachtet werden, dass die Datentypen korrekt interpretiert werden (z.B. Datum als Date, Zahlen als numerische Werte).

Zudem soll die Integrität der Daten geprüft werden:

(!) Die Datenintegrität und -korrektur soll in der Markdownausgabe dokumentiert werden.

(!) Der Datenimport (read* call) soll direkt die CSV Datei aus der ZIP Datei lesen, ohne die Datei vorher explizit zu entpacken (d.h. es sollen keine neuen Dateien auf der Festplatte erstellt werden). Hierfür kann die unz() Funktion im file= Argument der read* Funktion verwendet werden.

(!) Das Script soll so geschrieben sein, dass es die Liste der ZIP-Dateien automatisch aus dem PV Ordner liest (und somit flexibel auf weitere Dateien reagiert).

Datenaufbereitung

(!) Nach dem Import der Daten sollen folgende zusätzlichen Spalten berechnet und dem DataFrame hinzugefügt werden:

(!) Zudem sollen die Daten nach Datum sortiert werden.

Datenanalyse und -visualisierung

In der folgenden Datenanalyse und -visualisierung wollen wir einigen Fragen auf den Grund gehen, die sich im Zusammenhang mit der Photovoltaikanlage ergeben.

Monatliche Kennzahlen

Wenn man den Jahresverlauf im Blick hat, stellen sich u.a. folgende Fragen.

Hierfür im Folgenden ein paar Aufgaben.

(!) Berechne für jeden Monat die folgenden Kennzahlen und stelle sie in einer übersichtlichen Tabelle dar:

(!) Verwenden sie Sie die dplyr Bibliothek für die Datenmanipulation und -aggregation. Insbesondere group_by() und accross() können hierbei hilfreich sein.

(!) Erweitern Sie die Tabelle umfolgende Spalten.

(!) Alle Daten der Tabelle auf zwei Nachkommastellen runden.

(!) Die Tabelle soll nach Monat sortiert sein (beginnend mit Januar) und als Markdown Tabelle in der Ausgabe dargestellt werden.

Zudem sollen die Kosten-/Vergütungsbezogenen Spalten visualisiert werden.

(!) Erstellen Sie ein gruppiertes Balkendiagramm, das die Stromkosten als negative Werte und die Einspeisevergütung sowie die Einsparungen durch Eigenverbrauch als positive Werte für jeden Monat darstellt. Wobei die positiven Werte (Einspeisevergütung und Einsparungen durch Eigenverbrauch) gestapelt dargestellt werden sollen. Zudem soll mit einer Linie die Gesamtwirtschaftlichkeit für jeden Monat dargestellt werden.

Grob sollte das dann etwa so aussehen:

(!) Verwenden Sie hierfür die ggplot2 Bibliothek.

Jahresübersicht

Nun wollen wir einen Blick auf das gesamte Jahr werfen und haben folgende Fragen im Sinn.

(!) Berechnen Sie hierfür die folgenden Kennzahlen für das gesamte Jahr 2025:

(!) Stellen Sie die Jahresübersicht in einer übersichtlichen Tabelle dar, wobei alle Werte auf zwei Nachkommastellen gerundet sind.

(!) Visualisieren sie die Amortisierung in einem Tortendiagramm, das die Anteile der Einsparungen durch Eigenverbrauch und der Einspeisevergütung darstellt, wenn die Gesamtinvestition der Anlage 12.000 € beträgt.

Versuchen sie das Diagramm hübscher zu gestalten als das Beispielbild.