Seit 2019 im DACH-RaumSeit 2019
50+ Statistik-Experten50+ Experten
Über 1.200 Projekte1.200+ Projekte
Alle StatistikprogrammeAlle Programme
Express möglichExpress
Statistik-Ratgeber

Wie geht man mit fehlenden Werten in Python um?

Python · Maximilian Fuchs · 10. Juni 2026 · 10 Min. Lesezeit

Was sind fehlende Werte und wie entstehen sie?

Fehlende Werte sind eines der häufigsten Probleme bei empirischen Auswertungen – und einer der am häufigsten unterschätzten Schritte im Datenbereinigungsprozess. In Python begegnen sie Ihnen in der Regel als NaN (Not a Number), NaT (Not a Time) oder None, je nachdem mit welchem Datentyp Sie arbeiten.

Fehlende Werte entstehen in der Forschungspraxis auf vielfältige Weise: Befragte überspringen einzelne Fragen, Messgeräte liefern keine Daten, Datenbankeinträge sind unvollständig, oder beim Import von CSV- oder Excel-Dateien bleiben Zellen leer. In jedem dieser Fälle muss eine bewusste methodische Entscheidung getroffen werden – Ignorieren ist keine Option.

Gut zu wissen Fehlende Werte in Python sind je nach Datentyp unterschiedlich repräsentiert: numpy.nan für numerische Spalten, pd.NaT für Datums- und Zeitdaten sowie pd.NA für nullable Datentypen wie Int64Dtype oder StringDtype. Diese Unterschiede wirken sich direkt auf Berechnungen und Modellkompatibilität aus – ein Punkt, den die offizielle pandas-Dokumentation zu fehlenden Werten besonders betont.

Für Ihre Abschlussarbeit ist das keine rein technische Frage: Die Art, wie Sie mit fehlenden Werten umgehen, beeinflusst die Validität Ihrer Ergebnisse und muss im Methodenteil begründet werden.

Die drei Typen fehlender Werte: MCAR, MAR und MNAR

Bevor Sie in Python irgendetwas bereinigen, sollten Sie verstehen, warum Werte fehlen. Die Statistik unterscheidet drei grundlegende Mechanismen:

  • MCAR – Missing Completely at Random: Das Fehlen ist völlig zufällig und hängt weder mit dem fehlenden Wert selbst noch mit anderen Variablen zusammen. Das ist der günstigste Fall – Löschen verzerrt hier nicht.
  • MAR – Missing at Random: Das Fehlen hängt von anderen beobachteten Variablen ab, nicht vom fehlenden Wert selbst. Beispiel: Ältere Personen überspringen öfter eine bestimmte Frage. Dieser Fall lässt sich durch Imputation gut handhaben.
  • MNAR – Missing Not at Random: Das Fehlen hängt vom fehlenden Wert selbst ab. Beispiel: Personen mit sehr hohem Einkommen machen keine Angaben zum Einkommen. Dieser Fall ist methodisch anspruchsvoll und lässt sich nicht einfach wegimputieren.

Für Ihre statistische Auswertung in der Abschlussarbeit gilt: Benennen Sie den Typ fehlender Werte explizit und begründen Sie Ihre Wahl der Behandlungsstrategie daran.

Fehlende Werte in Python erkennen und diagnostizieren

Der erste Schritt im Umgang mit fehlenden Werten ist immer die Diagnose. Wie viele Werte fehlen? In welchen Spalten? Gibt es Muster?

Grundlegende Erkennung mit pandas

Die zentralen Funktionen sind isna() und notna(). Kombiniert mit sum() und mean() erhalten Sie schnell eine Übersicht:

Python
import pandas as pd
import numpy as np

# Beispieldatensatz laden
df = pd.read_csv("fragebogen.csv")

# Anzahl fehlender Werte pro Spalte
print(df.isna().sum())

# Anteil fehlender Werte pro Spalte (in Prozent)
print(df.isna().mean() * 100)

# Zeilen mit mindestens einem fehlenden Wert
print(df[df.isna().any(axis=1)])

# Gesamtüberblick
print(f"Fehlende Werte gesamt: {df.isna().sum().sum()}")
print(f"Anteil am Datensatz: {df.isna().mean().mean() * 100:.2f}%")

Muster fehlender Werte visualisieren

