Mittelwert, Median und Modus sind grundlegende Themen der Statistik. Sie können sie ganz einfach in Python berechnen, mit oder ohne Verwendung externer Bibliotheken.

Diese drei sind die wichtigsten Maße für die zentrale Tendenz. Die zentrale Tendenz gibt uns Aufschluss über die “normalen” oder “durchschnittlichen” Werte eines Datensatzes. Wenn Sie gerade erst mit Data Science beginnen, ist dies das richtige Tutorial für Sie.

Mean, median, mode the three measurements of central tendency

Am Ende dieses Tutorials werden Sie:

  • Das Konzept von Mittelwert, Median und Modus verstehen
  • In der Lage sein, Ihre eigenen Funktionen für Mittelwert, Median und Modus in Python zu erstellen
  • Sie können das Statistikmodul von Python nutzen, um schnell mit der Verwendung dieser Messwerte zu beginnen

Wenn Sie eine herunterladbare Version der folgenden Übungen wünschen, können Sie sich das GitHub-Repository ansehen.

Kommen wir nun zu den verschiedenen Möglichkeiten zur Berechnung von Mittelwert, Median und Modus.

Berechnung des Mittelwerts in Python

Der Mittelwert oder das arithmetische Mittel ist das am häufigsten verwendete Maß für die zentrale Tendenz.

Denken Sie daran, dass die zentrale Tendenz ein typischer Wert für einen Datensatz ist.

Ein Datensatz ist eine Sammlung von Daten, daher kann ein Datensatz in Python eine der folgenden eingebauten Datenstrukturen sein:

  • Listen, Tupel und Sets: eine Sammlung von Objekten
  • Strings: eine Sammlung von Zeichen
  • Dictionary: eine Sammlung von Schlüssel-Wert-Paaren

Hinweis: Obwohl es in Python noch andere Datenstrukturen wie Warteschlangen oder Stapel gibt, werden wir nur die eingebauten Strukturen verwenden.

Wir können den Mittelwert berechnen, indem wir alle Werte eines Datensatzes addieren und das Ergebnis durch die Anzahl der Werte dividieren. Wenn wir zum Beispiel die folgende Liste von Zahlen haben:

[1, 2, 3, 4, 5, 6]

Der Mittelwert oder Durchschnitt wäre 3 ,5, da die Summe der Liste 21 und ihre Länge 6 beträgt. 21 geteilt durch sechs ist 3,5. Sie können diese Berechnung mit der folgenden Formel durchführen:

(1 2 3 4 5 6) / 6 = 21

In diesem Lernprogramm verwenden wir die Spieler einer Basketballmannschaft als Beispieldaten.

Erstellen einer benutzerdefinierten Mittelwertfunktion

Beginnen wir mit der Berechnung des durchschnittlichen Alters (Mittelwert) der Spieler einer Basketballmannschaft. Der Name der Mannschaft ist “Pythonic Machines”.

pythonic_machine_ages = [19, 22, 34, 26, 32, 30, 24, 24]

def mean(dataset):
    return sum(datensatz) / len(datensatz)

print(mean(pythonic_machine_ages))

Diesen Code aufschlüsseln:

  • Die “pythonic_machine_ages” ist eine Liste mit den Altersangaben der Basketballspieler
  • Wir definieren eine Funktion mean(), die die Summe des gegebenen Datensatzes geteilt durch seine Länge zurückgibt
    • Die Funktion sum() gibt (ironischerweise) die Gesamtsumme der Werte einer Iterablen, in diesem Fall einer Liste, zurück. Versuchen Sie, den Datensatz als Argument zu übergeben, dann gibt sie 211 zurück
    • Die Funktion len() gibt die Länge einer Iterablen zurück. Wenn Sie ihr den Datensatz übergeben, erhalten Sie 8
  • Wir übergeben die Altersangaben der Basketballmannschaften an die Funktion mean() und drucken das Ergebnis.

Wenn Sie die Ausgabe überprüfen, erhalten Sie:

26.375
# Denn 211 / 8 = 26.375

Diese Ausgabe stellt das Durchschnittsalter der Spieler der Basketballmannschaft dar. Beachten Sie, dass die Zahl nicht im Datensatz vorkommt, aber genau das Alter der meisten Spieler beschreibt.

Verwendung von mean() aus dem Python-Statistikmodul

