Python in Excel für die DatenanalyseDiagramme mit Python – Daten visualisieren und verständlich darstellen
Warum Visualisierung so wichtig ist
Zahlen allein sind oft schwer zu interpretieren. Ein Diagramm zeigt dagegen sofort:
- Trends
- Unterschiede
- Entwicklungen
- Ausreißer
Deshalb gilt: Eine gute Visualisierung ersetzt oft viele Tabellen. Gerade im Business-Kontext (Controlling, Reporting, Management) sind Diagramme unverzichtbar.
Python in Excel hat besondere Vorteile, wenn Sie:
- komplexe Datenaufbereitung brauchen (berechnete Spalten, GroupBy etc.)
- statistische Visualisierungen wollen (Seaborn, Boxplots, Heatmaps)
- reproduzierbare, wartbare Charts in nur einer Formelzeile erstellen möchten
Der wichtigste Unterschied: Python-Diagramme in Excel sind statische Bilder. Sie können nicht per Maus auf Datenpunkte zeigen oder interaktiv reinzoomen wie bei nativen Excel-Diagrammen. Dafür sind sie ideal für reproduzierbare Berichte.
Bibliotheken und Datensatz laden und vorbereiten
Für diesen Beitrag werden die Pandas-Bibliotheken pandas, matplotlib und seaborn benötigt. Diese Bibliotheken werden standardmäßig von Excel importiert.
Grundlage ist der Datensatz mit den Verkäufen des Unternehmens. Er wird als Pandas-DataFrame eingelesen.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
umsatz = xl("Umsatzdaten[#Alle]", headers=True)
umsatz["Umsatz"] = umsatz["Preis"] * umsatz["Verkaufsmenge"]
umsatz["Datum"] = pd.to_datetime(umsatz["Datum"])
umsatz
Hinweis: Python in Excel arbeitet mit dem referenzierten Bereich und übernimmt nicht automatisch den sichtbaren Filterzustand wie ein klassisches Excel-Diagramm. Wenn Sie nur gefilterte Daten auswerten möchten, sollten Sie den passenden Bereich explizit angeben.
Umsatzentwicklung als Liniendiagramm
Ein klassischer Einstieg ist ein Zeitreihen-Diagramm. Dazu berechnen Sie zunächst den Umsatz pro Monat:
monatsumsatz=umsatz.groupby(umsatz["Datum"].dt.to_period("M"))["Umsatz"].sum().reset_index()
monatsumsatz["Datum"] = monatsumsatz["Datum"].astype(str)
Dann visualisieren Sie die Umsatzentwicklung in einem Diagramm.
plt.figure(figsize=(10, 6))
plt.plot(monatsumsatz["Datum"], monatsumsatz["Umsatz"], marker='o')
plt.title("Umsatzentwicklung pro Monat")
plt.xticks(rotation=45)
plt.grid(True, alpha=0.3)
plt.tight_layout()
Wichtiger Hinweis für alle Python-Diagramme: Stellen Sie die Zelle mit dem Python-Code im Excel-Ribbon unter Formeln → Python-Objekt auf Excel-Wert um. Erst dann wird das Diagramm als Bild in der Zelle sichtbar.
Das Diagramm ist in der folgenden Abbildung aufgrund der Zellgröße aber visuell noch nicht sichtbar.
Welche Python-Befehle sind für Diagramme wichtig?
Zum besseren Verständnis sei im Folgenden der Python-Code im Detail erklärt.
Bibliotheken laden
import pandas as pd
Mit dieser Zeile wird die Bibliothek Pandas importiert. Pandas ist die wichtigste Python-Bibliothek für Datenanalysen und Tabellenverarbeitung.
Die Abkürzung pd ist ein Standard und wird später verwendet, um Pandas-Funktionen aufzurufen. Die Bibliothek wird standardmäßig von Excel importiert. Diese Anweisung ist daher eigentlich nicht notwendig. Sie dient lediglich der Vollständigkeit.
import matplotlib.pyplot as plt
Hier wird das Modul pyplot aus der Bibliothek Matplotlib geladen. Matplotlib dient zur Erstellung von Diagrammen und Visualisierungen.
Die Abkürzung plt steht für „plot“. Auch diese Bibliothek wird standardmäßig von Excel importiert.
import seaborn as sns
Mit dieser Zeile wird die Bibliothek Seaborn geladen. Seaborn erweitert Matplotlib um modernere und optisch ansprechendere Diagramme.
In diesem Beispiel wird Seaborn zwar nicht direkt verwendet, verbessert aber häufig automatisch das Design der Diagramme. Auch diese Bibliothek wird standardmäßig von Excel importiert.
Daten laden
umsatz = xl("Umsatzdaten[#Alle]", headers=True)
Diese Zeile lädt Daten direkt aus Excel in Python. Die Funktion xl() gehört zu Python in Excel und übernimmt Daten aus einer Excel-Tabelle in ein sogenanntes Pandas-DataFrame.
- "Umsatzdaten[#Alle]": Verweist auf die Excel-Tabelle mit dem Namen Umsatzdaten.
- [#Alle]: Bedeutet, dass alle Zeilen und Spalten übernommen werden.
- headers=True: Sorgt dafür, dass die erste Zeile als Spaltenüberschrift erkannt wird.
Das Ergebnis wird in der Variable umsatz gespeichert.
Umsatz berechnen
umsatz["Umsatz"] = umsatz["Preis"] * umsatz["Verkaufsmenge"]
Hier wird eine neue Spalte mit dem Namen Umsatz erstellt. Die Berechnung erfolgt zeilenweise: Preis × Verkaufsmenge. Pandas kann solche Berechnungen auf komplette Spalten gleichzeitig durchführen – ganz ohne Schleife.
Datumsformat einstellen
umsatz["Datum"] = pd.to_datetime(umsatz["Datum"])
Mit pd.to_datetime() wird die Spalte Datum in ein echtes Datumsformat umgewandelt. Das ist wichtig, damit Python:
- Monate erkennen kann,
- Zeitreihen analysieren kann und
- Datumsfunktionen korrekt funktionieren.
Ohne diese Umwandlung würden viele Datumsoperationen nicht funktionieren.
Umsatz pro Monat berechnen
monatsumsatz = umsatz.groupby(umsatz["Datum"].dt.to_period("M"))["Umsatz"].sum().reset_index()
Diese Zeile gruppiert die Daten nach Monaten und berechnet die Summe der Umsätze pro Monat. Dabei bedeuten:
- umsatz["Datum"]: Zugriff auf die Datumsspalte.
- .dt: Aktiviert Datumsfunktionen für die gesamte Spalte.
- .to_period("M"): Wandelt jedes Datum in einen Monatswert um; zum Beispiel 15.01.2025 in 2025-01
- groupby(…): Gruppiert alle Datensätze nach Monatswert.
- ["Umsatz"]: Wählt die Umsatzspalte aus.
- .sum(): Addiert alle Umsätze je Monat.
- .reset_index(): Wandelt das Gruppierungsergebnis wieder in eine normale Tabelle um.
Das Ergebnis wird in der Variable monatsumsatz gespeichert.
Datenformat anpassen
monatsumsatz["Datum"] = monatsumsatz["Datum"].astype(str)
Hier werden die Monatswerte in Text umgewandelt. Das verbessert die Darstellung auf der x-Achse des Diagramms.
Diagrammgröße festlegen
plt.figure(figsize=(10, 6))
Mit dieser Zeile wird die Größe des Diagramms festgelegt.
- Breite: 10
- Höhe: 6
Je größer die Werte, desto größer das Diagramm.
Diagramm erstellen
plt.plot(monatsumsatz["Datum"], monatsumsatz["Umsatz"], marker='o')
Diese Zeile erstellt das eigentliche Liniendiagramm mit:
- monatsumsatz["Datum"]: Werte für die x-Achse.
- monatsumsatz["Umsatz"]: Werte für die y-Achse.
- marker='o': Fügt an jedem Datenpunkt einen Kreis hinzu. Dadurch werden einzelne Monatswerte besser sichtbar.
Weitere Angaben im Diagramm definieren
plt.title("Umsatzentwicklung pro Monat")
Fügt dem Diagramm einen Titel hinzu.
plt.xticks(rotation=45)
Dreht die Beschriftung der x-Achse um 45 Grad. Dadurch bleiben Monatswerte besser lesbar.
plt.grid(True, alpha=0.3)
Aktiviert ein Gitternetz im Diagramm.
- True: Schaltet das Raster ein.
- alpha=0.3: Steuert die Transparenz des Gitternetzes. Es bedeuten: 0 = unsichtbar, 1 = vollständig sichtbar. Ein Wert von 0.3 erzeugt ein dezentes Raster.
plt.tight_layout()
Optimiert automatisch das Layout des Diagramms. Dadurch werden Beschriftungen nicht abgeschnitten und Abstände verbessert.
Umsatz für die Produkte als Säulendiagramm
Im nächsten Schritt erzeugen Sie ein Säulendiagramm, das den Umsatz nach Produkt anzeigt. Dazu erstellen Sie diesen Python-Code:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
umsatz = xl("Umsatzdaten[#Alle]", headers=True)
umsatz["Umsatz"] = umsatz["Preis"] * umsatz["Verkaufsmenge"]
umsatz["Datum"] = pd.to_datetime(umsatz["Datum"])
top_produkte = umsatz.groupby("Produkt")["Umsatz"].sum().sort_values(ascending=False)
plt.figure(figsize=(10, 6))
top_produkte.plot(kind="bar", color="skyblue")
plt.title("Top-Produkte nach Umsatz")
plt.ylabel("Umsatz in €")
plt.grid(True, alpha=0.3)
plt.tight_layout()
Was bewirkt der Python-Code?
Der Umsatz pro Produkt wird berechnet mit:
top_produkte = umsatz.groupby("Produkt")["Umsatz"].sum().sort_values(ascending=False)
Diese Zeile berechnet die umsatzstärksten Produkte. Hier passieren mehrere Schritte gleichzeitig:
- groupby("Produkt"): Alle Datensätze werden nach Produktnamen gruppiert.
- ["Umsatz"]: Es wird festgelegt, dass die Umsätze analysiert werden sollen.
- .sum(): Alle Umsätze pro Produkt werden summiert.
- .sort_values(ascending=False): Die Produkte werden absteigend sortiert. Das umsatzstärkste Produkt steht dadurch ganz oben.
- ascending=False: Bedeutet absteigende Reihenfolge.
Dann wird das Diagramm erstellt mit:
plt.figure(figsize=(10, 6))
Mit dieser Zeile wird die Größe des Diagramms festgelegt:
- Breite: 10
- Höhe: 6
Je größer die Werte, desto größer das Diagramm. Die nächste Zeile erstellt ein Balkendiagramm.
top_produkte.plot(kind="bar", color="skyblue")
Dabei bedeuten:
- top_produkte.plot(): Erstellt ein Diagramm aus den Daten.
- kind="bar": Legt fest, dass ein Säulendiagramm erzeugt wird.
- color="skyblue": Definiert die Farbe der Säulen. In diesem Fall werden hellblaue Balken verwendet.
- plt.title("Top-Produkte nach Umsatz"): Fügt dem Diagramm einen Titel hinzu.
Weitere Angaben zum Säulendiagramm erstellen Sie mit:
- plt.ylabel("Umsatz in €"): Beschriftet die y-Achse. Dadurch erkennt der Betrachter sofort, dass die Werte Umsätze in Euro darstellen.
- plt.grid(True, alpha=0.3): Aktiviert ein Gitternetz im Diagramm. True schaltet das Raster ein, alpha=0.3 steuert die Transparenz. Es gilt: 0 = unsichtbar, 1 = vollständig sichtbar, der Wert 0.3 sorgt für ein dezentes Raster.
- plt.tight_layout(): Optimiert automatisch das Layout des Diagramms. Dadurch werden Beschriftungen sauber dargestellt, Abstände verbessert und abgeschnittene Texte vermieden.
Umsatz nach Region als Kuchendiagramm
Um mit Python ein Kuchendiagramm zu erstellen, nutzen Sie diesen Code:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
umsatz = xl("Umsatzdaten[#Alle]", headers=True)
umsatz["Umsatz"] = umsatz["Preis"] * umsatz["Verkaufsmenge"]
umsatz["Datum"] = pd.to_datetime(umsatz["Datum"])
Region = umsatz.groupby("Region")["Umsatz"].sum()
plt.figure(figsize=(6, 6))
plt.pie(Region, labels=Region.index, autopct='%1.1f%%')
plt.title("Umsatzverteilung nach Region")
plt.tight_layout()
Was bewirkt der Python-Code?
Region = umsatz.groupby("Region")["Umsatz"].sum()
Diese Zeile berechnet den Gesamtumsatz pro Region. Hier passieren mehrere Schritte gleichzeitig.
- groupby("Region"): Alle Datensätze werden nach Regionen gruppiert.
- ["Umsatz"]: Es wird festgelegt, dass die Umsätze analysiert werden sollen.
- .sum(): Alle Umsätze je Region werden addiert.
Das Ergebnis wird in der Variable Region gespeichert. Dann wird das Diagramm erstellt mit:
plt.figure(figsize=(6, 6))
Mit dieser Zeile wird wiederum die Größe des Diagramms festgelegt.
plt.pie(Region, labels=Region.index, autopct='%1.1f%%')
Diese Zeile erstellt ein Kreisdiagramm. Dabei bedeuten:
- Region: Enthält die Umsatzwerte der einzelnen Regionen.
- labels=Region.index: Verwendet die Regionsnamen als Beschriftung der Diagrammsegmente.
- autopct='%1.1f%%': Zeigt die prozentualen Anteile im Diagramm an. Dabei bedeuten: 1.1f > eine Nachkommastelle anzeigen; %% > Prozentzeichen darstellen.
plt.title("Umsatzverteilung nach Region")
Fügt dem Diagramm einen Titel hinzu. Dadurch erkennt der Betrachter sofort, was dargestellt wird.
plt.tight_layout()
Optimiert automatisch das Layout des Diagramms. Dadurch werden Abstände verbessert, Texte sauber dargestellt und abgeschnittene Elemente vermieden.
Fazit
Diagramme sind ein zentraler Bestandteil moderner Datenanalysen. Mit Python in Excel können Sie Daten tiefgehend analysieren, Ergebnisse direkt visualisieren und Erkenntnisse verständlich darstellen.
Die wichtigsten Tools:
- matplotlib: Die Basis zum Erstellen von Diagrammen
- seaborn: Für moderne, statistische Visualisierungen (Boxplots, Heatmaps etc.)
- pandas: Daten vorbereiten und gruppieren