Für eine visuelle Diagnose empfiehlt sich das Paket missingno. Es zeigt auf einen Blick, ob fehlende Werte zufällig über den Datensatz verteilt sind oder ob sie in bestimmten Zeilen oder Spalten gehäuft auftreten – ein wichtiger Hinweis auf den zugrunde liegenden Mechanismus (MCAR vs. MAR).

Python
import missingno as msno
import matplotlib.pyplot as plt

# Matrix-Darstellung: zeigt Muster fehlender Werte
msno.matrix(df)
plt.show()

# Heatmap: zeigt Korrelation zwischen fehlenden Werten
msno.heatmap(df)
plt.show()

Einfach erklärt Wenn in der Matrix-Darstellung von missingno fehlende Werte gleichzeitig in mehreren Spalten auftreten (horizontale Lücken in denselben Zeilen), deutet das auf einen systematischen Ausfallmechanismus hin – also eher MAR oder MNAR als MCAR.

Fehlende Werte löschen: Wann ist das vertretbar?

Das Löschen von Zeilen oder Spalten mit fehlenden Werten – auch listenweiser Fallausschluss oder complete case analysis genannt – ist die einfachste Strategie und in pandas mit dropna() schnell umgesetzt.

Python
import pandas as pd

df = pd.read_csv("fragebogen.csv")

# Alle Zeilen mit mindestens einem fehlenden Wert entfernen
df_clean = df.dropna()

# Nur Zeilen entfernen, in denen bestimmte Spalten fehlen
df_clean = df.dropna(subset=["alter", "einkommen", "zufriedenheit"])

# Spalten entfernen, in denen mehr als 30% fehlen
threshold = len(df) * 0.7
df_clean = df.dropna(thresh=threshold, axis=1)

print(f"Ursprüngliche Zeilen: {len(df)}")
print(f"Zeilen nach Bereinigung: {len(df_clean)}")

Das Löschen ist nur dann methodisch vertretbar, wenn die fehlenden Werte MCAR sind und der Anteil fehlender Werte gering ist – in der Praxis wird häufig ein Grenzwert von etwa 5 % genannt. Bei höheren Anteilen oder wenn MAR/MNAR vorliegt, entstehen durch den listenweisen Fallausschluss verzerrte Stichproben und damit verzerrte Ergebnisse.

Häufiger Fehler Viele Studierende löschen fehlende Werte, ohne zu prüfen, wie viele Fälle dadurch verloren gehen und ob die verbleibende Stichprobe noch repräsentativ ist. Bei 20 % fehlenden Werten und listenweisem Ausschluss kann ein Datensatz dramatisch schrumpfen – mit unmittelbaren Folgen für die statistische Power Ihrer Analysen.

Fehlende Werte imputieren: Methoden im Überblick

Imputation bezeichnet das Schätzen fehlender Werte auf Basis der vorhandenen Daten. In Python stellt vor allem scikit-learn dafür komfortable Werkzeuge bereit. Grundsätzlich unterscheidet man univariate von multivariater Imputation.

Univariate Imputation mit SimpleImputer

Bei der univariaten Imputation wird ein fehlender Wert ausschließlich durch Informationen aus derselben Spalte ersetzt – typischerweise durch den Mittelwert, Median oder häufigsten Wert (Modus).

Python
import pandas as pd
from sklearn.impute import SimpleImputer
import numpy as np

df = pd.read_csv("fragebogen.csv")

# Mittelwert-Imputation für numerische Spalten
imputer_mean = SimpleImputer(strategy="mean")
df[["alter", "einkommen"]] = imputer_mean.fit_transform(df[["alter", "einkommen"]])

# Median-Imputation (robuster bei Ausreißern)
imputer_median = SimpleImputer(strategy="median")
df[["reaktionszeit"]] = imputer_median.fit_transform(df[["reaktionszeit"]])

# Modus-Imputation für kategoriale Variablen
imputer_mode = SimpleImputer(strategy="most_frequent")
df[["bildungsgrad"]] = imputer_mode.fit_transform(df[["bildungsgrad"]])

print(df.isna().sum())

Mittelwert- und Medianimputation sind schnell und verständlich, verzerren aber die Varianz der Variablen – die imputierten Fälle sind künstlich homogen. Für deskriptive Auswertungen mit wenigen fehlenden Werten mag das ausreichen; für inferenzstatistische Analysen wie t-Tests oder Regressionsanalysen ist das jedoch kritisch zu sehen.

