Weiter zum Inhalt

Top-Techniken zum Umgang mit fehlenden Werten, die jede Data Scientist kennen sollte

Entdecke verschiedene Techniken, um fehlende Werte effizient zu behandeln, und ihre Implementierungen in Python.
Aktualisiert 18. Sept. 2026  · 15 Min. lesen

Mit KI erkunden

ChatGPTClaudePerplexity

Der Umgang mit fehlenden Daten ist ein häufiges und inhärentes Problem bei der Datenerhebung, besonders bei großen Datensätzen. Gründe dafür gibt es viele: unvollständige Angaben von Teilnehmenden, Nichtbeantwortung durch Personen, die keine Informationen teilen wollen, schlecht gestaltete Umfragen oder das Entfernen von Daten aus Vertraulichkeitsgründen.

Werden fehlende Daten nicht angemessen behandelt, können sie sämtliche statistischen Analysen verzerren – und so zu falschen Geschäftsentscheidungen führen.

In diesem Artikel stellen wir einige Techniken vor, mit denen du fehlende Werte effizient behandeln kannst, sowie deren Implementierung in Python. Wir zeigen Vor- und Nachteile jeder Methode, damit du für jede Situation die passende Wahl triffst.

Fehlende Daten erkennen

Fehlende Daten treten in unterschiedlichen Formen auf. In diesem Abschnitt erklären wir die verschiedenen Typen fehlender Daten und wie du sie identifizierst.

Arten fehlender Daten

Es gibt drei Haupttypen fehlender Daten: (1) Missing Completely at Random (MCAR), (2) Missing at Random (MAR) und (3) Missing Not at Random (MNAR).

Es ist wichtig, jede Art gut zu verstehen, um geeignete Methoden für den Umgang damit auszuwählen. 

1) MCAR – Missing completely at random

Das liegt vor, wenn alle Variablen und Beobachtungen die gleiche Wahrscheinlichkeit haben, zu fehlen. Stell dir vor, ein Kind bekommt Legosteine in verschiedenen Farben, um ein Haus zu bauen. Jeder Legostein steht für ein Stück Information, etwa Form und Farbe. Beim Spielen verliert das Kind ein paar Steine. Diese verlorenen Steine entsprechen fehlenden Informationen – so wie wenn es sich nicht mehr an Form oder Farbe erinnert. Die Information ging zufällig verloren und beeinflusst nicht, was das Kind über die übrigen Steine weiß. 

2) MAR – Missing at random

Bei MAR hängt die Wahrscheinlichkeit, dass ein Wert fehlt, vom Wert der Variablen selbst oder von anderen Variablen im Datensatz ab. Das bedeutet, nicht alle Beobachtungen und Variablen haben die gleiche Chance, zu fehlen. Ein Beispiel: In einer Umfrage in der Data-Community sind Data Scientists, die ihre Kompetenzen nicht regelmäßig auffrischen, eher nicht über neue State-of-the-Art-Algorithmen oder -Technologien informiert und überspringen daher bestimmte Fragen. Das Fehlen der Daten hängt hier mit der Häufigkeit der Weiterbildung zusammen.

3) MNAR – Missing not at random

MNAR gilt als das schwierigste Szenario der drei Arten fehlender Daten. Es trifft zu, wenn weder MAR noch MCAR gelten. Hier unterscheidet sich die Fehlwahrscheinlichkeit je nach Wert derselben Variablen stark, und die Gründe dafür können uns unbekannt sein. Beispiel: In einer Umfrage zu Ehepaaren möchten Paare mit schlechter Beziehung bestimmte Fragen nicht beantworten, weil es ihnen unangenehm ist.

Methoden zur Identifikation fehlender Daten

In pandas gibt es mehrere Möglichkeiten, fehlende Daten zu erkennen. Hier sind die gängigsten.

Funktionen

Beschreibungen

.isnull()

Diese Funktion gibt ein pandas-DataFrame zurück, in dem jeder Wert ein boolescher Wert ist: True, wenn der Wert fehlt, sonst False.

.notnull()

Analog zur vorherigen Funktion gilt hier: False, wenn ein NaN- oder None-Wert erkannt wird.

.info()

Diese Funktion erzeugt drei Hauptspalten, darunter „Non-Null Count“, der die Anzahl nicht fehlender Werte je Spalte zeigt.

.isna()

Diese Funktion ähnelt isnull und notnull. Sie zeigt jedoch nur dann True an, wenn der fehlende Wert vom Typ NaN ist. 

