Ausreißer in Daten

Explorative Datenanalyse in Python

George Boorman

Curriculum Manager, DataCamp

Was ist ein Ausreißer?

  • Weit von anderen Datenpunkten entfernter Beobachtungswert
    • Median-Hauspreis: 400.000 $
    • Ausreißer beim Hauspreis: 5.000.000 $

 

  • Überlege, warum der Wert abweicht:
    • Lage, Anzahl der Zimmer, Gesamtgröße usw.

Großes Haus mit Pool

1 Bildnachweis: https://unsplash.com/@ralphkayden
Explorative Datenanalyse in Python

Einsatz deskriptiver Kennzahlen

print(salaries["Salary_USD"].describe())
count       518.000
mean     104905.826
std       62660.107
min        3819.000
25%       61191.000
50%       95483.000
75%      137496.000
max      429675.000
Name: Salary_USD, dtype: float64
Explorative Datenanalyse in Python

Verwendung des Interquartilsabstands

Interquartilsabstand (IQR)

  • IQR = 75.–25. Perzentil
Explorative Datenanalyse in Python

IQR in Boxplots

sns.boxplot(data=salaries,
            y="Salary_USD")
plt.show()

Boxplot der Gehälter in Datenberufen, der das 25. Perzentil am unteren Rand der Box, das 50. Perzentil als Mittellinie, das 75. Perzentil am oberen Rand der Box und Ausreißer als Rauten außerhalb der Box zeigt

Explorative Datenanalyse in Python

Verwendung des Interquartilsabstands

Interquartilsabstand (IQR)

  • IQR = 75.–25. Perzentil
  • Obere Ausreißer > 75. Perzentil + (1,5 * IQR)
  • Untere Ausreißer < 25. Perzentil - (1,5 * IQR)
Explorative Datenanalyse in Python

Schwellenwerte bestimmen

# 75th percentile
seventy_fifth = salaries["Salary_USD"].quantile(0.75)

# 25th percentile twenty_fifth = salaries["Salary_USD"].quantile(0.25)
# Interquartile range salaries_iqr = seventy_fifth - twenty_fifth
print(salaries_iqr)
76305.0
Explorative Datenanalyse in Python

Ausreißer bestimmen

# Upper threshold
upper = seventy_fifth + (1.5 * salaries_iqr)

# Lower threshold lower = twenty_fifth - (1.5 * salaries_iqr)
print(upper, lower)
251953.5 -53266.5
Explorative Datenanalyse in Python

Teilmengen unserer Daten

salaries[(salaries["Salary_USD"] < lower) | (salaries["Salary_USD"] > upper)] \

[["Experience", "Employee_Location", "Salary_USD"]]
        Experience    Employee_Location    Salary_USD
29      Mid           US                   429675.0
67      Mid           US                   257805.0
80      Senior        US                   263534.0
83      Mid           US                   429675.0
133     Mid           US                   403895.0
410     Executive     US                   309366.0
441     Senior        US                   362837.0
445     Senior        US                   386708.0
454     Senior        US                   254368.0
Explorative Datenanalyse in Python

Warum sollte man auf Ausreißer achten?

  • Ausreißer sind Extremwerte.

    • Sie repräsentieren unsere Daten eventuell nicht richtig.
  • Sie können den Mittelwert und die Standardabweichung verfälschen.

  • Statistische Tests und Modelle für maschinelles Lernen brauchen Daten, die normal verteilt sind.

Explorative Datenanalyse in Python

Wie geht man mit Ausreißern um?

Entscheidende Fragen:

  • Warum gibt es diese Ausreißer?
    • Höhere Positionen / in anderen Ländern verdient man mehr
    • Möglicherweise im Datensatz lassen

 

  • Sind die Daten korrekt?
    • Könnte es einen Fehler bei der Datenerfassung gegeben haben?
      • Wenn ja, dann weglassen
Explorative Datenanalyse in Python

Ausschluss von Ausreißern

no_outliers = salaries[(salaries["Salary_USD"] > lower) & (salaries["Salary_USD"] < upper)]
print(no_outliers["Salary_USD"].describe())
count       509.000000
mean     100674.567780
std       53643.050057
min        3819.000000
25%       60928.000000
50%       95483.000000
75%      134059.000000
max      248257.000000
Name: Salary_USD, dtype: float64
Explorative Datenanalyse in Python

Verteilung der Gehälter

Histogramm der Gehälter, nachdem die Ausreißer durch den Median ersetzt wurden, mit Extremwerten von etwa 250.000 bis 450.000 Dollar

Histogramm der Gehälter, nachdem die Ausreißer durch den Median ersetzt wurden, das fast einer Normalverteilung gleicht

Explorative Datenanalyse in Python

Lass uns üben!

Explorative Datenanalyse in Python

Preparing Video For Download...