EDA-Workflow und Datenprofiling
df.info(), df.describe(), Prüfung fehlender Werte und Datentypen sowie Kardinalitätsanalyse.
EDA-Workflow und Datenprofiling ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn AI with Python-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.
Was ist explorative Datenanalyse?
Explorative Datenanalyse (EDA) ist der erste Schritt mit jedem Datensatz, bevor Sie ein Modell erstellen. Ziel ist es, die Struktur zu verstehen, Probleme zu erkennen und ein Gefühl für die Daten zu entwickeln.
Eine strukturierte Checkliste für den ersten Überblick beantwortet folgende Fragen: Wie groß ist der Datensatz? Welche Datentypen haben die Spalten? Wo befinden sich fehlende Werte? Gibt es Duplikate? Wie sind die Werte verteilt?
- Probleme mit der Datenqualität früh erkennen
- Entscheiden, welche Merkmale bereinigt werden müssen
- Hypothesen für spätere Tests aufstellen
Daten laden
Alles beginnt mit dem Laden eines DataFrame und einem schnellen Blick mit head() und shape.
shape gibt ein Tupel (rows, columns) zurück, sodass Sie sofort wissen, mit welcher Größenordnung Sie arbeiten.
import pandas as pd
df = pd.read_csv("customers.csv")
print(df.shape) # (10000, 8)
print(df.head()) # first 5 rowsdf.info() — Datentypen und Nicht-Null-Anzahlen
df.info() ist der nützlichste erste Befehl. Er gibt für jede Spalte den Namen, ihren dtype und die Anzahl der Nicht-Null-Werte aus.
Wenn eine numerische Spalte als object angezeigt wird, stimmt etwas nicht (etwa unerwarteter Text, Kommas oder Währungssymbole). Wenn sich die Anzahl der Nicht-Null-Werte zwischen den Spalten unterscheidet, fehlen Daten.
df.info()
# <class pandas.DataFrame>
# RangeIndex: 10000 entries
# age 9800 non-null float64
# city 10000 non-null object
# income 9500 non-null float64df.describe() — Numerische Zusammenfassung
df.describe() liefert für jede numerische Spalte count, mean, std, min, Quartile (25/50/75 %) und max.
Achten Sie auf Warnsignale: ein min von -1 in einer Altersspalte, ein max, das deutlich über dem 75. Perzentil liegt (Ausreißer), oder einen Mittelwert, der weit vom Median entfernt ist (Schiefe).
print(df.describe())
# Use include="all" to also summarize categorical columns
print(df.describe(include="all"))df.isnull().sum() — Fehlende Werte zählen
Durch die Verkettung von isnull() und sum() zählen Sie die fehlenden Werte pro Spalte. Fügen Sie ein weiteres .sum() hinzu, um die Gesamtsumme zu erhalten.
Wandeln Sie die Werte in Prozent um, um den Schweregrad einzuschätzen: Bei einer Spalte, in der 60 % der Werte fehlen, kann sich das Entfernen lohnen, während 2 % fehlende Werte leicht imputiert werden können.
print(df.isnull().sum())
missing_pct = df.isnull().sum() / len(df) * 100
print(missing_pct.sort_values(ascending=False))df.duplicated().sum() — Doppelte Zeilen finden
df.duplicated() gibt eine boolesche Series zurück, die Zeilen markiert, die exakte Kopien einer früheren Zeile sind. Durch Aufsummieren erhalten Sie die Anzahl der Duplikate.
Mit subset können Sie die Suche auf bestimmte Schlüsselspalten beschränken – nützlich, wenn ein id eindeutig sein sollte.
print(df.duplicated().sum()) # exact duplicate rows
print(df.duplicated(subset=["id"]).sum()) # duplicate ids
df = df.drop_duplicates()value_counts() — Häufigkeiten von Kategorien
value_counts() zählt, wie oft jeder eindeutige Wert in einer Spalte vorkommt. Das ist das Standardwerkzeug zur Untersuchung kategorialer Daten.
Verwenden Sie normalize=True, um statt der absoluten Anzahlen die Anteile anzuzeigen, und dropna=False, um fehlende Werte in die Zählung einzubeziehen.
print(df["city"].value_counts())
print(df["city"].value_counts(normalize=True))
print(df["city"].value_counts(dropna=False))Kardinalität prüfen
Kardinalität bezeichnet die Anzahl der unterschiedlichen Werte in einer Spalte und wird mit nunique() ermittelt.
- Niedrige Kardinalität (eine überschaubare Anzahl von Kategorien) → gut für One-Hot-Encoding geeignet.
- Hohe Kardinalität (Tausende eindeutiger Zeichenketten, z. B. Benutzer-IDs) → in der Regel unverändert kein nützliches Merkmal.
for col in df.select_dtypes("object").columns:
print(col, "->", df[col].nunique(), "unique")Konstante und ID-ähnliche Spalten erkennen
Zwei Extreme sollten Sie beim Profiling markieren:
- Konstante Spalten (
nunique() == 1) enthalten keine Informationen – entfernen Sie sie. - ID-ähnliche Spalten (
nunique() == len(df)) sind für jede Zeile eindeutig und liefern den meisten Modellen keine nützlichen Informationen.
n = len(df)
for col in df.columns:
u = df[col].nunique()
if u == 1:
print(col, "is constant")
elif u == n:
print(col, "is ID-like")dtypes und Speicherverbrauch
Prüfen Sie df.dtypes, um zu bestätigen, dass die Spalten korrekt gespeichert sind, und df.memory_usage(deep=True), um speicherintensive Spalten zu finden.
Durch das Herunterstufen numerischer Datentypen und die Umwandlung von Zeichenketten mit niedriger Kardinalität in category lässt sich der Speicherbedarf großer Datensätze deutlich reduzieren.
print(df.dtypes)
print(df.memory_usage(deep=True))
df["city"] = df["city"].astype("category")Ein wiederverwendbarer Profiling-Codeausschnitt
Sie können die gesamte Checkliste in eine Hilfsfunktion verpacken, damit jeder neue Datensatz nach demselben Verfahren einen ersten Überblick erhält.
Führen Sie sie direkt nach dem Laden eines beliebigen DataFrame aus, um Form, Datentypen, fehlende Werte, Duplikate und Kardinalität sofort sichtbar zu machen.
def profile(df):
print("Shape:", df.shape)
print(df.info())
print("Missing:\n", df.isnull().sum())
print("Dupes:", df.duplicated().sum())
for c in df.select_dtypes("object"):
print(c, df[c].nunique(), "unique")
profile(df)Schnelltest: Fehlende Werte
Sie möchten den Prozentsatz der fehlenden Werte in jeder Spalte ermitteln.
Zusammenfassung: Die EDA-Checkliste für den ersten Überblick
Sie verfügen nun über eine wiederholbare Einstiegsroutine für jeden Datensatz:
shapeundhead()für Größenordnung und Vorschauinfo()für dtypes und Nicht-Null-Anzahlendescribe()für numerische Zusammenfassungen und Hinweise auf Ausreißerisnull().sum()für fehlende Werteduplicated().sum()für doppelte Zeilenvalue_counts()undnunique()für Kategoriehäufigkeiten und Kardinalität
Als Nächstes untersuchen wir einzelne Spalten mit einer univariaten Analyse.
Häufig gestellte Fragen
Ist die Lektion „EDA-Workflow und Datenprofiling“ kostenlos?
Ja — der vollständige Text von „EDA-Workflow und Datenprofiling“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn AI with Python-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „EDA-Workflow und Datenprofiling“?
df.info(), df.describe(), Prüfung fehlender Werte und Datentypen sowie Kardinalitätsanalyse. Du übst Learn AI with Python mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Learn AI with Python zu starten?
Keine Vorkenntnisse erforderlich. Learn AI with Python auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „EDA-Workflow und Datenprofiling“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Learn AI with Python-Lektion Code schreiben und ausführen?
Ja. Jede Learn AI with Python-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- EDA-Workflow und Datenprofiling
- Univariate Analyse
- Bivariate und multivariate Analyse
- Feature-Verteilung und Zielvariable analysieren