Technologieführer

Python-Statistics-Modul: einfacher Einstieg und Vergleich mit NumPy/SciPy

6 min read Python Statistik Aktualisiert 20 Oct 2025
Python statistics-Modul: Überblick & Vergleich
Python statistics-Modul: Überblick & Vergleich

Rechner mit Zahlen und Python-Logos rundherum.

Sprungmarken

  • Was ist das Python-Statistics-Modul?
  • Deskriptive Statistik
  • Regression und Korrelation
  • Normalverteilung und Wahrscheinlichkeiten
  • Wann NumPy/SciPy/pandas verwenden?
  • Entscheidungshilfe, Vergleiche und Checklisten
  • FAQ

Was ist das Python-Statistics-Modul?

Das statistics-Modul ist eine in Python integrierte Bibliothek für grundlegende statistische Berechnungen. Es ist in jeder Standard-Python-Installation verfügbar und eignet sich für schnelle, prägnante Analysen ohne zusätzliche Abhängigkeiten. Importieren Sie es in Skripten oder interaktiven Sessions wie folgt:

import statistics

In interaktiven Umgebungen (IPython, Jupyter) können Sie einzelne Funktionen direkt importieren, um Tipparbeit zu sparen:

from statistics import mean, median, stdev

Kurz definiert: Deskriptive Statistik beschreibt Daten (Lage, Streuung), während inferenzielle Statistik aus Stichproben Rückschlüsse auf Populationen zieht.

Wichtig: Funktionen direkt in das globale Namespace zu importieren ist praktisch für interaktive Arbeit, kann aber in Produktionsskripten Namenskonflikte verursachen.

Deskriptive Statistik

Deskriptive Statistik in einem interaktiven Python-Interpreter mit dem statistics-Modul.

Das statistics-Modul bietet gebräuchliche Lage- und Streuungsmaße:

  • arithmetic mean (mean)
  • floating mean (fmean) mit optionalen Gewichten
  • geometric mean (geometric_mean)
  • harmonic mean (harmonic_mean)
  • median (median)
  • mode (mode)
  • sample standard deviation (stdev)
  • population standard deviation (pstdev)
  • variance / pvariance
  • quantiles (Quartile und andere Quantile)

Beispiele:

# Beispiel-Daten
a = [4, 4, 3, 6]

# Arithmetisches Mittel
print(mean(a))  # 4.25

# fmean: wandelt intern in float, unterstützt Gewichte
weights = [1, 2, 3, 4]
print(statistics.fmean(a, weights=weights))

# Geometrisches Mittel
print(statistics.geometric_mean(a))

# Harmonisches Mittel (nur für positive Werte sinnvoll)
print(statistics.harmonic_mean(a))

# Median und Modalwert
print(statistics.median(a))
print(statistics.mode(a))

# Streuung
print(statistics.stdev(a))   # Stichproben-Standardabweichung
print(statistics.pstdev(a))  # Populations-Standardabweichung
print(statistics.variance(a))

# Quantile (Standardmäßig Quartile)
print(statistics.quantiles(a))

# Min / Max
print(min(a), max(a))

Hinweis zur Reihenfolge: arithmetic mean ≥ geometric mean ≥ harmonic mean für eine gegebene positive Zahlenreihe (bei ungleichen Werten gilt die Ungleichung streng).

Wann Statistik-Funktionen verwenden:

  • Ad-hoc-Analysen in interaktiven Sessions
  • Bildungszwecke und Lehrmaterial
  • Kleine Datensätze (ein paar Dutzend bis einige Tausend Werte)

Gegenbeispiele / wenn es fehlschlägt:

  • Sehr große Datensätze (speicherintensiv, langsame Python-Schleifen)
  • Numerisch anspruchsvolle Operationen (z. B. hohe Präzision oder propagierte Fehler)
  • Vektor- oder Matrixoperationen (besser mit NumPy)

Regression und Korrelation

Für einfache lineare Regression und Korrelationsberechnungen bietet statistics nützliche, leichtgewichtige Funktionen.

Lineare Regression (einfach, zwei Variablen):

x = [1, 2, 3, 4, 5]
y = [5, 7, 9, 11, 13]

slope, intercept = statistics.linear_regression(x, y)
print(slope, intercept)  # slope=2, intercept=3

Die zurückgegebenen Werte entsprechen der Geradengleichung y = m*x + b. Das Verfahren verwendet Ordinary Least Squares (OLS) für genau zwei Variablen.

Korrelation:

r = statistics.correlation(x, y)
print(r)  # 1.0 (perfekte positive Korrelation)

Einschränkungen:

  • Nur einfache lineare Regression (eine erklärende Variable).
  • Keine Konfidenzintervalle, keine p-Werte, kein robustes Regressionsmodell.
  • Kein Plotten oder Visualisieren — externe Bibliotheken wie matplotlib, seaborn oder plotly sind nötig.

