Wie finde ich Mittelwert, Median und Modus in Python?

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

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

Am Ende dieses Tutorials werden Sie:

  • Verstehen Sie das Konzept von Mittelwert, Median und Modus
  • Sie können Ihre eigenen Mittelwert-, Median- und Modusfunktionen in Python erstellen
  • Verwenden Sie das Statistikmodul von Python, um die Verwendung dieser Messungen schnell zu starten

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

Lassen Sie uns auf die verschiedenen Methoden zur Berechnung von Mittelwert, Median und Modus eingehen.

Berechnung des Mittelwerts in Python

Das bedeuten oder arithmetischer Durchschnitt ist das am häufigsten verwendete Maß für die zentrale Tendenz.

Denken Sie daran, dass die zentrale Tendenz ein typischer Wert eines Datensatzes ist.

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

  • Listen, Tupel und Mengen: eine Sammlung von Objekten
  • Strings: eine Sammlung von Zeichen
  • Wörterbuch: eine Sammlung von Schlüssel-Wert-Paaren

Hinweis: Obwohl es in Python andere Datenstrukturen wie Queues oder Stacks gibt, werden wir nur die eingebauten verwenden.

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

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

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

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

In diesem Tutorial verwenden wir die Spieler eines Basketballteams als unsere Beispieldaten.

Erstellen einer benutzerdefinierten Mittelwertfunktion

Beginnen wir mit der Berechnung des Durchschnittsalters der Spieler in einer Basketballmannschaft. Der Name des Teams wird „Pythonic Machines“ sein.

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

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

print(mean(pythonic_machine_ages))

Aufschlüsselung dieses Codes:

  • Die „pythonic_machine_ages“ ist eine Liste mit dem Alter von Basketballspielern
  • Wir definieren eine mean()-Funktion, die die Summe des gegebenen Datensatzes dividiert durch seine Länge zurückgibt
    • Die Funktion sum() gibt (ironischerweise) die Gesamtsumme der Werte einer iterierbaren, in diesem Fall einer Liste, zurück. Versuchen Sie, das Dataset als Argument zu übergeben, es wird 211 zurückgegeben
    • Die Funktion len () gibt die Länge eines Iterables zurück, wenn Sie das Dataset an sie übergeben, erhalten Sie 8
  • Wir übergeben das Alter der Basketballmannschaft an die Funktion mean() und geben das Ergebnis aus.

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

26.375
# Because 211 / 8 = 26.375

Diese Ausgabe repräsentiert das Durchschnittsalter der Spieler des Basketballteams. Beachten Sie, dass die Zahl nicht im Datensatz erscheint, aber genau das Alter der meisten Spieler beschreibt.

Verwendung von mean() aus dem Python-Statistikmodul

Das Berechnen von Maßen der zentralen Tendenz ist eine übliche Operation für die meisten Entwickler. Das ist, weil Pythons Statistiken Das Modul bietet verschiedene Funktionen, um sie zu berechnen, zusammen mit anderen grundlegenden Statistikthemen.

Da es Teil der Python-Standardbibliothek Sie müssen kein externes Paket mit PIP 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 müssen Sie nur die Funktion mean() aus dem Statistikmodul importieren und ihr den Datensatz als Argument übergeben. Dies gibt das gleiche Ergebnis zurück wie die benutzerdefinierte Funktion, die wir im vorherigen Abschnitt definiert haben:

26.375

Jetzt haben Sie das Konzept des Mittelwerts kristallklar, fahren wir mit der Medianmessung fort.

Den Median in Python finden

Das Median ist der Mittelwert eines sortierten Datensatzes. Es wird – wieder – verwendet, um einen „typischen“ Wert einer Bestimmung bereitzustellen Population.

Beim Programmieren 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 zuerst den Datensatz sortieren. Wir könnten dies mit Sortieralgorithmen oder mit der eingebauten Funktion sorted() tun. Der zweite Schritt besteht darin, zu bestimmen, ob die Datensatzlänge ungerade oder gerade ist. Abhängig davon einige der folgenden Prozesse:

  • Ungerade: Der Median ist der Mittelwert des Datensatzes
  • Gerade: Der Median ist die Summe der beiden Mittelwerte geteilt durch zwei

Fahren wir mit unserem Basketballteam-Datensatz fort und berechnen wir die mittlere Körpergröße der Spieler in Zentimetern:

[181, 187, 196, 196, 198,  203, 207, 211, 215]
# Since the dataset is odd, we select the middle value
median = 198

Wie Sie sehen können, können wir, da die Datensatzlänge ungerade ist, den mittleren Wert als Median nehmen. Was würde jedoch passieren, wenn ein Spieler gerade in den Ruhestand käme?

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

[181, 187, 196, 198, 203, 207, 211, 215] 
# We select the two middle values, and divide them by 2
median = (198 + 203) / 2
median = 200.5

Erstellen einer benutzerdefinierten Medianfunktion

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

Denken Sie an die drei Schritte, die wir befolgen müssen, um den Median eines Datensatzes zu erhalten:

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

Damit ergäbe sich folgende Funktion:

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

def median(dataset):
    data = sorted(dataset)
    index = len(data) // 2
    
    # If the dataset is odd  
    if len(dataset) % 2 != 0:
        return data[index]
    
    # If the dataset is even
    return (data[index - 1] + data[index]) / 2

Drucken des Ergebnisses unserer Datensätze:

print(median(pythonic_machines_heights))
print(median(after_retirement))