Werde ein ML-Wissenschaftler

Beherrsche Python, um ein Wissenschaftler für maschinelles Lernen zu werden
Kostenloses Lernen Beginnen

Umgang mit fehlenden Daten

Es gibt mehrere Ansätze, um fehlende Daten zu behandeln. In diesem Abschnitt stellen wir einige davon samt Vor- und Nachteilen vor.

Zur Veranschaulichung nutzen wir die Loan Data auf DataLab zusammen mit dem im Tutorial verwendeten Quellcode

Da der Datensatz keine fehlenden Werte enthält, verwenden wir einen Ausschnitt (100 Zeilen) und fügen anschließend manuell fehlende Werte hinzu.

import pandas as pd
sample_customer_data = pd.read_csv("data/customer_churn.csv",  nrows=100)
sample_customer_data.info()

Sample of 100 random samples

Stichprobe mit 100 zufälligen Zeilen vor dem Einfügen fehlender Werte

Fügen wir nun in jeder Spalte des DataFrames 50% fehlende Werte ein.

import numpy as np
def introduce_nan(x,percentage):
n = int(len(x)*(percentage - x.isna().mean()))
idxs = np.random.choice(len(x), max(n,0), replace=False, p=x.notna()/x.notna().sum())
x.iloc[idxs] = np.nan

Die Anwendung der Funktion auf die Daten führt zu folgendem Ergebnis. 

sample_customer_data.apply(introduce_nan, percentage=.5)
sample_customer_data.info()

samples after introducing missing values

Stichprobe mit 100 zufälligen Zeilen nach dem Einfügen fehlender Werte

Hier sind die ersten fünf Zeilen des Datensatzes. 

sample_customer_data.head()

First five rows with null values

Die ersten fünf Zeilen mit Nullwerten

Daten entfernen

Mit der Funktion dropna() lassen sich Beobachtungen oder Features mit fehlenden Werten am einfachsten aus dem DataFrame entfernen. Hier ein paar Varianten. 

1) Beobachtungen mit fehlenden Werten entfernen

Beim Entfernen von Beobachtungen aus einem Datensatz können drei Szenarien auftreten: 

  • dropna(): Entfernt alle Zeilen mit fehlenden Werten.
drop_na_strategy = sample_customer_data.dropna()
drop_na_strategy.info()

Drop observations

Beobachtungen entfernen mit der Standardfunktion dropna()

Wir sehen, dass sämtliche Beobachtungen entfernt wurden – das kann die weitere Analyse massiv gefährden. 

  • dropna(how = ‘all’): Entfernt Zeilen, in denen alle Spaltenwerte fehlen.
drop_na_all_strategy = sample_customer_data.dropna(how="all")
drop_na_all_strategy.info()

Am folgenden Ergebnis erkennen wir, dass es keine Beobachtungen gibt, in denen alle Spalten fehlen.

samples after introducing missing values

Beobachtungen entfernen mit der „all“-Strategie

  • dropna(thresh = minimum_value): Zeilen anhand eines Schwellenwerts entfernen. Diese Strategie legt eine Mindestanzahl nicht fehlender Werte fest, die eine Zeile behalten muss. 
drop_na_thres_strategy = sample_customer_data.dropna(thresh=0.6)
drop_na_thres_strategy.info()

Mit einem Schwellwert von 60% erhalten wir dasselbe Ergebnis wie zuvor.

Drop observations using the “all” strategy

Beobachtungen anhand eines Schwellwerts entfernen

2) Spalten mit fehlenden Werten entfernen

Mit dem Parameter axis = 1 gibst du explizit an, dass es um Spalten statt Zeilen geht. 

  • dropna(axis = 1): Entfernt alle Spalten mit fehlenden Werten.
drop_na_cols_strategy = sample_customer_data.dropna(axis=1)
drop_na_cols_strategy.info()

Im Ergebnis sind keine Spalten mehr vorhanden. Das liegt daran, dass in jeder Spalte mindestens ein fehlender Wert vorkommt.

Empty dataframe after dropna

Leeres DataFrame nach dropna() auf Spalten

Wie viele andere Ansätze hat auch dropna() Vor- und Nachteile.

Vorteile

  • Einfach und unkompliziert in der Anwendung.
  • Sinnvoll, wenn fehlende Werte keine Relevanz haben. 