Alternative Ansätze:

  • statsmodels: ausführliche statistische Modelle, p-Werte, Konfidenzintervalle, OLS-Matrixoperationen.
  • scikit-learn: für Vorhersage-Workflows, Cross-Validation, Pipeline-Integration.
  • Pingouin: moderne, leichtgewichtige statistische Tests mit guten Defaults.

Normalverteilung und Wahrscheinlichkeiten

Das Modul stellt Klassen und Funktionen bereit, um Normalverteilungen zu modellieren und Wahrscheinlichkeiten zu berechnen.

Beispiel mit fiktiven CDC-Daten (als Demonstration): angenommen, der Mittelwert der Körpergröße erwachsener Männer über 20 sei 175.1 cm. Wenn Sie die Standardabweichung aus Standardfehlern und Sample-Größe schätzen:

import math
# Beispielrechnung zur Illustration
math.sqrt(2690) * 0.3

Angenommen, die Standardabweichung betrüge ~15.56, dann können Sie eine Normalverteilung wie folgt aufbauen:

from statistics import NormalDist
men_height = NormalDist(mu=175.1, sigma=15.56)

# Wahrscheinlichkeit für 160–180 cm
prob = men_height.cdf(180) - men_height.cdf(160)
print(prob)  # ungefähr 0.45 -> ca. 45%

Erläuterung: Die kumulative Verteilungsfunktion (CDF) gibt die Wahrscheinlichkeit an, dass eine Zufallsvariable ≤ x ist. Für symmetrische Intervalle können Sie die Differenz zweier CDF-Werte verwenden.

Wichtig: Wenn Sie mit empirischen Daten arbeiten, prüfen Sie Annahmen (Normalität, Ausreißer, Homoskedastizität) bevor Sie Normalverteilungsannahmen blind anwenden.

Wann NumPy, SciPy oder pandas verwenden?

Kurz: statistics ist toll für Lernzwecke und schnelle Einzelrechnungen. Für produktive Datenanalyse und große Datenmengen sind die anderen Bibliotheken meist besser.

Vergleich (kompakt):

  • statistics: Standardbibliothek, leicht, geeignet für kleine Datensätze und schnelle Berechnungen.
  • NumPy: effiziente Vektor- und Matrix-Operationen, Basis für viele wissenschaftliche Pakete.
  • SciPy: fortgeschrittene Statistik, Optimierung, numerische Integration.
  • pandas: tabellarische Daten, Gruppierung, Zeitreihen, einfache Statistik auf DataFrames.

Wann was wählen — Entscheidungsheuristik:

  • Nur ein paar Zahlen, schnell per Hand: statistics.
  • Numerische Arrays, lineare Algebra, Vektorisierung: NumPy.
  • Statistische Tests, Optimierung, spezialisiertes Statistik-Tooling: SciPy / statsmodels.
  • Tabellen, ETL, Feature-Engineering: pandas (+ NumPy).
  • Vollständige Analyse mit Visualisierung: pandas + seaborn/matplotlib + statsmodels.

Mental Model (Faustregel): statistics ≈ wissenschaftlicher Taschenrechner; NumPy/SciPy/pandas ≈ Statistik-Toolbox für Forschungs- und Produktionsdaten.

Praktische Entscheidungs-Flowchart

flowchart TD
  A[Haben Sie nur ein paar Zahlen?] -->|Ja| B[statistics verwenden]
  A -->|Nein| C[Arbeiten Sie mit Arrays/Tabellen?]
  C -->|Arrays| D[NumPy]
  C -->|Tabellen/CSV/SQL| E[pandas]
  D --> F{Benötigen Sie fortgeschrittene Stats?}
  E --> F
  F -->|Ja| G[SciPy / statsmodels / scikit-learn]
  F -->|Nein| H[NumPy/pandas reichen]

Cheatsheet und Snippets

Schnellreferenz für das statistics-Modul:

  • Lage: mean(), median(), mode(), fmean(), geometric_mean(), harmonic_mean()
  • Streuung: stdev(), pstdev(), variance(), pvariance()
  • Quantile: quantiles(data, n=4)
  • Regression/Korrelation: linear_regression(x, y), correlation(x, y)
  • Verteilungen: NormalDist(mu, sigma)

Praktisches Snippet — gewichtetes Mittel mit Fehlerbehandlung:

from statistics import fmean

def weighted_mean(values, weights=None):
    if weights is None:
        return fmean(values)
    if len(values) != len(weights):
        raise ValueError("Länge von Werten und Gewichten muss übereinstimmen")
    return fmean(values, weights=weights)

Testfälle / Akzeptanzkriterien (minimal):

  • Mittelwert einer leeren Liste sollte eine sinnvolle Ausnahme auslösen.
  • fmean mit Gewichten erwartet gleiche Längen.
  • harmonic_mean akzeptiert nur positive Werte.

Rolle-basierte Checkliste

