Python in Excel für die DatenanalyseTop-Analysen und Ranglisten mit Pandas erstellen
- Warum Rankings in der Praxis so wichtig sind
- Voraussetzung: Bibliotheken importieren
- Datensatz laden und vorbereiten
- Grundprinzip von Rankings
- Top-Produkte nach Umsatz
- Top 5 Produkte anzeigen
- Ranking nach mehreren Gruppen gleichzeitig
- Kombination mehrerer Kennzahlen im Ranking
- Rangnummern hinzufügen
- Top-Analysen mit Filter kombinieren
- Top und Flop gleichzeitig analysieren
- Visualisierung: Das Ranking als Diagramm
- Warum Rankings so mächtig sind
- Die wichtigsten Methoden im Überblick
- Fazit
Warum Rankings in der Praxis so wichtig sind
In der Unternehmenspraxis geht es häufig nicht um alle Daten, sondern um die wichtigsten. Typische Fragestellungen sind:
- Welche Produkte bringen den meisten Umsatz?
- In welchen Städten ist das Unternehmen besonders erfolgreich?
- Welche Vertriebskanäle performen am besten?
- Welche Segmente sind besonders profitabel?
- Welcher Monat oder welches Quartal war am stärksten?
Diese Fragen führen immer zu Ranglisten (Rankings).
In Excel würden Sie dafür Pivot-Tabellen erstellen, sortieren und manuell filtern. Mit Pandas geht das deutlich strukturierter und ist sofort automatisierbar.
Voraussetzung: Bibliotheken importieren
Bevor sie starten, muss sichergestellt sein, dass die benötigten Bibliotheken für Python importiert sind. Im Folgenden werden Pandas und die Bibliothek für Diagramme, matplotlib, benötigt. Entsprechend nutzen Sie den Python-Code:
import pandas as pd
import matplotlib.pyplot as plt
Da Sie Python in Excel verwenden, sind diese Bibliotheken in der Regel bereits automatisch geladen. In einer normalen Python-Umgebung (zum Beispiel Jupyter oder VS Code) fügen Sie diese Zeilen am Anfang Ihres Skripts ein.
Datensatz laden und vorbereiten
Für die folgenden Datenanalysen und Darstellungen wird der folgende Datensatz aus einer Excel-Tabelle genutzt. Diesen importieren Sie in Pandas und berechnen im Anschluss aus der Verkaufsmenge und dem Preis den Umsatz mit:
umsatz = xl("Umsatzdaten[#Alle]", headers=True)
umsatz["Umsatz"] = umsatz["Preis"] * umsatz["Verkaufsmenge"]
umsatz
Tipp: Falls in den Quelldaten fehlende Werte enthalten sind, sollten Sie diese vor der Analyse prüfen und gegebenenfalls mit fillna(0) oder einer passenden Logik behandeln.
Grundprinzip von Rankings
Ein Ranking besteht in Pandas immer aus drei logischen Schritten:
- Daten gruppieren (zum Beispiel nach Produkt)
- Kennzahl berechnen (zum Beispiel Summe des Umsatzes)
- Ergebnis sortieren
Je nach Fragestellung kann die Kennzahl Umsatz, Menge, Marge, Kundenanzahl oder ein anderer Wert verwendet werden.
Top-Produkte nach Umsatz
Der Standardweg führt über die Sortierung der Ausgabe nach der gewünschten Kennzahl:
umsatz.groupby("Produkt")["Umsatz"].sum().reset_index().sort_values("Umsatz", ascending=False)
Damit sehen Sie sofort, welche Produkte am erfolgreichsten und welche weniger relevant sind.
Hinweis: Produkte ohne Umsatz tauchen im Ranking nicht auf. Falls Sie auch Nullen sehen möchten, verwenden Sie .sum(min_count=1) oder füllen Sie vorher fehlende Werte auf.
Top 5 Produkte anzeigen
Nun wollen Sie in Ihrer Ergebnistabelle nicht alle Produkte sehen, sondern nur die fünf mit dem höchsten Umsatz. In Excel würden Sie den Top-10-Filter nutzen. In Pandas gibt es zwei Wege.
Variante A (klassisch):
umsatz.groupby("Produkt")["Umsatz"].sum().reset_index().sort_values("Umsatz", ascending=False).head(5)
Mit dem Parameter head(5) beschränken Sie die Ausgabe auf die fünf Einträge, die oben auf der Ergebnisliste stehen.
Variante B (optimiert):
Diese Pandas-Funktion ist kürzer und speziell für Top-Listen optimiert:
umsatz.groupby("Produkt")["Umsatz"].sum().nlargest(5)
Entsprechend können Sie aus Ihrem Datensatz ermitteln, welche Städte und welche Vertriebskanäle die größten Umsätze haben. Sie ersetzen dazu einfach "Produkt" durch "Stadt" oder "Vertriebskanal" (die entsprechenden Spaltenbezeichnungen).
Hinweis: nlargest gibt eine Serie zurück (mit dem Produkt als Index). Wenn mehrere Produkte denselben Umsatzwert haben, kann nlargest() mit dem Parameter keep="all" alle Gleichstände einschließen.
Ranking nach mehreren Gruppen gleichzeitig
Manchmal reicht eine einzelne Gruppierung nicht aus. Wenn Sie zum Beispiel gleichzeitig nach Stadt und Produkt auswerten möchten, übergeben Sie einfach eine Liste an groupby():
umsatz.groupby(["Stadt", "Produkt"])["Umsatz"].sum().reset_index().sort_values("Umsatz", ascending=False)
So sehen Sie auf einen Blick, welches Produkt in welcher Stadt am stärksten abschneidet – ohne mehrere separate Auswertungen erstellen zu müssen.
Kombination mehrerer Kennzahlen im Ranking
Rankings werden noch stärker, wenn mehrere Kennzahlen kombiniert werden, um zum Beispiel Umsatz und Verkaufsmenge gleichzeitig zu sehen:
umsatz.groupby("Produkt").agg(
Umsatz=("Umsatz", "sum"),
Menge=("Verkaufsmenge", "sum")
).reset_index().sort_values(["Umsatz", "Menge"], ascending=False)
So sehen Sie nicht nur den Umsatz, sondern auch, ob ein Produkt zusätzlich über hohe Stückzahlen getragen wird.
Rangnummern hinzufügen
Sie können außerdem eine feste Rangnummer als eigene Spalte hinzufügen.
ranking = umsatz.groupby("Produkt").agg(Umsatz=("Umsatz", "sum")).reset_index()
ranking = ranking.sort_values("Umsatz", ascending=False).reset_index(drop=True)
Mit method="min" behandeln Sie Gleichstände wie in Excel:
ranking["Rang"] = ranking["Umsatz"].rank(ascending=False, method="min").astype(int)
Ergänzend können Sie dann noch den Umsatzanteil für Ihre Top-Produkte berechnen und ausgeben. Und mit den kumulierten Werten des Umsatzanteils schaffen Sie die Basis für eine ABC-Analyse für Ihre Produkte:
ranking["Anteil_%"] = (ranking["Umsatz"] / ranking["Umsatz"].sum() * 100).round(1)
ranking["Kumuliert_%"] = ranking["Anteil_%"].cumsum().round(1)
ranking
Mit der method-Option steuern Sie, wie Gleichstände behandelt werden:
- min: wie Excel-Standard
- dense: lückenlos
- first: nach Reihenfolge im Datensatz
Mit .round(1) werden die Prozentwerte auf eine Dezimalstelle nach dem Komma gerundet.
Top und Flop gleichzeitig analysieren
Um die Sorgenkinder im Sortiment zu finden, drehen Sie die Logik um mit dem Parameter nsmallest():
Top 5:
umsatz.groupby("Produkt")["Umsatz"].sum().nlargest(5)
Flop 5:
umsatz.groupby("Produkt")["Umsatz"].sum().nsmallest(5)
So erkennen Sie nicht nur die stärksten, sondern auch die schwächsten Produkte auf einen Blick.
Visualisierung: Das Ranking als Diagramm
Ein großer Vorteil von Python in Excel ist die schnelle Visualisierung. Mit nur wenigen Zeilen Code erstellen Sie ein Balkendiagramm Ihres Rankings:
ax = (umsatz.groupby("Produkt")["Umsatz"].sum()
.sort_values(ascending=False)
.plot(kind="barh", figsize=(10, 6), color="#1f77b4"))
ax.set_title("Top-Produkte nach Umsatz")
ax.set_xlabel("Umsatz in EUR")
ax.invert_yaxis()
Mit ascending=False sorgen Sie dafür, dass nach invert_yaxis() die Produkte mit dem höchsten Umsatz oben stehen.
Wichtig: Stellen Sie sicher, dass matplotlib importiert ist (siehe oben), sonst erscheint kein Diagramm. Dies ist für Python in Excel in der Regel kein Problem, da matplotlib standardmäßig in Excel importiert wird.
Rechts neben dem Diagramm sehen Sie eine kleine Schaltfläche. Wenn Sie darauf klicken, dann erhalten Sie das Diagramm als eigenes Bildobjekt im Excelblatt dargestellt.
Warum Rankings so mächtig sind
Mit Rankings können Sie:
- Schnell Entscheidungen treffen: Wo investieren wir mehr Budget?
- Fokus legen: 80/20-Prinzip – oft kommen 80 % des Umsatzes von nur 20 % der Produkte.
- Management-Reports erstellen: Klare Aussagen statt riesiger Datentabellen.
- Prioritäten sichtbar machen, ohne alle Detaildaten manuell prüfen zu müssen.
Wichtig ist dabei: Ein Ranking zeigt Prioritäten, aber nicht automatisch Ursache oder Profitabilität.
Die wichtigsten Methoden im Überblick
| Methode | Wann verwenden | Code-Snippet |
|---|---|---|
| sort_values | Vollständiges Ranking aller Einträge | .sort_values("Umsatz", ascending=False) |
| nlargest(n) | Nur die Top-N-Einträge benötigt | .nlargest(5) |
| nsmallest(n) | Flop-Liste / schwächste Einträge | .nsmallest(5) |
| rank() | Rangnummer als eigene Spalte | .rank(ascending=False, method="min") |
| cumsum() | 80/20-Analyse (kumulierter Anteil) | ["Anteil_%"].cumsum() |
| groupby(["…", "…"] | Mehrere Gruppen gleichzeitig | groupby(["Stadt", "Produkt"]) |
| dt.to_period | Zeitreihen-Rankings (Monat/Quartal) | dt.to_period("M") |
Fazit
Top-Analysen gehören zu den wichtigsten Werkzeugen in der Datenanalyse. Mit Pandas können Sie diese nicht nur erstellen, sondern tiefgehende Einblicke mit Filtern, Prozentanteilen, Zeitreihen und Grafiken kombinieren.
Die zentrale Struktur für Ihr nächstes Projekt:
df.groupby("Kategorie")["Kennzahl"].sum().reset_index().sort_values("Kennzahl", ascending=False).head(5)













