Python in Excel für die DatenanalyseAusreißer erkennen und analysieren
- Warum das Erkennen von Ausreißern im Datensatz wichtig ist
- Datensatz laden und vorbereiten
- Was ist ein Ausreißer?
- Erste Analyse mit describe()
- Boxplot zur Ausreißeranalyse
- Verteilung besser verstehen – Histogramm hinzufügen
- Quartile berechnen
- Interquartilsabstand (IQR)
- Grenzen für Ausreißer berechnen
- Ausreißer mit dem Z-Score erkennen
- MAD-Methode – Median Absolute Deviation
- Wann welche Methode nutzen?
- Ausreißer identifizieren
- Anzahl der Ausreißer bestimmen
- Ausreißer markieren, statt sofort zu löschen
- Ausreißer entfernen
- Fazit
Warum das Erkennen von Ausreißern im Datensatz wichtig ist
In nahezu jedem Datensatz gibt es Werte, die deutlich vom normalen Muster abweichen. Diese sogenannten Ausreißer können:
- Datenfehler sein,
- außergewöhnliche Geschäftsvorfälle darstellen,
- auf Probleme hinweisen oder
- wichtige Erkenntnisse liefern.
Typische Beispiele:
- ungewöhnlich hohe Umsätze
- extrem hohe Verkaufszahlen
- fehlerhafte Preise
- doppelte Buchungen
Gerade im Controlling und Reporting ist es wichtig, solche Werte frühzeitig zu erkennen.
Datensatz laden und vorbereiten
Die folgenden Erläuterungen basieren auf einem Datensatz zu Bestellungen und Verkäufen eines Shop-Betreibers.