Nachteile

  • Kann zu Informationsverlust führen und dadurch den finalen Datensatz verzerren.
  • Ungeeignet, wenn Daten nicht vollständig zufällig fehlen.
  • Bei hohem Anteil fehlender Werte schrumpft der Datensatz stark, was alle statistischen Ergebnisse beeinträchtigen kann. 

Imputation mit Mittelwert/Median

Diese Ersetzungsstrategien erklären sich von selbst: Mittelwert- und Medianimputation ersetzen fehlende Werte einer Spalte durch den Mittelwert bzw. Median der vorhandenen Werte in dieser Spalte. 

Die ideale Annahme ist Normalverteilung. Das ist jedoch nicht immer gegeben. Hier hilft die Medianimputation, da sie unempfindlich gegenüber Ausreißern ist.

In Python kannst du dafür die pandas-Funktion fillna() verwenden. 

  • Beispiel für Mittelwertimputation.
mean_value = sample_customer_data.mean()
mean_imputation = sample_customer_data.fillna(mean_value)

Result of the mean imputation

Ergebnis der Mittelwertimputation

  • Beispiel für Medianimputation
median_value = sample_customer_data.median()
median_imputation = sample_customer_data.fillna(median_value)
median_imputation.head()

Result of the mean imputation

Ergebnis der Medianimputation

Vorteile

  • Einfachheit und schnelle Implementierung sprechen für Mittelwert- und Medianimputation.
  • Die Imputation nutzt vorhandene Informationen aus nicht fehlenden Daten; zusätzliche Daten sind nicht nötig.
  • Mittelwert und Median liefern gute Schätzungen fehlender Werte – der Mittelwert bei normalverteilten, der Median bei schief verteilten Daten.

Nachteile

  • Für kategoriale Spalten ungeeignet, funktioniert nur bei numerischen.
  • Der Mittelwert ist ausreißeranfällig und kann die zentrale Tendenz schlecht abbilden; auch der Median repräsentiert diese nicht immer besser.
  • Medianimputation setzt MCAR voraus, was nicht immer zutrifft. 

Zufallsstichproben-Imputation

Die Idee hinter der Zufallsstichproben-Imputation unterscheidet sich von den bisherigen und umfasst zusätzliche Schritte. 

  • Zunächst werden zwei Teilmengen aus den Originaldaten erstellt. 
  • Die erste enthält alle Beobachtungen ohne fehlende Daten, die zweite jene mit fehlenden Daten. 
  • Dann wird aus jeder Teilmenge eine Zufallsbeobachtung gezogen.
  • Anschließend werden die fehlenden Werte der zuvor ausgewählten Beobachtung durch vorhandene Werte aus der vollständigen Beobachtung ersetzt.
  • Dieser Prozess wird wiederholt, bis keine fehlenden Informationen mehr vorhanden sind.
def random_sample_imputation(df):
   
cols_with_missing_values = df.columns[df.isna().any()].tolist()

for var in cols_with_missing_values:

    # extract a random sample
    random_sample_df = df[var].dropna().sample(df[var].isnull().sum(),
                                                  random_state=0)
    # re-index the randomly extracted sample
    random_sample_df.index = df[
            df[var].isnull()].index

    # replace the NA
    df.loc[df[var].isnull(), var] = random_sample_df
 
return df
df = sample_customer_data.copy()
random_sample_imp_df = random_sample_imputation(sample_customer_data)
random_sample_imp_df.head()

Random sample imputation

Zufallsstichproben-Imputation

Vorteile

  • Einfache und unkomplizierte Technik.
  • Funktioniert für numerische und kategoriale Datentypen.
  • Verzerrt die Varianz weniger und erhält die ursprüngliche Verteilung besser als Mittelwert- oder Medianimputation.

Nachteile

  • Zufall funktioniert nicht in jeder Situation und kann Rauschen einbringen – mit potenziell falschen Schlussfolgerungen.
  • Wie bei Mittelwert/Median wird angenommen, dass Daten vollständig zufällig fehlen (MCAR).

Multiple Imputation

Dies ist eine multivariate Imputationstechnik, bei der fehlende Informationen unter Berücksichtigung anderer Spalten gefüllt werden. 

Fehlt beispielsweise das Einkommen einer Person, ist unklar, ob ein Hypothekendarlehen besteht. Um den passenden Wert zu schätzen, betrachtet man weitere Merkmale wie Kreditwürdigkeit, Beruf und Hauseigentum.

