Kurs
So ausgeklügelt Analysen oder Vorhersagemodelle auch sind – ihre Qualität hängt von den Eingangsdaten ab. Oder anders gesagt: "Garbage in, garbage out."
Weil Daten all diese Prozesse tragen, ist es entscheidend, genügend Zeit in ihre saubere Aufbereitung zu investieren.
Data Cleaning ist ein Grundpfeiler im Data-Science-Lebenszyklus, und seine Bedeutung kann man kaum überschätzen, wenn es darum geht, echte Insights zu gewinnen und verlässliche Antworten zu liefern. In der Praxis sind Daten fast immer unordentlich – Datenbereinigung lässt sich daher nicht vermeiden.
In diesem Artikel gehen wir zentrale Themen durch: den Umgang mit fehlenden Werten, Duplikaten und Ausreißern. Eine umfassendere Anleitung findest du in unseren Kursen Cleaning Data in Python oder Cleaning Data in R.
Was führt zu unsauberen Daten?
Kurz gesagt: Data Cleaning (oder Cleansing) ist der notwendige Vorbereitungsschritt für Datenanalyse. Dazu gehört, Duplikate und unvollständige Einträge zu finden und zu entfernen sowie Daten so zu verändern, dass fehlerhafte Werte korrigiert werden.
Unsaubere oder „schmutzige“ Daten sind kein neues Problem, aber die Datenmengen sind in den letzten zehn Jahren explodiert. Allein 2020 wurden weltweit über 64 Zettabyte erzeugt – das entspricht 6,4 Billionen Gigabyte. Weniger als 2% davon werden zwar dauerhaft gespeichert, doch auch das verschärft das bestehende Problem „dirty data“. Bevor du sinnvoll bereinigst, solltest du verstehen, wie die Daten überhaupt „schmutzig“ wurden. Häufige Ursachen sind:
- Menschliche Fehler bei Dateneingabe, Erfassung oder Kodierung
- Fehlfunktionen von Sensoren, etwa im Internet of Things (IoT)
- Korruption durch Hardware- oder Software-Schäden
Kenntnis der Ursachen ist die Basis, um Qualitätskriterien zu definieren und Probleme im Datensatz einzuordnen.
Warum ist Data Cleaning so wichtig?
Data Cleaning schafft eine wiederverwendbare Vorlage für die Datenpflege in der Organisation. Wie gesagt: Bei Datenanalyse gilt „Garbage in, garbage out“. Wird Bereinigung vernachlässigt, sind die Folgen teuer: fehlerhafte Analysen, Zeit- und Ressourcenverschwendung.
Was ist Datenqualität?
Datenqualität misst qualitativ und/oder quantitativ, wie gut Daten ihrem vorgesehenen Zweck dienen. Diese Messgrößen sind praktische Prüfsteine, mit denen wir einschätzen, ob Daten für unsere Ziele geeignet sind. Sie funktionieren wie Metrik-Tests, die Daten bestehen müssen, um in Data-Science-Prozessen eingesetzt zu werden.
Kriterien für Datenqualität
- Genauigkeit: Sind die Informationen bis ins Detail korrekt erfasst? Mit Daten nähern wir uns Mustern der Realität; Genauigkeit beschreibt, wie gut diese Annäherung gelingt.
- Relevanz: Trägt die Information messbar zu unserem Ziel bei?
- Konsistenz: Ist die Quelle verlässlich und die Information stimmig? Beispiel: Ein Kunde ist 15 Jahre alt, der Familienstand aber „verheiratet“.
- Vollständigkeit: Sind die Daten für das Ziel ausreichend und umfassend? Häufig ein Problem bei fehlenden Werten; hier hilft die Prüfung der Datenquelle.
- Einheitlichkeit: Wenn wir z. B. Umsätze erfassen, aber nicht alle Transaktionen in derselben Währung vorliegen, müssen wir sie auf eine einheitliche Währung bringen. Einheitlichkeit bedeutet, dass Maße in allen Systemen mit denselben Einheiten angegeben werden.
Data Cleaning vs. Datentransformation
Wichtig ist die Unterscheidung zwischen Datenbereinigung und -transformation. Datentransformation umfasst Prozesse, mit denen wir zusätzliche Erkenntnisse aus Rohdaten gewinnen. Dabei wird das Rohformat typischerweise in ein anderes Format überführt, zum Beispiel:
- Kodierung: Kategorische Werte werden in binäre oder numerische Repräsentationen umgewandelt, um sie in Machine-Learning-Algorithmen zu verwenden. Die Information bleibt gleich, das Format ändert sich.