Die Berechnung von Maßen der zentralen Tendenz ist für die meisten Entwickler eine gängige Operation. Das liegt daran, dass das Statistikmodul von Python neben anderen grundlegenden statistischen Themen auch verschiedene Funktionen zu deren Berechnung bereitstellt.

Da es Teil der Python-Standardbibliothek ist, müssen Sie mit PIP kein externes Paket installieren.

So verwenden Sie dieses Modul:

from statistics import mean

pythonic_machine_ages = [19, 22, 34, 26, 32, 30, 24, 24]

print(mean(pythonic_machine_ages))

Im obigen Code brauchen Sie nur die Funktion mean() aus dem Statistikmodul zu importieren und ihr den Datensatz als Argument zu übergeben. Das Ergebnis ist dasselbe wie bei der benutzerdefinierten Funktion, die wir im vorherigen Abschnitt definiert haben:

26.375

Nachdem Sie nun das Konzept des Mittelwerts verstanden haben, lassen Sie uns mit der Messung des Medians fortfahren.

Ermitteln des Medians in Python

Der Median ist der mittlere Wert eines sortierten Datensatzes. Er wird – wieder einmal – verwendet, um einen “typischen” Wert einer bestimmten Population zu ermitteln.

In der Programmierung können wir den Median als den Wert definieren, der eine Sequenz in zwei Teile trennt – die untere Hälfte und die obere Hälfte -.

Um den Median zu berechnen, müssen wir zunächst den Datensatz sortieren. Das können wir mit Sortieralgorithmen oder mit der eingebauten Funktion sorted() tun. Der zweite Schritt besteht darin, festzustellen, ob die Länge des Datensatzes ungerade oder gerade ist. Davon hängt einer der folgenden Prozesse ab:

  • Ungerade: Der Median ist der mittlere Wert des Datensatzes
  • Gerade: Der Median ist die Summe der beiden mittleren Werte geteilt durch zwei

Bleiben wir bei unserem Basketballteam-Datensatz und berechnen wir die Mediangröße der Spieler in Zentimetern:

[181, 187, 196, 196, 198, 203, 207, 211, 215]
# Da der Datensatz ungerade ist, wählen wir den mittleren Wert
median = 198

Wie Sie sehen können, ist die Länge des Datensatzes ungerade, so dass wir den mittleren Wert als Median nehmen können. Was würde jedoch passieren, wenn ein Spieler gerade in Rente gegangen ist?

Dann müssten wir den Median aus den beiden mittleren Werten des Datensatzes berechnen

[181, 187, 196, 198, 203, 207, 211, 215] 
# Wir wählen die beiden mittleren Werte und teilen sie durch 2
median = (198 203) / 2
median = 200.5

Erstellen einer benutzerdefinierten Median-Funktion

Lassen Sie uns das obige Konzept in eine Python-Funktion umsetzen.

Erinnern Sie sich an die drei Schritte, die wir ausführen müssen, um den Median eines Datensatzes zu ermitteln:

  • Sortieren Sie den Datensatz: Das können wir mit der Funktion sorted() tun
  • Bestimmen Sie, ob er ungerade oder gerade ist: Wir können dies tun, indem wir die Länge des Datensatzes ermitteln und den Modulo-Operator (%) verwenden
  • Ermitteln Sie den Median auf der Grundlage der einzelnen Fälle:
    • Ungerade: Gibt den mittleren Wert zurück
    • Gerade: Gibt den Durchschnitt der beiden mittleren Werte zurück

Das würde zu folgender Funktion führen:

pythonic_machines_heights = [181, 187, 196, 196, 198, 203, 207, 211, 215]
nach_Ruhestand = [181, 187, 196, 198, 203, 207, 211, 215]

def median(dataset):
    daten = sortiert(datensatz)
    index = len(daten) // 2
    
    # Wenn der Datensatz ungerade ist  
    if len(datensatz) % 2 != 0:
        return daten<x><x>[index]</x></x>
    
    # Wenn der Datensatz gerade ist
    return (daten[index - 1] daten<x><x>[index]</x></x>) / 2

Drucken des Ergebnisses unserer Datensätze:

print(median(pythonic_machines_heights))
print(median(nach_Ruhestand))

Ausgabe:

198
200.5