Multiple Imputation by Chained Equations (kurz MICE) ist eine der beliebtesten Methoden in der multivariaten Imputation. Um MICE besser zu verstehen, betrachten wir die Variablen X1, X2, … Xn, von denen einige oder alle fehlende Werte haben. 

Der Algorithmus funktioniert wie folgt: 

  • Für jede Variable werden fehlende Werte zunächst mit einer einfachen Strategie (z. B. Mittelwert) ersetzt – als „Platzhalter“.
  • Die „Platzhalter“ der ersten Variablen X1 werden mittels Regressionsmodell geschätzt, wobei X1 die abhängige Variable ist und die übrigen Variablen als unabhängige dienen. Dann wird X2 als abhängige Variable verwendet und so fort, bis jede Variable mindestens einmal abhängig war.
  • Die ursprünglichen „Platzhalter“ werden durch die Vorhersagen des Regressionsmodells ersetzt.
  • Dieser Ersetzungsvorgang wird über mehrere Zyklen wiederholt – in der Regel zehn laut Raghunathan et al. 2002 – und die Imputation wird pro Zyklus aktualisiert. 
  • Am Ende werden die fehlenden Werte idealerweise durch Vorhersagen ersetzt, die die in den Daten erkannten Zusammenhänge am besten widerspiegeln.

Die Implementierung erfolgt mit der Bibliothek miceforest

Zunächst installieren wir die Bibliothek mit pip.

pip install miceforest

Dann importieren wir das Modul ImputationKernel und erstellen den Kernel für die Imputation.

from miceforest import ImputationKernel

mice_kernel = ImputationKernel(
data = sample_customer_data,
save_all_iterations = True,
random_state = 2023
)

Anschließend lassen wir den Kernel zwei Iterationen laufen und erzeugen zum Schluss die imputierten Daten.

mice_kernel.mice(2)
mice_imputation = mice_kernel.complete_data()
mice_imputation.head()

Multiple imputation

Multiple Imputation

Vorteile

  • Sehr leistungsfähig bei fehlenden Daten über mehrere Variablen und Datentypen. 
  • Liefert oft deutlich bessere Ergebnisse als Mittelwert- oder Medianimputation. 
  • Viele Algorithmen wie K-Nearest Neighbors, Random Forest und neuronale Netze können als Backbone der Vorhersagen dienen.  

Nachteile

  • Setzt voraus, dass Daten MAR sind (Missing At Random).
  • Rechenintensiver als andere Techniken, besonders bei großen Datensätzen. 
  • Erfordert mehr Aufwand als die zuvor genannten Methoden.

Aus allen Imputationen lässt sich ableiten, welche der ursprünglichen Verteilung am nächsten kommt.

Der Mittelwert (gelb) und der Median (rot) weichen deutlich von der Originalverteilung der Spalte „Charge amount“ ab und sind daher zur Imputation hier weniger geeignet.

mean_imputation["Charge Amount Mean Imp"] = mean_imputation["Charge Amount"]
median_imputation["Charge Amount Median Imp"] = median_imputation["Charge Amount"]
random_sample_imp_df["Charge Amount Random Imp"] = random_sample_imp_df["Charge Amount"]

Mit den neuen Spalten für jede Imputationsart können wir nun die Verteilung plotten.

import matplotlib.pyplot as plt
plt.figure(figsize=(12,8))

sample_customer_data["Charge Amount"].plot(kind='kde',color='blue')
mean_imputation["Charge Amount Mean Imp"].plot(kind='kde',color='yellow')
median_imputation["Charge Amount Median Imp"].plot(kind='kde',color='red')

Original data vs mean vs median

Charge Amount“-Verteilung: Originaldaten vs. Mittelwert vs. Median.

Betrachten wir Multiple Imputation und Zufallsimputation unten, liegen diese Verteilungen nahezu deckungsgleich mit den Originaldaten. Diese Imputationen sind damit besser als Mittelwert und Median.

random_sample_imp_df["Charge Amount Random Imp"] = random_sample_imp_df["Charge Amount"]
mice_imputation["Charge Amount MICE Imp"] = mice_imputation["Charge Amount"]

mice_imputation["Charge Amount MICE Imp"].plot(kind='kde',color='black')
random_sample_imp_df["Charge Amount Random Imp"].plot(kind='kde',color='purple')

plt.legend()

original data vs mean vs median vs MICE vs random

Charge Amount“-Verteilung: Original vs. Mittelwert vs. Median vs. MICE vs. Random