- Binning: Auch „Bucketing“ genannt. Kontinuierliche Werte werden in Kategorien (Bins) gruppiert, um Ausreißer-Effekte zu reduzieren.

- Skalierung: Gängige Technik im Machine Learning, um Werte unterschiedlicher Größenordnungen auf einen festen Bereich zu bringen.

Bei Datentransformationen wird die ursprüngliche Darstellung meist verändert. Die Daten bleiben inhaltlich gleich, werden aber in ein Format überführt, das für Machine Learning oder andere Zwecke besser geeignet ist.
So läuft Data Cleaning ab
Richtlinien sichern Datenqualität. Ein solcher Leitfaden ist der Data-Cleaning-Workflow. Er umfasst alle nötigen Schritte der Bereinigung:
- Datenexploration
- Datenbereinigung
- Datenverifikation
- Reporting zur Datenbereinigung Einige dieser Schritte zeigen wir auch in Python
Datenexploration
Datenexploration bedeutet, die Daten und ihre Variablen gründlich zu verstehen. Mit Visualisierungen und Aggregationen deckst du zugrunde liegende Probleme auf. Für eine saubere Exploration gilt:
Datenkontext
Bevor wir Daten bereinigen, müssen wir ihren Kontext verstehen: Woher stammen die Entitäten? Unter welchen Umständen wurden sie erhoben? Der Entstehungsprozess zeigt, wofür und wie die Daten sinnvoll nutzbar sind.
Das ist der Kompass für das, was bei Bereinigung (und Analyse) zulässig ist, damit wir die richtigen Schlüsse ziehen. Haben wir Klarheit über die Erhebung, geht es in die praktische Erkundung.
Explorative Datenanalyse
Explorative Datenanalyse ist die anfängliche, kritische Untersuchung von Daten, um Muster zu entdecken, Auffälligkeiten zu finden, Hypothesen zu testen und Annahmen mit Hilfe von Zusammenfassungsstatistiken und Visualisierungen zu prüfen. Ohne Exploration keine Entdeckung. Ohne Erkundung bleiben viele Probleme in den Daten verborgen.
Beispiel: Ein Datensatz steht hier bereit. Die Rolling-Sales-Dateien des Department of Finance listen Immobilienverkäufe der letzten zwölf Monate in New York City für die Steuerklassen 1, 2 und 4. Wir laden die Bronx-Daten herunter und lesen sie ein.
#pandas
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
#read excel file
df = pd.read_excel("rollingsales_bronx.xls")
#preview data
df.head()

Auffällig an diesem DataFrame sind:
- Unbenannte Spalten
- Fehlende Werte in den ersten drei Zeilen
Ein Blick in Excel zeigt jedoch: Die eigentliche Tabelle beginnt erst in Zeile 4. Lesen wir die Daten mit passenden Parametern erneut ein, können wir Zeilen überspringen und die Kopfzeile korrekt setzen:
#we read the data in again but skill 3 rows this time
df = pd.read_excel("rollingsales_bronx.xls", skiprows = 4, header = [0])
df.head()

Die Darstellung verbessert sich deutlich. Zwar hätten wir auch die erste Version bereinigen können, aber durch Exploration sparen wir mit ein paar Import-Parametern in Python viel Zeit.
Datenexploration ist wie der Blick auf den Tatort: Wir beobachten, was nicht passt. Data Cleaning ist die aktive Ermittlungsarbeit, die das Problem löst.
Datenbereinigung
Exploration und Bereinigung gehen oft Hand in Hand. Sobald wir Probleme visuell, aggregiert oder statistisch erkennen, beheben wir sie. In dieser Phase werden Daten entfernt, korrigiert oder imputiert.
Inkonsistente Einträge
Ein klassisches Beispiel ist ein Formularfeld zum Geschlecht: 'M', 'm', 'Male' oder 'MALE' meinen dasselbe. Oder haben wir diesen Monat 'aples', 'apples' oder 'APPLES' verkauft? Am besten lassen sich solche Inkonsistenzen über Häufigkeiten oder die Liste aller eindeutigen Werte erkennen. Typische Maßnahmen sind:
- Strings in Klein- oder Eigenschreibweise konvertieren
- Leerzeichen entfernen
- Spaltennamen vereinheitlichen
Python-Beispiel: Im zuvor importierten Datensatz sind die Spaltennamen uneinheitlich:

