Mittelwert, Median und Modus in Python
Mittelwert, Median und Modus in Python berechnen mit numpy und statistics. Mit Beispielen, Anwendungsfällen und Umgang mit fehlenden Werten.
Mittelwert, Median und Modus sind die drei grundlegenden Maße der zentralen Tendenz in der Statistik. Jedes davon beschreibt das „Zentrum" eines Datensatzes auf eine andere Weise — zu wissen, welches man wann verwenden sollte, ist eine der ersten praktischen Fähigkeiten, die man für die Datenvorbereitung im maschinellen Lernen benötigt.
Dieses Kapitel behandelt:
- Was jedes Maß bedeutet und wie es berechnet wird
- Wie man sie in Python mit
numpyund dem Modulstatisticsberechnet - Wann man welches Maß bevorzugen sollte
- Wie man sie zum Auffüllen fehlender Werte verwendet (Imputation)
Was sind Mittelwert, Median und Modus?
Alle drei Maße fassen einen Datensatz mit einem einzigen repräsentativen Wert zusammen, erfassen jedoch unterschiedliche Aspekte der Verteilung:
| Maß | Definition | Am besten geeignet für |
|---|---|---|
| Mittelwert | Summe aller Werte ÷ Anzahl | Symmetrisch, normalverteilte Daten |
| Median | Mittelster Wert bei Sortierung | Schiefe Daten oder Daten mit Ausreißern |
| Modus | Am häufigsten vorkommender Wert | Kategorische Daten oder diskrete Zählungen |
Das Verständnis der Datenverteilung hilft dabei zu entscheiden, welches Maß für den jeweiligen Datensatz am geeignetsten ist.
Mittelwert
Der Mittelwert (arithmetisches Mittel) addiert alle Werte und dividiert durch die Anzahl der Werte.
Formel: mean = (x₁ + x₂ + … + xₙ) / n
Verwende numpy.mean(), um ihn in Python zu berechnen:
Mittelwert einer Liste mit numpy berechnen
Wann man den Mittelwert verwendet
Der Mittelwert eignet sich gut, wenn die Daten keine extremen Ausreißer aufweisen und einer annähernd symmetrischen Verteilung folgen. Bei vorhandenen Ausreißern werden diese den Mittelwert in ihre Richtung ziehen und ihn zu einem schlechten Repräsentanten des „typischen" Werts machen.
Mittelwert vs. Median mit einem Ausreißer
import numpy as np
salaries = [40000, 42000, 45000, 48000, 50000, 300000]
print(f"Mean: {np.mean(salaries):.0f}") # Output: 87500
print(f"Median: {np.median(salaries):.0f}") # Output: 46500Hier beträgt der Mittelwert 87 500 — deutlich höher als fünf der sechs Gehälter —, weil ein extremer Wert (300 000) ihn nach oben verzerrt. Der Median (46 500) repräsentiert besser, was ein typischer Mitarbeiter verdient.
Median
Der Median ist der mittlere Wert eines sortierten Datensatzes.
- Ungerade Anzahl von Werten: das mittlere Element.
- Gerade Anzahl von Werten: der Durchschnitt der beiden mittleren Elemente.
Verwende numpy.median():
Median einer Liste mit numpy berechnen
Datensatz mit gerader Länge — Median mittelt die beiden mittleren Werte
import numpy as np
data_even = [1, 3, 5, 7]
print(np.median(data_even)) # Output: 4.0 (average of 3 and 5)Wann man den Median verwendet
Der Median ist das bevorzugte Maß der zentralen Tendenz, wenn die Daten schief sind oder Ausreißer enthalten, da er von extremen Werten nicht beeinflusst wird. Einkommen, Hauspreise und Altersverteilungen sind klassische Beispiele, bei denen der Median aussagekräftiger ist als der Mittelwert.
Modus
Der Modus ist der Wert, der in einem Datensatz am häufigsten vorkommt. Ein Datensatz kann haben:
- Keinen Modus — wenn alle Werte gleich oft auftreten.
- Einen Modus (unimodal) — der häufigste Fall.
- Mehrere Modi (multimodal) — zwei oder mehr Werte teilen sich die höchste Häufigkeit.
Verwende statistics.mode() aus der Standardbibliothek:
Modus einer Liste mit dem statistics-Modul berechnen
Umgang mit multimodalen Daten
statistics.mode() wirft einen StatisticsError in Python 3.7 und früher, wenn ein Gleichstand besteht. In Python 3.8+ wird der zuerst gefundene Modus zurückgegeben. Um sicher alle Modi abzurufen, verwende statistics.multimode():
Alle Modi bei Daten mit mehreren Spitzenwerten finden
import statistics
votes = [1, 1, 2, 2, 3]
print(statistics.multimode(votes)) # Output: [1, 2]Modus für numerische Daten
Der Modus ist am natürlichsten für kategorische oder diskrete Ganzzahldaten, funktioniert aber auch für kontinuierliche numerische Daten:
import statistics
scores = [10, 20, 20, 30, 40]
print(statistics.mode(scores)) # Output: 20Wann man den Modus verwendet
Verwende den Modus, wenn du mit kategorischen Merkmalen (Farben, Labels, Produktkategorien) arbeitest oder wenn du den beliebtesten Wert ermitteln möchtest — zum Beispiel den häufigsten Defekttyp in einem Qualitätskontroll-Datensatz.
Vergleich aller drei Maße
Das folgende Beispiel zeigt, wie Mittelwert, Median und Modus bei einem schiefen Datensatz auseinanderdriften. Einige ältere Mitarbeiter ziehen den Mittelwert nach oben, während Median und Modus nah an dem bleiben, wo die meisten Daten tatsächlich liegen:
Mittelwert, Median und Modus bei schiefen Daten vergleichen
import numpy as np
import statistics
ages = [22, 23, 24, 24, 25, 25, 25, 26, 60]
print(f"Mean: {np.mean(ages):.1f}") # Output: 28.2
print(f"Median: {np.median(ages):.1f}") # Output: 25.0
print(f"Mode: {statistics.mode(ages)}") # Output: 25Der Mittelwert (28,2) wird durch den einzelnen 60-Jährigen nach oben gezogen. Median und Modus (beide 25) repräsentieren den typischen Mitarbeiter korrekt.
Mittelwert und Median zur Imputation fehlender Werte verwenden
Ein häufiger Vorverarbeitungsschritt vor dem Training eines Modells ist das Ersetzen fehlender Werte (NaN) durch eine repräsentative Statistik. Dies wird als Imputation bezeichnet.
- Mittelwert-Imputation — ersetze
NaNdurch den Spaltendurchschnitt. Schnell, aber empfindlich gegenüber Ausreißern. - Median-Imputation — ersetze
NaNdurch den Median. Robust gegenüber Ausreißern; bevorzugt bei schiefen Merkmalen. - Modus-Imputation — ersetze
NaNdurch den häufigsten Wert. Geeignet für kategorische Spalten.
Mittelwert-Imputation mit numpy
import numpy as np
data = [10.0, 20.0, float('nan'), 40.0, 50.0]
mean_val = np.nanmean(data) # ignores NaN: (10+20+40+50)/4 = 30.0
imputed = [mean_val if np.isnan(x) else x for x in data]
print(imputed)
# Output: [10.0, 20.0, 30.0, 40.0, 50.0]Im Produktionscode würde man typischerweise sklearn.impute.SimpleImputer verwenden, der sich sauber in scikit-learn-Pipelines integriert und dieselben angepassten Statistiken sowohl auf Trainings- als auch auf Testmengen anwendet.
Kurzreferenz: Welches Maß wählen?
| Szenario | Empfohlenes Maß |
|---|---|
| Normalverteilte numerische Daten | Mittelwert |
| Schiefe numerische Daten (Einkommen, Preise) | Median |
| Daten mit extremen Ausreißern | Median |
| Kategorische Daten (Labels, Farben) | Modus |
| Imputation numerischer Spalten mit Ausreißern | Median |
| Imputation kategorischer Spalten | Modus |
| Den beliebtesten Wert finden | Modus |
Verwandte Themen
- Datenverteilung — verstehe normale, schiefe und gleichmäßige Verteilungen, bevor du ein Maß wählst.
- Standardabweichung — messe, wie stark deine Daten um den Mittelwert gestreut sind.
- Perzentil — ordne Werte relativ zum Rest des Datensatzes ein.
- Skalierung — Merkmalsskalierungstechniken, die auf diesen Statistiken aufbauen.
Fazit
Mittelwert, Median und Modus erfassen jeweils einen anderen Aspekt des Zentrums deiner Daten. Der Mittelwert ist der gebräuchlichste Standardwert, ist jedoch anfällig bei Ausreißern. Der Median ist robust und sollte die erste Wahl bei schiefen Verteilungen sein. Der Modus ist unverzichtbar für kategorische Daten und schnelle Abfragen nach dem „häufigsten Wert". Im maschinellen Lernen treten alle drei regelmäßig bei der explorativen Datenanalyse und der Imputation fehlender Werte auf — die Wahl des richtigen Maßes für jede Spalte führt zu saubereren Merkmalen und besserer Modellleistung.