Multivariate Imputation mit KNNImputer

Eine deutlich bessere Alternative ist die multivariate Imputation: Dabei werden zur Schätzung eines fehlenden Wertes auch andere Variablen im Datensatz herangezogen. Der KNNImputer (k-Nearest Neighbors) ersetzt fehlende Werte durch den gewichteten Durchschnitt der k ähnlichsten Beobachtungen.

Python
import pandas as pd
from sklearn.impute import KNNImputer

df = pd.read_csv("fragebogen.csv")
numerische_spalten = ["alter", "einkommen", "zufriedenheit", "reaktionszeit"]

# KNN-Imputation mit 5 Nachbarn
knn_imputer = KNNImputer(n_neighbors=5)
df[numerische_spalten] = knn_imputer.fit_transform(df[numerische_spalten])

print(df[numerische_spalten].isna().sum())

KNN-Imputation ist besonders sinnvoll, wenn Variablen untereinander korreliert sind – was in sozialwissenschaftlichen und psychologischen Datensätzen häufig der Fall ist. Der Nachteil: Die Methode ist rechenintensiver und bei sehr großen Datensätzen langsam.

Iterative Imputation (MICE-ähnlich)

Der IterativeImputer in scikit-learn modelliert jede Variable mit fehlenden Werten als Funktion der anderen Variablen und iteriert diesen Prozess mehrfach. Die Methode ist konzeptionell eng verwandt mit dem MICE-Ansatz (Multivariate Imputation by Chained Equations). In der Fachliteratur gilt dieser Ansatz als besonders leistungsfähig, weil er multivariate Abhängigkeiten zwischen Variablen berücksichtigt und so deutlich weniger Informationsverlust verursacht als listenweiser Fallausschluss.

Python
import pandas as pd
from sklearn.experimental import enable_iterative_imputer  # muss importiert werden
from sklearn.impute import IterativeImputer
from sklearn.linear_model import BayesianRidge

df = pd.read_csv("fragebogen.csv")
numerische_spalten = ["alter", "einkommen", "zufriedenheit", "reaktionszeit"]

# Iterative Imputation (experimentell in scikit-learn)
iterative_imputer = IterativeImputer(
    estimator=BayesianRidge(),
    max_iter=10,
    random_state=42
)
df[numerische_spalten] = iterative_imputer.fit_transform(df[numerische_spalten])

print(df[numerische_spalten].isna().sum())

Wichtig: Der IterativeImputer ist in scikit-learn noch als experimentell gekennzeichnet. Für Produktionsumgebungen oder sehr anspruchsvolle statistische Analysen empfiehlt sich daher der Blick auf vollständige Multiple-Imputation-Verfahren.

Multiple Imputation: Der methodisch sauberste Weg

Der IterativeImputer erzeugt einen einzigen imputierten Datensatz – das ist Single Imputation. Das Problem dabei: Die Unsicherheit, die durch die fehlenden Werte entsteht, wird unterschätzt. Standardfehler und Konfidenzintervalle fallen dadurch zu eng aus.

Die methodisch überlegene Lösung ist Multiple Imputation: Es werden mehrere vollständige Datensätze erzeugt (typischerweise 5–20), jeder wird separat analysiert, und die Ergebnisse werden anschließend nach Rubin’s Rules zusammengeführt. Diese Vorgehensweise berücksichtigt die Schätzunsicherheit angemessen.

Das Konzept dahinter ist methodisch klar fundiert: Multivariate Imputation durch verkettete Gleichungen, wie sie etwa im MICE-Verfahren implementiert ist, nutzt bedingte Imputationsmodelle und iteriert diese, um vollständige Datensätze zu erzeugen, die die ursprüngliche multivariate Struktur der Daten bewahren. Dieser Ansatz gilt in der methodischen Literatur als Goldstandard für MAR-Daten.

In Python lässt sich Multiple Imputation mit dem Paket miceforest umsetzen, das den MICE-Ansatz mit Random-Forest-Modellen kombiniert:

Python
import pandas as pd
import miceforest as mf

df = pd.read_csv("fragebogen.csv")

# Kernel mit 5 imputierten Datensätzen erstellen
kernel = mf.ImputationKernel(
    data=df,
    datasets=5,
    save_all_iterations=True,
    random_state=42
)

# Imputation durchführen (3 Iterationen)
kernel.mice(3)