Das wirkt harmlos, erschwert aber den Zugriff. Zum Beispiel enthält EASE-MENT Bindestriche, während andere nur Leerzeichen nutzen.
Ein Teil der Bereinigung ist Konsistenz. Wir beheben das in zwei Schritten:
- Leerzeichen durch Unterstriche ersetzen
- In Eigenschreibweise umwandeln
# Extract columns
cols = df.columns
# Create empty list for new column names
new_cols = []
# Iterate over each column name to fix issues
for column in cols:
# Convert column name to title case
proper_cols = column.title()
# Replace spaces and hyphens with underscores
proper_cols_hyphen = proper_cols.replace(" ", "_")
clean_col = proper_cols_hyphen.replace("-", "_")
# Append the cleaned column name to the list
new_cols.append(clean_col)
# Display the transformed column names
new_cols
# Replace existing columns in the dataframe with the cleaned list
df.columns = new_cols
# Preview the updated dataframe
df.head()

Datentypen und Typkonvertierung
Der Datentyp beschreibt, wie Daten repräsentiert werden – und bestimmt, welche Operationen möglich sind. Schauen wir uns die Datentypen der Bronx-Spalten an:
#data types
df.dtypes

Hinweis: Dank der vereinheitlichten Spaltennamen können wir bequem die Punkt-Notation nutzen (df.Year_Built).
Alles wirkt stimmig, nur Year_Built sollte eher kategorisch sein. Das hat zwar keine große Auswirkung, könnte aber Aggregationen verfälschen.
#Fix Year_Built column
df.Year_Built = df.Year_Built.astype("str")
#Check
df.dtypes

Fehlende Daten
Mitunter fehlen Werte in einzelnen Zeilen, manchmal sind ganze Spalten leer. Was tun? Ignorieren ist wie ein undichtes Dach: Spätestens beim nächsten Regen tropft es durch.
Fehlende Werte werden je nach Tool unterschiedlich dargestellt: NULL, leere Strings, NaN, NA, #NA etc. Entscheidend ist der Datenkontext – warum fehlen Werte? Grundsätzlich gibt es zwei Strategien:
- Entfernen
- Imputieren
Vor der Entscheidung solltest du Muster fehlender Werte spaltenübergreifend untersuchen – visuell und deskriptiv:
#extract the column names
cols = df.columns
#plot a heatmap of missing values with seaborn
plt.figure(figsize = (10,5))
sns.heatmap(df[cols].isnull())

Die Grafik zeigt:
- In Ease_ment fehlen alle Werte, in Apartment_Number fast alle
- In Units- und Square_Feet-Spalten sind Lücken verteilt. Bei sehr großen Datensätzen ist die Visualisierung unübersichtlich. Alternativ misst du die Bedeutung der fehlenden Werte relativ zur Datensatzgröße.
#Get the percentage of missing values in each column missing_pct = round(df.isnull().sum()/len(df) * 100, 1) print(missing_pct)

Wir werfen die Spalten Ease_Ment und Apartment_Number heraus und ersetzen die fehlenden Werte in den übrigen Spalten.
#columns with more than 30% missing values
drop_cols = missing_pct[missing_pct > 30].index
#We can drop these columns with greater than 30 percent missing values
df_new = df.drop(columns = drop_cols)
#Extract columns with mising values between 1 and 30%
replace_cols = missing_pct[(missing_pct > 0) & (missing_pct < 30)].index
#Iterate to replace missing values
for col in replace_cols:
#if column is year built we replace with median otherwise the mean
if col == "Year_Built":
df_new.fillna(df_new[col].median(), inplace = True)
else:
mean_value = df_new[col].mean()
df_new.fillna(mean_value, inplace = True)
df_new.isnull().sum() #preview for missing values

