Pandas & NumPy Academy · Lektion

Univariate Analyse

Analysieren Sie jede Spalte unabhängig: Stellen Sie Verteilungen numerischer Werte und value counts kategorialer Werte dar und achten Sie auf Ausreißer und Schiefe.

Lektion 2 von 413 Schritte

Univariate Analyse ist eine kostenlose Pandas & NumPy Academy-Lektion auf CoddyKit. Dies ist Lektion 2 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 Pandas & NumPy Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Pandas & NumPy Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist eine univariate Analyse?

Die univariate Analyse untersucht jeweils eine einzelne Spalte isoliert und ignoriert Beziehungen zwischen Spalten. Ziel ist es, die Verteilung jeder Variablen zu verstehen, Ausreißer zu erkennen, Schiefe zu identifizieren und Datenqualitätsprobleme aufzudecken, bevor das Modellieren beginnt. Die univariate Analyse unterscheidet sich bei numerischen und kategorialen Spalten: Numerische Spalten benötigen Verteilungsdiagramme und zusammenfassende Statistiken, kategoriale Spalten dagegen Häufigkeiten und Anteile.

import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')
numeric_cols = df.select_dtypes('number').columns.tolist()
categoric_cols = df.select_dtypes('object').columns.tolist()

print('Numeric columns:', numeric_cols)
print('Categorical columns:', categoric_cols)

Histogramme für numerische Spalten

Erstellen Sie für jede numerische Spalte ein Histogramm, um die Form ihrer Verteilung zu erkennen. Achten Sie auf Symmetrie im Vergleich zu Schiefe (Schwanz auf einer Seite), Modalität (ein Gipfel im Vergleich zu mehreren) und offensichtliche Anomalien (Werte an extremen Enden, die unplausibel erscheinen). In Pandas erstellt df.hist() ein schnelles Histogrammraster für mehrere Spalten, ohne dass Sie eine Schleife schreiben müssen. Seaborns histplot bietet jedoch eine präzisere Steuerung für einzelne Spalten.

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = sns.load_dataset('titanic')

# Quick multi-column histogram grid
numeric = df.select_dtypes('number')
numeric.hist(bins=20, figsize=(12, 8), layout=(2, 3), color='steelblue', edgecolor='white')
plt.suptitle('Univariate Distributions (Numeric Columns)', y=1.02)
plt.tight_layout()
plt.show()

Zusammenfassende Statistiken für numerische Spalten

Berechnen und vergleichen Sie für jede numerische Spalte Mittelwert und Median. Wenn der Mittelwert deutlich größer als der Median ist, ist die Verteilung rechtsschief (langer rechter Schwanz, häufig bei Einkommens- und Preisdaten). Wenn der Mittelwert kleiner als der Median ist, ist sie linksschief. Prüfen Sie außerdem die Standardabweichung im Verhältnis zum Mittelwert: Eine Standardabweichung, die bei einer nichtnegativen Variablen größer als der Mittelwert ist, weist auf eine hohe Streuung oder Ausreißer hin. Berechnen Sie die Schiefe direkt mit df.skew().

import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')
numeric = df.select_dtypes('number')

summary = pd.DataFrame({
    'mean': numeric.mean(),
    'median': numeric.median(),
    'std': numeric.std(),
    'skewness': numeric.skew(),
    'missing_pct': (numeric.isna().sum() / len(df) * 100).round(1)
}).round(2)

print(summary)

Boxplots zur Erkennung von Ausreißern

Boxplots sind das schnellste visuelle Hilfsmittel, um Ausreißer in numerischen Spalten zu erkennen. Jeder Punkt außerhalb der Whisker (1,5×IQR von Q1 oder Q3 entfernt) wird einzeln dargestellt und als potenzieller Ausreißer markiert. Eine Spalte mit vielen Ausreißern sollte untersucht werden: Handelt es sich um Eingabefehler, legitime Extremwerte oder um Hinweise auf eine nicht normalverteilte Variable? Boxplots zeigen durch die asymmetrische Lage des Medians innerhalb der Box außerdem eine Rechts- oder Linksschiefe.

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = sns.load_dataset('titanic')

fig, axes = plt.subplots(1, 3, figsize=(14, 5))

for ax, col in zip(axes, ['age', 'fare', 'sibsp']):
    df[[col]].boxplot(ax=ax)
    ax.set_title(f'Box Plot: {col}')

plt.tight_layout()
plt.show()

Ausreißeranzahl auf IQR-Basis