# Einen der imputierten Datensätze abrufen
df_imputed = kernel.complete_data(dataset=0)

# Diagnose: Verteilungen vergleichen
kernel.plot_imputed_distributions(wspace=0.3, hspace=0.4)

Für die statistische Auswertung in Ihrer Abschlussarbeit bedeutet das: Analysieren Sie jeden der imputierten Datensätze separat und fassen Sie die Ergebnisse zusammen. Das ist aufwändiger als eine einfache Imputation, aber methodisch deutlich sauberer – besonders wenn Ihre Ergebnisse in einer Dissertation oder einem Journal-Artikel veröffentlicht werden sollen.

Empfohlener Workflow für Abschlussarbeiten

Wie sieht ein praxistauglicher Umgang mit fehlenden Werten in einer empirischen Abschlussarbeit aus? Die folgende Checkliste fasst die wichtigsten Schritte zusammen.

Workflow: Fehlende Werte behandeln

  • Diagnose: Anzahl und Anteil fehlender Werte pro Variable mit isna().sum() und isna().mean() bestimmen
  • Muster prüfen: Mit missingno visualisieren, ob fehlende Werte zufällig verteilt oder systematisch gehäuft sind
  • Mechanismus bestimmen: MCAR, MAR oder MNAR – auf Basis inhaltlicher Überlegungen und ggf. Little’s MCAR-Test
  • Strategie wählen: Bei < 5 % und MCAR: listenweiser Ausschluss vertretbar. Bei MAR: Imputation. Bei MNAR: zusätzliche Modellierung nötig
  • Imputationsmethode festlegen: SimpleImputer für einfache Fälle, KNNImputer oder IterativeImputer für multivariate Daten, miceforest für Multiple Imputation
  • Datentypen prüfen: Sicherstellen, dass Datentypen nach der Imputation korrekt sind (z. B. Integer vs. Float)
  • Dokumentieren: Im Methodenteil der Arbeit transparent beschreiben: Anteil fehlender Werte, vermuteter Mechanismus, gewählte Strategie und Begründung

Ein sauber dokumentierter Umgang mit fehlenden Werten ist kein technisches Detail – er ist ein Qualitätsmerkmal Ihrer Arbeit. Gutachtende schauen zunehmend genau hin, ob Missing-Data-Strategien methodisch begründet sind.

Überblick: Strategien zum Umgang mit fehlenden Werten in Python
Methode Python-Funktion Geeignet bei Nachteil
Listenweiser Ausschluss dropna() MCAR, < 5 % fehlend Informationsverlust, Stichprobenreduktion
Mittelwert-/Medianimputation SimpleImputer Einfache deskriptive Analysen Unterschätzt Varianz, keine Unsicherheit
KNN-Imputation KNNImputer MAR, korrelierte Variablen Rechenintensiv bei großen Datensätzen
Iterative Imputation IterativeImputer MAR, multivariate Daten Experimentell, Single Imputation
Multiple Imputation miceforest MAR, inferenzstatistische Analysen Komplex, höherer Aufwand

Fehlende Werte sind in der Datenbereinigung als eigenem Schritt der Datenanalyse fest verankert – und sie gehören zu den Themen, bei denen selbst erfahrene Forschende gelegentlich methodische Fehler machen. Wer sich unsicher ist, wie er mit seinem spezifischen Datensatz umgehen soll, findet bei der methodischen Begleitung durch erfahrene Statistikerinnen und Statistiker eine verlässliche Orientierung – gerade dann, wenn die Wahl der Imputationsstrategie im Methodenteil begründet werden muss.

Das klingt insgesamt aufwändiger als es in der Praxis ist: Für die meisten Abschlussarbeiten reicht eine gut begründete, transparente Strategie – sei es ein dokumentierter listenweiser Ausschluss oder eine einfache KNN-Imputation. Wichtig ist nicht die Sophistiziertheit der Methode, sondern die methodische Reflexion dahinter.

Python fehlende Werte pandas Imputation scikit-learn Datenbereinigung Multiple Imputation Abschlussarbeit

Ihr persönlicher Ansprechpartner

Maximilian Fuchs, M. Sc.

Teilen Sie uns mit, wie wir Ihnen helfen können.

  • Persönlicher Ansprechpartner
  • Schnelle Rückmeldung
  • Transparente Preise
  • Schutz Ihrer Daten

Fragen? Einfach anrufen!