Beachten Sie, dass wir zu Beginn der Funktion eine Datenvariable erstellen, die auf die sortierte Datenbank verweist. Obwohl die obigen Listen sortiert sind, wollen wir eine wiederverwendbare Funktion erstellen und daher den Datensatz bei jedem Aufruf der Funktion sortieren.

Der Index speichert den mittleren Wert – oder den oberen Mittelwert – des Datensatzes, indem er den Ganzzahl-Divisionsoperator verwendet. Wenn wir zum Beispiel die Liste “pythonic_machine_heights” übergeben würden, hätte sie den Wert 4.

Erinnern Sie sich daran, dass in Python Sequenzindizes bei Null beginnen. Das liegt daran, dass wir den mittleren Index einer Liste mit einer ganzzahligen Division zurückgeben können.

Dann prüfen wir, ob die Länge des Datensatzes ungerade ist, indem wir das Ergebnis der Modulo-Operation mit einem Wert vergleichen, der nicht Null ist. Wenn die Bedingung erfüllt ist, geben wir das mittlere Element zurück, zum Beispiel mit der Liste “pythonic_machine_heights”:

>>> pythonic_machine_heights[4]
# 198

Wenn der Datensatz hingegen gerade ist, geben wir die Summe der mittleren Werte geteilt durch zwei zurück. Beachten Sie, dass data[index -1] uns den unteren Mittelwert des Datensatzes liefert, während data[index] den oberen Mittelwert liefert .

Verwendung von median() aus dem Python-Statistikmodul

Dieser Weg ist viel einfacher, da wir eine bereits vorhandene Funktion aus dem Statistikmodul verwenden.

Ich persönlich würde eine Funktion, die bereits für mich definiert ist, wegen des DRY-Prinzips – Don’t repeat yourself – verwenden (in diesem Fall, wiederholen Sie nicht den Code anderer).

Sie können den Median der vorherigen Datensätze mit dem folgenden Code berechnen:

from statistics import median

pythonic_machines_heights = [181, 187, 196, 196, 198, 203, 207, 211, 215]
nach_Ruhestand = [181, 187, 196, 198, 203, 207, 211, 215]

print(median(pythonic_machines_heights))
print(median(nach_Ruhestand))

Ausgabe:

198
200.5

Berechnung des Modus in Python

Der Modus ist der häufigste Wert in einem Datensatz. Wir können ihn uns als die “beliebte” Gruppe einer Schule vorstellen, die einen Standard für alle Schüler darstellen kann.

Ein Beispiel für einen Modus könnten die täglichen Umsätze eines Technikgeschäfts sein. Der Modus dieses Datensatzes wäre das meistverkaufte Produkt an einem bestimmten Tag.

['Laptop', 'Desktop', 'Smartphone', 'Laptop', 'Laptop', 'Kopfhörer']

Wie Sie sehen können, ist der Modus des obigen Datensatzes “Laptop”, da dies der häufigste Wert in der Liste war.

Das Tolle an Modus ist, dass der Datensatz nicht numerisch sein muss. Wir können zum Beispiel auch mit Strings arbeiten.

Lassen Sie uns die Verkäufe eines anderen Tages analysieren:

['Maus', 'Kamera', 'Kopfhörer', 'usb', 'Kopfhörer', 'Maus']

Der obige Datensatz hat zwei Modi: “Maus” und “Kopfhörer”, da beide eine Häufigkeit von zwei haben. Das bedeutet, dass es sich um einen multimodalen Datensatz handelt.

Was aber, wenn wir den Modus in einem Datensatz wie dem folgenden nicht finden können?

['usb', 'Kamera', 'Smartphone', 'Laptop', 'TV']

Dies wird als gleichmäßige Verteilung bezeichnet und bedeutet im Grunde, dass es in dem Datensatz keinen Modus gibt.

Nachdem Sie nun das Konzept des Modus verstanden haben, lassen Sie uns diesen in Python berechnen.

Erstellen einer benutzerdefinierten Modusfunktion

Wir können uns die Häufigkeit eines Wertes als Schlüssel-Wert-Paar vorstellen, mit anderen Worten, als Python-Wörterbuch.

Um die Basketball-Analogie zu rekapitulieren, können wir mit zwei Datensätzen arbeiten: Die Punkte pro Spiel und das Sponsoring von Turnschuhen einiger Spieler.