Die IQR-Methode (Interquartilsabstand) definiert Ausreißer als Werte unter Q1 - 1,5×IQR oder über Q3 + 1,5×IQR. Sie können dies programmgesteuert berechnen, um Ausreißer in jeder numerischen Spalte zu zählen und zu untersuchen, ohne Diagramme zu erstellen. Das ist in automatisierten Pipelines nützlich, wenn Sie Anomalieanzahlen protokollieren möchten, statt Diagramme zu erzeugen. Die Entscheidung, was mit Ausreißern geschehen soll – entfernen, begrenzen oder markieren –, sollte bewusst und auf Grundlage von Fachwissen getroffen werden.

import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')
numeric = df.select_dtypes('number')

Q1 = numeric.quantile(0.25)
Q3 = numeric.quantile(0.75)
IQR = Q3 - Q1

lower = Q1 - 1.5 * IQR
upper = Q3 + 1.5 * IQR

outlier_counts = ((numeric < lower) | (numeric > upper)).sum()
print('Outlier counts per column:')
print(outlier_counts[outlier_counts > 0])

Wertanzahlen für kategoriale Spalten

Rufen Sie für jede kategoriale Spalte value_counts() auf, um zu sehen, wie sich die Beobachtungen auf die Kategorien verteilen. Prüfen Sie immer: Dominiert eine einzelne Kategorie (>80 %)? Dies führt bei Klassifizierungsaufgaben zu einem Klassenungleichgewicht. Gibt es seltene Kategorien mit nur 1–2 Beobachtungen (Tippfehler oder Eingabefehler)? Entspricht die Verteilung den geschäftlichen Erwartungen (z. B. eine Spalte „country“, in der die meisten Bestellungen aus einem unerwarteten Land stammen)?

import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')

for col in ['sex', 'embarked', 'class', 'who']:
    counts = df[col].value_counts(dropna=False)
    pct = (counts / len(df) * 100).round(1)
    result = pd.DataFrame({'count': counts, 'pct%': pct})
    print(f'\n--- {col} ---')
    print(result)

Balkendiagramme für kategoriale Variablen

Visualisieren Sie kategoriale Wertanzahlen als Balkendiagramme mit sns.countplot oder durch den Aufruf von value_counts().plot(kind='bar'). Sortieren Sie die Balken von der häufigsten zur seltensten Kategorie, damit die dominierenden Kategorien sofort erkennbar sind. Für binäre Variablen (ja/nein, männlich/weiblich) ist ein Kreisdiagramm akzeptabel – bei mehr als drei Kategorien sind Balkendiagramme jedoch immer übersichtlicher. Drehen Sie die Beschriftungen der Achsenmarkierungen um 45 Grad, wenn die Kategorienamen lang sind.

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = sns.load_dataset('titanic')

fig, axes = plt.subplots(1, 2, figsize=(12, 5))

sns.countplot(data=df, x='embarked', order=df['embarked'].value_counts().index, ax=axes[0])
axes[0].set_title('Embarkation Port Counts')

sns.countplot(data=df, x='class', order=['First', 'Second', 'Third'], ax=axes[1])
axes[1].set_title('Passenger Class Counts')

plt.tight_layout()
plt.show()

Schiefe erkennen und Transformationen anwenden

Stark rechtsschiefe numerische Spalten (Schiefe > 1,5) profitieren häufig von einer Logarithmustransformation, durch die sie symmetrischer werden. Dies ist für viele statistische Tests und einige ML-Algorithmen wichtig, die eine Normalverteilung voraussetzen. Wenden Sie np.log1p() (log(x+1), sicher für Werte nahe null) an und prüfen Sie die Schiefe erneut. Vergleichen Sie die Histogramme vor und nach der Transformation, um zu bestätigen, dass die Verteilung glockenförmiger geworden ist.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

df = sns.load_dataset('titanic')

fig, axes = plt.subplots(1, 2, figsize=(10, 4))

sns.histplot(df['fare'], bins=30, kde=True, ax=axes[0])
axes[0].set_title(f'fare (skew={df["fare"].skew():.2f})')

log_fare = np.log1p(df['fare'])
sns.histplot(log_fare, bins=30, kde=True, ax=axes[1], color='coral')
axes[1].set_title(f'log1p(fare) (skew={log_fare.skew():.2f})')

plt.tight_layout()
plt.show()

Spalten mit Varianz null prüfen

Eine Spalte mit Varianz null (alle Werte sind identisch) liefert keinem Modell Informationen und sollte entfernt werden. Eine Spalte mit nahezu null Varianz (99 % der Zeilen enthalten denselben Wert) ist ähnlich nutzlos. Berechnen Sie die Varianz mit df.var() und filtern Sie entsprechend. Prüfen Sie außerdem Spalten, für die nunique() == len(df) gilt – dies sind wahrscheinlich ID-Spalten, die nicht als Merkmale verwendet werden sollten, aber als Zeilenbezeichner nützlich sein können.

