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 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.
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:
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).
(!) Nach dem Import der Daten sollen folgende zusätzlichen Spalten berechnet und dem DataFrame hinzugefügt werden:
PV Ertrag - Netzeinspeisung - SpeicherungEigenverbrauch + Netzbezug(Eigenverbrauch / Gesamtverbrauch) * 100(!) Zudem sollen die Daten nach Datum sortiert werden.
In der folgenden Datenanalyse und -visualisierung wollen wir einigen Fragen auf den Grund gehen, die sich im Zusammenhang mit der Photovoltaikanlage ergeben.
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.
Netzbezug * 0.30Netzeinspeisung * 0.08Eigenverbrauch * 0.30Einsparungen durch Eigenverbrauch + Einspeisevergütung - Stromkosten(!) 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.
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:
(Anzahl der Tage mit Speicherung < 0.5 kWh / Gesamtanzahl der Tage) * 100(Anzahl der Tage mit Netzbezug > (Mittelwert + Standardabweichung) / Gesamtanzahl der Tage) * 100(!) 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.