Ausgabe:

198
200.5

Beachten Sie, wie wir eine Datenvariable erstellen, die am Anfang der Funktion auf die sortierte Datenbank zeigt. Obwohl die obigen Listen sortiert sind, möchten wir eine wiederverwendbare Funktion erstellen und daher den Datensatz jedes Mal sortieren, wenn die Funktion aufgerufen wird.

Der Index speichert den Mittelwert – oder den oberen Mittelwert – des Datensatzes mithilfe des ganzzahligen Divisionsoperators. Wenn wir beispielsweise die Liste „pythonic_machine_heights“ übergeben würden, hätte sie den Wert 4.

Denken Sie daran, dass in Python-Sequenzindizes bei Null beginnen, weil 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 beliebigen Wert vergleichen, der nicht Null ist. Wenn die Bedingung wahr ist, geben wir das mittlere Element beispielsweise mit der Liste „pythonic_machine_heights“ zurück:

>>> pythonic_machine_heights[4]
# 198

Wenn der Datensatz dagegen gerade ist, geben wir die Summe der Mittelwerte dividiert durch zwei zurück. Beachten Sie diese Daten[index -1] gibt uns den unteren Mittelpunkt des Datensatzes, während data[index] liefert uns den oberen Mittelpunkt.

Verwenden von median() aus dem Python-Statistikmodul

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

Wenn für mich persönlich etwas bereits definiert ist, würde ich es aufgrund 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]
after_retirement = [181, 187, 196, 198, 203, 207, 211, 215]

print(median(pythonic_machines_heights))
print(median(after_retirement))

Ausgabe:

198
200.5

Berechnen des Modus in Python

Das Modus ist der häufigste Wert im Datensatz. Wir können es 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 Verkäufe eines Technologiegeschäfts sein. Der Modus dieses Datensatzes wäre das meistverkaufte Produkt eines bestimmten Tages.

['laptop', 'desktop', 'smartphone', 'laptop', 'laptop', 'headphones']

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

Das Coole am Modus ist, dass der Datensatz nicht numerisch sein darf. Wir können zum Beispiel mit Strings arbeiten.

Analysieren wir die Verkäufe eines anderen Tages:

['mouse', 'camera', 'headphones', 'usb', 'headphones', 'mouse']

Der obige Datensatz hat zwei Modi: „Maus“ und „Kopfhörer“, da beide eine Frequenz von zwei haben. Das bedeutet, es ist ein multimodal Datensatz.

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

['usb', 'camera', 'smartphone', 'laptop', 'TV']

Dies wird als ein bezeichnet gleichmäßige Verteilungbedeutet dies im Grunde, dass es im Datensatz keinen Modus gibt.

Jetzt haben Sie das Konzept des Modus schnell verstanden, lassen Sie es uns in Python berechnen.

Erstellen einer benutzerdefinierten Modusfunktion

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

Um die Basketball-Analogie zusammenzufassen, können wir zwei Datensätze verwenden, mit denen wir arbeiten können: Die Punkte pro Spiel und das Sneaker-Sponsoring einiger Spieler.

Um den Modus zu finden, müssen wir zuerst ein Häufigkeitswörterbuch mit jedem der im Datensatz vorhandenen Werte erstellen, dann die maximale Häufigkeit abrufen 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[value] = frequency.get(value, 0) + 1

    most_frequent = max(frequency.values())

    modes = [key for key, value in frequency.items()
                      if value == most_frequent]

    return modes

Überprüfen des Ergebnisses, indem die beiden Listen als Argumente übergeben werden:

print(mode(points_per_game))
print(mode(sponsorship))

Ausgabe:

[10]
['nike', 'adidas', 'jordan']

Wie Sie sehen können, gab uns die erste print-Anweisung einen einzelnen Modus, während die zweite mehrere Modi zurückgab.

Erläuterung des obigen Codes:

  • Wir deklarieren ein Frequenzlexikon
  • Wir iterieren über den Datensatz, um a zu erstellen Histogramm — der statistische Begriff für eine Reihe von Zählern (oder Häufigkeiten) —
    • Wenn der Schlüssel dann im Wörterbuch gefunden wird, fügt er dem Wert eins hinzu
    • Wenn es 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 Häufigkeitsverzeichnisses
  • Wir geben die Modi-Variable zurück, die aus allen Schlüsseln im Häufigkeitswörterbuch mit der höchsten Häufigkeit besteht.

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

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

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

Wir können zwei Funktionen verwenden: Modus() und Multimode().

from statistics import mode, multimode

points_per_game = [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 stößt, während multimode() eine Liste mit den häufigsten Werten im Datensatz zurückgibt.

Folglich können wir sagen, dass die von uns definierte benutzerdefinierte Funktion tatsächlich eine multimode()-Funktion ist.

print(mode(points_per_game))
print(mode(sponsorship))

Ausgabe:

10
nike

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

Verwenden der Funktion multimode():

print(multimode(points_per_game))
print(multimode(sponsorship))

Ausgabe:

[10]
['nike', 'adidas', 'jordan']

Um zusammenzufassen

Herzliche Glückwünsche! Wenn Sie bis hierher gefolgt sind, haben Sie gelernt, wie man Mittelwert, Median und Modus, die wichtigsten zentralen Tendenzmessungen, berechnet.

Obwohl Sie Ihre benutzerdefinierten Funktionen definieren können, um Mittelwert, Median und Modus zu finden, 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 freundliche Einführung in die Datenanalyse in Python.