W3docs

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 numpy und dem Modul statistics berechnet
  • 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ßDefinitionAm besten geeignet für
MittelwertSumme aller Werte ÷ AnzahlSymmetrisch, normalverteilte Daten
MedianMittelster Wert bei SortierungSchiefe Daten oder Daten mit Ausreißern
ModusAm häufigsten vorkommender WertKategorische 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

python— editable, runs on the server

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: 46500

Hier 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

python— editable, runs on the server

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

python— editable, runs on the server

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: 20

Wann 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: 25

Der 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 NaN durch den Spaltendurchschnitt. Schnell, aber empfindlich gegenüber Ausreißern.
  • Median-Imputation — ersetze NaN durch den Median. Robust gegenüber Ausreißern; bevorzugt bei schiefen Merkmalen.
  • Modus-Imputation — ersetze NaN durch 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?

SzenarioEmpfohlenes Maß
Normalverteilte numerische DatenMittelwert
Schiefe numerische Daten (Einkommen, Preise)Median
Daten mit extremen AusreißernMedian
Kategorische Daten (Labels, Farben)Modus
Imputation numerischer Spalten mit AusreißernMedian
Imputation kategorischer SpaltenModus
Den beliebtesten Wert findenModus

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.

Was this page helpful?