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.

Beispiel Datensatz für die Analyse von Ausreißern

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

Import des Datensatzes in den DataFrame von Python

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.

Wichtige Kennzahlen zur Beschreibung eines Datensatzes

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()

Boxplot für das Entdecken von Ausreißern im Datensatz

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()

Ausreißer im Datensatz mit Histogramm erkennen

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])

Berechnung der Quartile mit Python in Excel

Interquartilsabstand (IQR)

Eine Methode zur Ausreißererkennung ist die IQR-Methode. Die Formel zur Berechnung lautet: IQR = Q3 - Q1

Als Python-Code:

Q1 = umsatz["Umsatz"].quantile(0.25)
Q3 = umsatz["Umsatz"].quantile(0.75)
IQR = Q3 - Q1
IQR

Berechnung des Interquartilsabstands mit Python

Grenzen für Ausreißer berechnen

Der Python-Code für die untere und obere Grenze (= Whisker) lautet:

untere_grenze = Q1 - 1.5 * IQR
obere_grenze = Q3 + 1.5 * IQR
untere_grenze, obere_grenze

Werte außerhalb dieser Grenzen gelten als potenzielle Ausreißer.

Berechnung der Whisker mit Python in Excel

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.

Berechnung des Z-Scores und Ausgabe der Datensätze mit mehr als 3-fachem Z-Score

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

Absolute Abweichung vom Median berechnen

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.

Ausreißer identifizieren

Nun lassen Sie sich die Ausreißer mit folgendem Code anzeigen:

ausreisser = umsatz[
    (umsatz["Umsatz"] < untere_grenze) |
    (umsatz["Umsatz"] > obere_grenze)
]
ausreisser

Ergebnis: Alle auffälligen Datensätze werden angezeigt

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.

Anzahl der Ausreißer im Datensatz berechnen

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

Ausreißer in der Datentabelle ausgeben (Auszug)

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.

Datensatz ohne Ausreißer (Auszug)

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

Vorlagen nutzen

Weitere Kapitel zum Thema