Natürlich gibt es noch mehr zum Thema fehlende Werte – siehe den Datacamp-Kurs Dealing with Missing Values in Python. Datensätze unterscheiden sich stark nach Typ und Struktur; ein einheitliches Patentrezept gibt es nicht. Die folgende Grafik zeigt, wann sich Lösch- oder Imputationsverfahren anbieten.

Duplikate
Für jede Beobachtung brauchen wir eine Single Source of Truth. Mehrfacheinträge zu einem Kunden entstehen etwa durch doppelte Formularabgaben oder Eingabefehler. Unabhängig von der Ursache müssen wir eine einzige, vollständige Wahrheit herstellen. So stellen Unternehmen sicher, dass:
- Kein Budget verschwendet wird, indem dieselbe Person doppelt adressiert wird
- Eine verlässliche Datengrundlage entsteht, auf der fundierte Entscheidungen möglich sind
Ausreißer
Ausreißer sind extreme Werte – sehr niedrig oder sehr hoch – die nicht zum Muster der restlichen Daten passen, zum Beispiel:
- Ein Kunde mit 200 Jahren
- Ein Sensorwert von 40° Celsius in der Antarktis
Ausreißer erkennen Es gibt unterschiedliche Methoden – visuell und statistisch:
-
Sortieren des Datensatzes: Durch einfaches Sortieren fallen Ausreißer auf. Bei großen Datenmengen ist das jedoch unpraktisch.
-
Visualisierung: Boxplots, Histogramme und Scatterplots machen Ausreißer sichtbar.
-
Z-Scores: Statistische Methode zur Quantifizierung der Ungewöhnlichkeit eines Werts (unter Normalverteilungs-Annahme) – gemessen in Standardabweichungen vom Mittelwert.
Behandlung von Ausreißern Ziel ist Entfernen oder Ersetzen extremer Werte:
- Entfernen: Z. B. Werte unterhalb/oberhalb eines Perzentils ausschließen. Entfernen ist sinnvoll,
- wenn Messfehler offensichtlich sind (ein aktiver Kunde mit 200 Jahren ist ungültig),
-
oder wenn der Ausreißer das Analyseergebnis nicht verändert und nur wenige Ausreißer vorliegen.
-
Ersetzen: Extreme Werte durch Mittelwert, Median oder Modus ersetzen. Wenn viele Ausreißer vorliegen, ist Entfernen problematisch. Hinweis: Mittelwerte sind ausreißerempfindlich; besser Median oder Modus erwägen.
Datenverifikation
Nach der Bereinigung prüfen wir die Datenqualität erneut mittels Exploration. So verifizieren wir Korrektheit und Vollständigkeit, stellen sicher, dass keine Schritte vergessen wurden und dass alles zum Datenkontext passt.
Data Cleaning, Reporting und Automatisierung
Reporting dokumentiert den Datenzustand nach der Bereinigung sowie die eingesetzten Schritte. Das schafft eine Vorlage für ähnliche zukünftige Aufgaben (Reproduzierbarkeit) und erleichtert die Automatisierung.
Automatisierung sorgt dafür, dass Data Cleaning reproduzierbar wird. Viele Schritte bestehen aus wiederverwendbaren Skripten, die sich bei Bedarf mit minimalen Anpassungen erneut einsetzen lassen.
Fazit
Wir haben Data Cleaning und alle Bausteine für ein erfolgreiches Bereinigungsprojekt im Detail betrachtet. Es ist die zeitintensivste Phase – Data-Profis verbringen daran schätzungsweise 60% eines Data-Science-Projekts. Gleichzeitig ist sie das Fundament, das über den Projekterfolg entscheidet. Unterschiedliche Quellen bringen unterschiedliche Anforderungen mit sich – passe deinen Prozess an deinen Use Case an.
Ressourcen:
- Die Abbildungen zur Datentransformation stammen aus einer Excel-Arbeitsmappe, die hier zu finden ist
- Das Python-Notebook ist in der DataCamp Workspace verfügbar