import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')
numeric = df.select_dtypes('number')

# Zero-variance columns
zero_var = numeric.columns[numeric.var() == 0].tolist()
print('Zero-variance columns:', zero_var)

# Near-zero variance (std < 0.01)
nzv = numeric.columns[numeric.std() < 0.01].tolist()
print('Near-zero variance:', nzv)

# Likely ID columns (all unique values)
id_candidates = [c for c in df.columns if df[c].nunique() == len(df)]
print('Likely ID columns:', id_candidates)

Automatisierungsschleife für die univariate Analyse

Anstatt dieselbe Analyse für jede Spalte manuell zu wiederholen, schreiben Sie eine Schleife, die alle numerischen Spalten durchläuft und wichtige Statistiken in einem strukturierten Format ausgibt. So können Sie Dutzende Spalten schnell überblicken und diejenigen markieren, die Aufmerksamkeit benötigen. Die Ausgabe kann als Teil eines Pipeline-Prüfprotokolls in einer CSV-Datei gespeichert werden, die Stakeholder überprüfen können, bevor die Daten zum Modellieren verwendet werden.

import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')
numeric = df.select_dtypes('number')

rows = []
for col in numeric.columns:
    s = df[col]
    Q1, Q3 = s.quantile(0.25), s.quantile(0.75)
    IQR = Q3 - Q1
    n_outliers = ((s < Q1 - 1.5*IQR) | (s > Q3 + 1.5*IQR)).sum()
    rows.append({
        'column': col,
        'missing_pct': round(s.isna().mean() * 100, 1),
        'mean': round(s.mean(), 2),
        'std': round(s.std(), 2),
        'skew': round(s.skew(), 2),
        'outliers': int(n_outliers)
    })

report = pd.DataFrame(rows)
print(report.to_string(index=False))

Ergebnisse der univariaten Analyse dokumentieren

Dokumentieren Sie Ihre Ergebnisse nach Abschluss der univariaten Analyse systematisch. Notieren Sie für jede Spalte: die Form der Verteilung (schief, bimodal, annähernd normal), den prozentualen Anteil fehlender Werte und die geplante Imputationsstrategie, die Anzahl der Ausreißer und die Entscheidung dazu (begrenzen, entfernen, markieren) sowie verdächtige Werte, die eine fachliche Klärung erfordern. Diese Dokumentation wird zum Datenqualitätsprotokoll, das die Bereinigungsschritte steuert und verhindert, dass Entscheidungen später vergessen oder angefochten werden.

Schnelltest

Testen Sie Ihr Verständnis der univariaten Analyse aus dieser Lektion.

Lektionsrückblick

In dieser Lektion haben Sie gelernt: Histogramme zeigen die Form der Verteilung numerischer Spalten, Boxplots und IQR-Grenzen identifizieren Ausreißer und value_counts zeigt die Kategoriehäufigkeit kategorialer Spalten. Durch die Automatisierung dieser Prüfungen in einer Schleife entsteht ein wiederverwendbarer Qualitätsbericht. Als Nächstes untersuchen wir die bivariate Analyse und Korrelationsanalyse – also Beziehungen zwischen Spaltenpaaren.

Kostenlos starten

Lerne Python mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
30
Lektionen
120

Häufig gestellte Fragen

Ist die Lektion „Univariate Analyse“ kostenlos?

Ja — der vollständige Text von „Univariate Analyse“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Pandas & NumPy Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Pandas & NumPy Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Univariate Analyse“?

Analysieren Sie jede Spalte unabhängig: Stellen Sie Verteilungen numerischer Werte und value counts kategorialer Werte dar und achten Sie auf Ausreißer und Schiefe. Du übst Pandas & NumPy Academy 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 Pandas & NumPy Academy zu starten?

Keine Vorkenntnisse erforderlich. Pandas & NumPy Academy 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 2 von 4.

Wie lange dauert die Lektion „Univariate Analyse“?

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 Pandas & NumPy Academy-Lektion Code schreiben und ausführen?

Ja. Jede Pandas & NumPy Academy-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

  1. Checkliste zur Datensatzanalyse
  2. Univariate Analyse
  3. Bivariate Analyse und Korrelationsanalyse
  4. Ergebnisse in einem Bericht zusammenfassen
← Zurück zu Pandas & NumPy Academy