Zunächst laden Sie die benötigten Bibliotheken von Python und die Daten in den DataFrame. Zudem wird aus Preis und Verkaufsmenge der Umsatz berechnet.
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
umsatz = xl("Umsatzdaten[#Alle]", headers=True)
umsatz["Umsatz"] = (umsatz["Preis"] * umsatz["Verkaufsmenge"])
umsatz
Was ist ein Ausreißer?
Ein Ausreißer ist ein Wert, der deutlich außerhalb des normalen Wertebereichs liegt. Zum Beispiel erkennen Sie im Datensatz folgende Verkaufsmengen:
10, 12, 15, 18, 20, 500
Der Wert 500 fällt deutlich aus dem typischen Muster heraus.
Erste Analyse mit describe()
Sie lassen sich zunächst Ihren Datensatz mit Python beschreiben. Dazu berechnen Sie wichtige Kennzahlen mit:
umsatz["Umsatz"].describe()
Hier sehen Sie:
- Anzahl der Datensätze
- Mittlwert
- Standardabweichung
- Minimum
- Maximum
- Median
- Quartile
Oft erkennt man bereits hier auffällige Werte.
Boxplot zur Ausreißeranalyse
Ein besonders wichtiges Werkzeug ist der Boxplot. Dieses Diagramm erstellen Sie mit folgendem Python-Code:
plt.figure(figsize=(6,4))
sns.boxplot(
data=umsatz,
y="Umsatz"
)
plt.title("Ausreißeranalyse Umsatz")
plt.tight_layout()
plt.show()
Ein Boxplot zeigt die Verteilung der Daten auf einen Blick. Die mathematische Berechnung basiert auf Quartilen und dem Interquartilsabstand (siehe unten). Die wichtigen Elemente der Boxplot sind.
- Linie in der Box = Median (Zentralwert)
- Boxgröße = mittlere 50 % der Werte (zwischen erstem und drittem Quartil)
- Whisker (Antennen) = normaler Wertebereich (Interquartilsabstand = 1,5 × Abstand zwischen erstem und drittem Quartil)
- Punkte außerhalb der Whisker = mögliche Ausreißer
Dadurch erkennt man Auffälligkeiten sofort.
Verteilung besser verstehen – Histogramm hinzufügen
Ein Boxplot zeigt Ausreißer sehr gut, verrät aber relativ wenig über die Form der Verteilung. Deshalb lohnt es sich, zusätzlich ein Histogramm zu erstellen:
plt.figure(figsize=(6,4))
sns.histplot(data=umsatz, x="Umsatz", bins=30, kde=True)
plt.title("Verteilung des Umsatzes")
plt.tight_layout()
plt.show()
Tipp: Viele Analysten betrachten Boxplot und Histogramm nebeneinander. So erkennen Sie auf einen Blick sowohl Ausreißer als auch die Verteilungsform; zum Beispiel eine Rechtsschiefe bei Umsatzdaten. Die Option kde=True zeichnet eine Dichtekurve, die das Erkennen der Verteilungsform zusätzlich erleichtert.
Quartile berechnen
Die Quartile sind die Grundlage vieler Ausreißeranalysen. Sie bezeichnen die Werte zwischen denen 50 % der Werte im Datensatz liegen. Es gilt:
- Quantil 0.25 = unteres Quartil (Q1)
- Quantil 0.50 = Median
- Quantil 0.75 = oberes Quartil (Q3)
Der Python-Code zur Berechnung der Quartile lautet:
umsatz["Umsatz"].quantile([0.25, 0.5, 0.75])
Hinweis: Die hier berechnete Untergrenze ist kleiner 0. Sie spielt in diesem Beispiel mit Umsatzdaten keine praktische Rolle, da der Umsatz für alle Bestellungen nicht kleiner 0 sein dürfte.
Ausreißer mit dem Z-Score erkennen
Eine weitere gängige Methode ist der Z-Score. Sie können ihn mit NumPy in Python berechnen:
mean = umsatz["Umsatz"].mean()
std = umsatz["Umsatz"].std()
umsatz["Z_Score"] = (umsatz["Umsatz"] - mean) / std
ausreisser_z = umsatz[abs(umsatz["Z_Score"]) > 3]
Der Z-Score gibt an, wie viele Standardabweichungen ein Wert vom Mittelwert abweicht. Entsprechend werden die Standardabweichung mit .std() und der Mittelwert mit mean() berechnet.
Anschließend gibt der Code die Datensätze aus, deren Z-Score größer 3 ist.
MAD-Methode – Median Absolute Deviation
Die IQR-Methode ist bereits robust, aber die MAD-Methode gilt als noch widerstandsfähiger gegen Ausreißer. Sie verwendet den Median statt des Mittelwerts und die absolute Abweichung vom Median.
median = umsatz["Umsatz"].median()
mad = (umsatz["Umsatz"] - median).abs().median()
obere_grenze_mad = median + 3 * mad
untere_grenze_mad = median - 3 * mad
untere_grenze, obere_grenze
Um Ausreißer zu identifizieren, wird als typischer Faktor 3 verwendet. Das entspricht etwa 3 Standardabweichungen bei Normalverteilung.
Sie können diese Grenzen analog zur IQR-Methode nutzen. In der Praxis liefern IQR und MAD oft ähnliche Ergebnisse – bei sehr starken Ausreißern oder kleinen Stichproben kann die MAD-Methode jedoch besser abschneiden.
Wann welche Methode nutzen?
- IQR: robust gegen Ausreißer, einfach, etwas konservativ, geeignet für die meisten Business-Daten
- Z-Score: einfach, weitverbreitet, sensibel bei schiefen Verteilungen, geeignet bei annähernd normalverteilten Daten
- MAD: sehr robust, gut bei starken Ausreißern, etwas unbekannter, ergänzend zu IQR, geeignet bei extrem schiefen Daten
Fazit: Bei Umsatz-, Verkaufs- oder Finanzdaten ist die IQR-Methode in den meisten Fällen die bessere und robuste Wahl. Die MAD-Methode können Sie als zusätzliche Prüfung verwenden.
Anzahl der Ausreißer bestimmen
Nicht immer benötigt man alle Datensätze, die Ausreißer sind. Manchmal genügt es, zu wissen, wie viele Ausreißer es im Datensatz gibt. Entsprechend nutzen Sie den Befehl:
len(ausreisser)
Damit erkennen Sie sofort, wie viele problematische Werte existieren.
Ausreißer markieren, statt sofort zu löschen
Statt Ausreißer direkt zu entfernen, ist es in den meisten Fällen sinnvoller, sie zunächst nur zu markieren. So behalten Sie die Originaldaten und schaffen einen nachvollziehbaren Audit-Trail.
umsatz["Ist_Ausreisser"] = (
(umsatz["Umsatz"] < untere_grenze) |
(umsatz["Umsatz"] > obere_grenze)
)
Umsatz
Vorteile dieser Vorgehensweise:
- Sie können später jederzeit nachvollziehen, welche Zeilen als Ausreißer erkannt wurden.
- Die Originaldaten bleiben erhalten.
- Sie können die Markierung bei Bedarf mit weiteren Informationen (zum Beispiel Kommentar, Kategorie) ergänzen.
Wichtig: Bevor Sie Ausreißer entfernen, sollten Sie diese Datensätze fachlich prüfen. Sprechen Sie bei unklaren Fällen mit dem Fachbereich – manchmal sind extreme Werte real und geschäftlich hochrelevant.
Ausreißer können verschiedene Ursachen haben:
- Datenfehler: Tippfehler, doppelte Einträge, falsche Dezimalstellen
- Geschäftliche Ursachen: Großaufträge, Sonderaktionen, saisonale Spitzen
- Technische Probleme: Importfehler, fehlerhafte Schnittstellen, Systemprobleme
Nicht jeder Ausreißer ist falsch. Deshalb gilt:
- Datenfehler: entfernen oder korrigieren
- echte Geschäftsvorfälle: behalten
- unklare Ursache: prüfen
Ausreißer entfernen
Falls notwendig, filtern wir den Datensatz so, dass nur die Werte innerhalb der berechneten Grenzen übrigbleiben:
umsatz_bereinigt = umsatz[
(umsatz["Umsatz"] >= untere_grenze) &
(umsatz["Umsatz"] <= obere_grenze)
]
umsatz_bereinigt
Dann enthält der Datensatz nur noch Werte innerhalb des normalen Bereichs.
Fazit
Die Analyse von Ausreißern gehört zu den wichtigsten Aufgaben der Datenanalyse. Mit Pandas und Seaborn können Sie direkt in Excel:
- Ausreißer erkennen
- Quartile berechnen
- Auffälligkeiten visualisieren
- problematische Daten bereinigen