Der Kurs Handling Missing Data with Imputations in R ist eine hervorragende Ressource, um weitere Strategien zum Umgang mit fehlenden Werten kennenzulernen. Du erfährst, wie du Visualisierungen und statistische Tests nutzt, um Muster fehlender Daten zu erkennen, und wie du sie mit statistischen und Machine-Learning-Techniken imputierst.  

Ebenfalls empfehlenswert: Der Kurs Dealing with Missing Data in Python zeigt, wie du fehlende Daten in Python identifizierst, analysierst, entfernst und imputierst.

Best Practices

Die passende Imputationsmethode je nach Typ fehlender Daten wählen

Es gibt zahlreiche Imputationsstrategien – und sie sollten nicht blind angewendet werden. Die richtige Wahl verhindert Verzerrungen und falsche Entscheidungen. 

Die folgende Tabelle zeigt, welche Methode sich je nach Art fehlender Daten anbietet. Die Liste ist nicht vollständig, deckt aber die gängigsten Verfahren ab.

Typ fehlender Daten

Imputationsmethode

Missing Completely At Random

Mittelwert, Median, Modus oder eine andere Imputation

Missing At Random

Multiple Imputation, Regressionsimputation

Missing Not At Random

Pattern Substitution, Maximum-Likelihood-Schätzung

Auswirkungen der Imputation auf die Gesamtanalyse bewerten

Wichtig: Die Originaldaten lassen sich durch keine Imputation vollständig wiederherstellen. Du kannst jedoch Verfahren nutzen, die möglichst realitätsnahe imputierte Datensätze erzeugen. 

Beachte dazu folgende Schritte.

  • Teste mehrere Imputationstechniken, um die robusteste zu finden. So erkennst du Bias und Unterschiede zwischen den Verfahren.
  • Vergleiche die imputierten Daten mit den ursprünglichen, nicht imputierten Daten, um die Zuverlässigkeit der Methode zu beurteilen. 
  • Integriere die Imputation in die gesamte Analyse-Pipeline – vom Data Cleaning bis zum Machine-Learning-Modell. 

Fehlende Daten und Imputationsmethoden gegenüber Stakeholdern kommunizieren

Daten in hoher Qualität sind das Ziel aller Stakeholder und Data-Profis. 

Offenheit und Transparenz sind entscheidend, wenn fehlende Daten in der Analyse kommuniziert werden. Beachte dabei Folgendes. 

  • Kenne den Kontext der fehlenden Daten: MCAR, MAR oder MNAR.
  • Erkläre und dokumentiere die verwendeten Methoden klar und diskutiere Vor- und Nachteile.
  • Vermittle die Ergebnisse so, dass Stakeholder sie verstehen.

Fazit

Dieser Artikel hat erklärt, was fehlende Daten sind und wie sie datenbasierte Entscheidungen beeinflussen. Außerdem hast du Strategien kennengelernt, um damit umzugehen – inklusive ihrer Stärken und Schwächen für handlungsfähige Entscheidungen.

Wir hoffen, dass du damit die passenden Strategien an der Hand hast, um fehlende Werte in deinen Daten effizient zu behandeln.

Lass dich in Data Science zertifizieren

Überprüfe deine professionellen Fähigkeiten als Data Scientist.

Meine Datenkarriere Vorantreiben
Timeline mobile.png

Missing Values FAQs

What is missing data?

Fehlende Daten bedeuten, dass einige oder alle Variablen im Datensatz fehlende Werte aufweisen.

What are the different types of missing data?

Es gibt drei Haupttypen fehlender Daten: Missing Completely at Random (MCAR), Missing At Random (MAR) und Missing Not At Random (MNAR).

How to deal with missing data?

Diese Ansätze helfen beim Umgang mit fehlenden Werten: Imputation mit Mittelwert, Median, Modus, Zufallsstichproben-Imputation und Multiple Imputation. Die Liste ist nicht vollständig, und jede Methode hat Vor- und Nachteile.

Why are missing data important?

Sie sind wichtig, weil sie die Performance deiner Machine-Learning-Modelle beeinflussen und die Schlussfolgerungen aus statistischen Analysen verzerren können – was zu falschen Geschäftsentscheidungen führt.

Themen
Datenanalyse
Python

Top-Kurse

Kurs

Umgang mit fehlenden Daten in Python

4 Std.
26.1K
Lerne, fehlende Daten in Python zu erkennen, zu analysieren, zu entfernen und zu imputieren.
Details anzeigenRight Arrow
Kurs Starten
Mehr anzeigenRight Arrow