Um den Modus zu finden, müssen wir zunächst ein Häufigkeitswörterbuch mit jedem der im Datensatz vorhandenen Werte erstellen, dann die maximale Häufigkeit ermitteln und alle Elemente mit dieser Häufigkeit zurückgeben.

Lassen Sie uns dies in Code übersetzen:

points_per_game = [3, 15, 23, 42, 30, 10, 10, 12]
sponsorship = ['nike', 'adidas', 'nike', 'jordan',
               'jordan', 'rebook', 'under-armour', 'adidas']

def mode(dataset):
    frequency = {}

    for value in dataset:
        frequency[Wert] = frequency.get(Wert, 0) 1

    am_häufigsten = max(frequenz.werte())

    modes = [key for key, value in frequency.items()
                      if wert == am_häufigsten]

    return modi

Prüfen Sie das Ergebnis, indem Sie die beiden Listen als Argumente übergeben:

print(modus(punkte_pro_spiel))
print(modus(sponsoring))

Ausgabe:

<x>[10]</x>
['nike', 'adidas', 'jordan']

Wie Sie sehen können, liefert die erste print-Anweisung einen einzigen Modus, während die zweite mehrere Modi zurückgibt.

Erläutern Sie den obigen Code genauer:

  • Wir deklarieren ein Frequenz-Wörterbuch
  • Wir iterieren über den Datensatz, um ein Histogramm zu erstellen – der statistische Begriff für eine Menge von Zählern (oder Häufigkeiten) –
    • Wenn der Schlüssel im Wörterbuch gefunden wird, wird der Wert um eins erhöht
    • Wenn der Schlüssel nicht gefunden wird, erstellen wir ein Schlüssel-Wert-Paar mit dem Wert Eins
  • Die Variable most_frequent speichert – ironischerweise – den größten Wert (nicht den Schlüssel) des Frequenzwörterbuchs
  • Wir geben die Variable modes zurück, die aus allen Schlüsseln des Frequenzwörterbuchs mit der größten Häufigkeit besteht.

Beachten Sie, wie wichtig die Benennung von Variablen ist, um lesbaren Code zu schreiben.

Verwendung von mode() und multimode() aus dem Python-Statistikmodul

Auch hier bietet uns das Statistikmodul eine schnelle Möglichkeit, grundlegende Statistikoperationen durchzuführen.

Wir können zwei Funktionen verwenden: mode() und multimode().

aus Statistik importieren mode, multimode

punkte_pro_Spiel = [3, 15, 23, 42, 30, 10, 10, 12]
sponsorship = ['nike', 'adidas', 'nike', 'jordan',
               'jordan', 'rebook', 'under-armour', 'adidas']

Der obige Code importiert beide Funktionen und definiert die Datensätze, mit denen wir gearbeitet haben.

Hier kommt der kleine Unterschied: Die Funktion mode() gibt den ersten Modus zurück, auf den sie trifft, während multimode() eine Liste mit den häufigsten Werten im Datensatz zurückgibt.

Folglich können wir sagen, dass die benutzerdefinierte Funktion, die wir definiert haben, eigentlich eine multimode() -Funktion ist.
print(mode(punkte_pro_spiel))
print(mode(sponsorship))

Ausgabe:

10
nike

Hinweis: In Python 3.8 oder höher gibt die Funktion mode() den ersten Modus zurück, den sie gefunden hat. Wenn Sie eine ältere Version haben, erhalten Sie einen StatisticsError.

Verwenden Sie die Funktion multimode():

print(multimode(Punkte_pro_Spiel))
print(multimode(sponsorship))

Ausgabe:

<x>[10]</x>
['nike', 'adidas', 'jordan']

Zusammengefasst

Herzlichen Glückwunsch! Wenn Sie bis hierher gefolgt sind, haben Sie gelernt, wie man den Mittelwert, den Median und den Modus, die wichtigsten Maße der zentralen Tendenz, berechnet.

Sie können zwar eigene Funktionen definieren, um Mittelwert, Median und Modus zu ermitteln, aber es wird empfohlen, das Statistikmodul zu verwenden, da es Teil der Standardbibliothek ist und Sie nichts installieren müssen, um es zu verwenden.

Lesen Sie als nächstes eine Einführung in die Datenanalyse mit Python.