Developer / Skriptersteller:

  • Verwenden Sie import-statements mit Vorsicht (namespace collisions).
  • Schreiben Sie Unit-Tests für Edge-Cases (z. B. leere Daten, None-Werte).
  • Bei großen Daten: weichen Sie auf NumPy/pandas aus.

Datenwissenschaftler / Analyst:

  • Validieren Sie Annahmen vor statistischen Tests (Normalität, Ausreißer).
  • Nutzen Sie statsmodels/sciPy für inferenzielle Statistik.
  • Dokumentieren Sie, ob Sie Stichproben- oder Populationsmaße verwenden.

Lehrende / Lernende:

  • Verwenden Sie statistics für Demonstrationen von Konzepten.
  • Visualisieren Sie mit matplotlib/seaborn, um Intuition zu stärken.

Vergleichsmatrix (Kurz)

AufgabestatisticsNumPySciPy / statsmodelspandas
Einfache Mittelwerte, Median, Modus✔️✔️✔️✔️
Gewichtete Mittel & Spezialmittel✔️ (fmean, geom, harm)✔️✔️✔️
Vektor-/Matrixoperationen, Performance✖️✔️✔️✔️
Fortgeschrittene Tests, p-Werte, Modelle✖️✖️✔️✖️
Tabellarische Datenverarbeitung✖️✔️✔️✔️

Mögliche Stolperfallen und Best Practices

  • statistics arbeitet auf Python-Listen/Iterables; bei großen Daten vermeiden Sie das Laden ganzer Listen ins Memory.
  • Harmonic Mean nur für strikt positive Zahlen.
  • Mode gibt bei Mehrfach-Modi eine Ausnahme (abhängig von Version) — prüfen Sie die Dokumentation Ihrer Python-Version.
  • Bei Finanzdaten oder sehr kleinen Standardfehlern prüfen Sie numerische Stabilität.

Sicherheits- und Datenschutzhinweis: Das Modul verarbeitet nur lokale Daten; achten Sie bei personenbezogenen Daten auf DSGVO-Konformität und vermeiden Sie das unnötige Speichern sensibler Daten in Klartext.

Kurze Methodologie: Wie Sie vorgehen sollten

  1. Scope definieren: Anzahl Datensätze, Erwartung (deskriptiv vs. inferenziell).
  2. Rohdaten prüfen: fehlende Werte, Ausreißer, Datentypen.
  3. Tool wählen: statistics für schnelle Checks, NumPy/pandas/SciPy für professionelle Analyse.
  4. Ergebnisse validieren: Cross-Checks, Visualisierung, Robustheitstests.
  5. Dokumentieren und reproduzierbar machen: kleine Jupyter-Notebooks, Tests, Versionen festhalten.

Zusammenfassung

Das statistics-Modul ist ein praktisches Werkzeug für schnelle, einfache statistische Berechnungen, ideal für Lehrzwecke und kleine Analysen in interaktiven Umgebungen. Für größere Datensätze, anspruchsvolle Modelle oder Produktionspipelines sollten Sie jedoch auf NumPy, SciPy, pandas oder spezialisierte Bibliotheken zurückgreifen.

Wichtig: Wählen Sie das richtige Werkzeug für die Problemgröße — ein einfacher Entscheidungs-Flowchart und eine kurze Checkliste finden Sie oben.

FAQ

Brauche ich statistics, wenn ich schon NumPy habe?

Für schnelle Einzelschritte in interaktiven Sessions ist statistics bequemer, weil es Teil der Standardbibliothek ist. NumPy ist leistungsfähiger für große Arrays und numerische Performance.

Kann statistics mit pandas DataFrames arbeiten?

Direkt arbeitet statistics mit Iterables (Listen, Tupeln). Sie können allerdings Spalten eines DataFrame als Liste/NumPy-Array extrahieren und dann statistics-Funktionen anwenden.

Liefert linear_regression Konfidenzintervalle oder p-Werte?

Nein. linear_regression liefert nur Steigung und Achsenabschnitt. Verwenden Sie statsmodels oder SciPy für inferenzielle Statistiken und statistische Tests.

Autor
Redaktion

Ähnliche Materialien

Destiny 2 Fehlercode Centipede: Vollständige Lösung
Gaming

Destiny 2 Fehlercode Centipede: Vollständige Lösung

Bilder aus Google Docs herunterladen – 6 Methoden
Anleitungen

Bilder aus Google Docs herunterladen – 6 Methoden

Snapchat Memories ohne Gebühren sichern
Apps

Snapchat Memories ohne Gebühren sichern

Port Knocking auf Ubuntu: Installation & Sicherheit
Sicherheit

Port Knocking auf Ubuntu: Installation & Sicherheit

iPhone‑Tastatur: Haptisches Feedback aktivieren
Anleitung

iPhone‑Tastatur: Haptisches Feedback aktivieren

VAN9001: TPM 2.0 & Secure Boot aktivieren
Fehlerbehebung

VAN9001: TPM 2.0 & Secure Boot aktivieren