Mittelwert, Median und Modus sind grundlegende Themen der Statistik. Sie lassen sich in Python leicht berechnen, mit und ohne Verwendung externer Bibliotheken.
Diese drei sind die wichtigsten Maßnahmen zur zentrale Tendenz. Die zentrale Tendenz gibt uns Aufschluss über die "normalen" oder "durchschnittlichen" Werte eines Datensatzes. Wenn Sie gerade erst anfangen mit Datenwissenschaftdann ist dies das richtige Tutorial für Sie.
Am Ende dieses Tutorials werden Sie:
- das Konzept von Mittelwert, Median und Modus zu verstehen
- In der Lage sein, eigene Funktionen für Mittelwert, Median und Modus in Python zu erstellen
- Verwenden Sie Pythons Statistik Modul zum schnellen Einstieg in die Nutzung dieser Messungen
Wenn Sie eine herunterladbare Version der folgenden Übungen wünschen, können Sie sich auf der GitHub-Repository.
Im Folgenden werden die verschiedenen Möglichkeiten zur Berechnung von Mittelwert, Median und Modus erläutert.
Berechnung des Mittelwerts in Python
Die mittlere oder arithmetisches Mittel 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 Dataset ist eine Sammlung von Daten, daher kann ein Dataset in Python eine der folgenden eingebauten Datenstrukturen sein:
- Listen, Tupel und Mengen: eine Sammlung von Gegenständen
- Streicher: eine Sammlung von Zeichen
- Wörterbuch: eine Sammlung von Schlüssel-Werte-Paaren
Anmerkung: Es gibt zwar andere Datenstrukturen in Python wie Warteschlangen oder stapeltwerden 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. Wenn wir zum Beispiel die folgende Liste von Zahlen haben:
[1, 2, 3, 4, 5, 6]
Der Mittelwert oder Durchschnitt wäre 3.5 denn die Summe der Liste ist 21 und seine Länge beträgt 6. Einundzwanzig geteilt durch sechs ist 3.5. Sie können diese Berechnung mit der nachstehenden Berechnung durchführen:
(1 + 2 + 3 + 4 + 5 + 6) / 6 = 21
In diesem Tutorial werden wir die Spieler einer Basketballmannschaft als Beispieldaten verwenden.
Erstellen einer benutzerdefinierten Mittelwertfunktion
Beginnen wir mit der Berechnung des Durchschnittsalters (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(dataset) / len(dataset)
print(mean(pythonic_machine_ages))
Diesen Code aufschlüsseln:
- Die "pythonic_machine_ages" ist eine Liste mit den Altersangaben von Basketballspielern
- Wir definieren eine Mittelwert() Funktion, die die Summe des gegebenen Datensatzes geteilt durch seine Länge zurückgibt
- Die Summe() Funktion gibt die Gesamtsumme (ironischerweise) der Werte einer Iterablen, in diesem Fall einer Liste, zurück. Versuchen Sie, den Datensatz als Argument zu übergeben, dann wird die Funktion 211
- Die len() Funktion gibt die Länge einer Iterable zurück. Wenn Sie ihr den Datensatz übergeben, erhalten Sie 8
- Wir übergeben die Basketball-Mannschaft im Alter an die Mittelwert() Funktion und drucken Sie das Ergebnis.
Wenn Sie die Ausgabe überprüfen, erhalten Sie:
26.375
# Because 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 ein gängiger Vorgang. Der Grund dafür ist Python-Statistiken Modul bietet verschiedene Funktionen zur Berechnung dieser und anderer grundlegender statistischer Themen.
Da es sich um einen Teil des Python-Standardbibliothek müssen Sie keine externen Pakete installieren mit PIP.
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))
In dem obigen Code müssen Sie lediglich die Mittelwert() Funktion aus der Statistik Modul und übergeben Sie ihm den Datensatz als Argument. Das Ergebnis ist dasselbe wie bei der benutzerdefinierten Funktion, die wir im vorherigen Abschnitt definiert haben:
26.375
Jetzt haben Sie das Konzept der mittlere fahren wir fort mit der Median Messung.
Ermitteln des Medians in Python
Die Median ist die Mittelwert eines sortierten Datensatzes. Er wird - wiederum - verwendet, um einen "typischen" Wert eines bestimmten Bevölkerung.
In der Programmierung kann man den Median als den Wert definieren, der eine Folge 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. Wir können dies tun mit Sortieralgorithmen oder mit der eingebauten Funktion sortiert(). Der zweite Schritt besteht darin, festzustellen, ob die Länge des Datensatzes ungerade oder gerade ist. Abhängig davon werden einige der folgenden Prozesse durchgeführt:
- Seltsam: 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 durchschnittliche 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, 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 den Ruhestand getreten ist?
Wir müssen den Median berechnen, indem wir die beiden mittleren Werte des Datensatzes nehmen
[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 umsetzen.
Erinnern Sie sich an die drei Schritte, die wir befolgen müssen, um den Median eines Datensatzes zu ermitteln:
- Sortieren Sie den Datensatz: Wir können dies mit dem sortiert() Funktion
- Stellen Sie fest, ob sie gerade oder ungerade ist: Wir können dies tun, indem wir die Länge des Datensatzes ermitteln und den Modulo-Operator verwenden (%)
- Geben Sie den Median für jeden Fall zurück:
- Seltsam: Rückgabe des mittleren Wertes
- Gerade: Rückgabe des Durchschnitts der beiden mittleren Werte
Das würde zu folgender Funktion führen:
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 Sie das Ergebnis unserer Datensätze:
print(median(pythonic_machines_heights))
print(median(after_retirement))
Ausgabe:
198
200.5
Beachten Sie, wie wir eine Daten die beim Start der Funktion 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.
Die Index speichert den mittleren Wert - oder den oberen Mittelwert - des Datensatzes, indem es den ganzzahlige Division Operator. Wenn wir zum Beispiel die Liste "pythonic_machine_heights" übergeben würden, hätte sie den Wert von 4.
Erinnern Sie sich, dass in Python Sequenzindizes bei Null beginnen, weil wir in der Lage sind, den mittleren Index einer Liste mit einer ganzzahligen Division zurückzugeben.
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
Ist der Datensatz hingegen gerade, geben wir die Summe der mittleren Werte geteilt durch zwei zurück. Beachten Sie, dass Daten[Index -1] gibt uns den unteren Mittelpunkt des Datensatzes, während data[index] liefert uns den oberen Mittelwert.
Verwendung von median() aus dem Python-Statistikmodul
Dieser Weg ist viel einfacher, weil wir eine bereits existierende Funktion aus dem Statistikmodul verwenden.
Wenn es etwas gibt, das bereits für mich definiert ist, würde ich es wegen des DRY-Prinzips (Don't repeat yourself) verwenden (in diesem Fall nicht den Code anderer wiederholen).
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
Berechnung des Modus in Python
Die Modus ist der häufigste Wert im Datensatz. Wir können uns das 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 Technikgeschäfts sein. Der Modus dieses Datensatzes wäre das meistverkaufte Produkt an einem bestimmten Tag.
['laptop', 'desktop', 'smartphone', 'laptop', 'laptop', 'headphones']
Wie Sie sehen können, ist der Modus des obigen Datensatzes "Laptop", da dies der häufigste Wert in der Liste war.
Das Tolle am Modus ist, dass der Datensatz nicht numerisch sein muss. Wir können zum Beispiel mit Zeichenketten 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 Häufigkeit von zwei haben. Das bedeutet, dass es sich um eine multimodal Datensatz.
Was ist, wenn wir den Modus in einem Datensatz nicht finden können, wie im folgenden Fall?
['usb', 'camera', 'smartphone', 'laptop', 'TV']
Dies wird als gleichmäßige Verteilungbedeutet dies, dass es im Datensatz keinen Modus gibt.
Nachdem Sie nun das Konzept des Modus verstanden haben, wollen wir ihn 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, ein Python-Wörterbuch.
Um die Analogie zum Basketball zu rekapitulieren, können wir mit zwei Datensätzen arbeiten: Die Punkte pro Spiel und das Sponsoring von Schuhen einiger Spieler.
Um den Modus zu finden, müssen wir zunächst ein Häufigkeitsverzeichnis mit jedem der im Datensatz vorhandenen Werte erstellen, dann die maximale Häufigkeit ermitteln und alle Elemente mit dieser Häufigkeit zurückgeben.
Übersetzen wir dies in Code:
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üfung des Ergebnisses durch Übergabe der beiden Listen als Argumente:
print(mode(points_per_game))
print(mode(sponsorship))
Ausgabe:
[10]
['nike', 'adidas', 'jordan']
Wie Sie sehen, liefert die erste Druckanweisung einen einzigen Modus, während die zweite mehrere Modi zurückgibt.
Der obige Code wird näher erläutert:
- Wir erklären eine Frequenz Wörterbuch
- Wir iterieren über den Datensatz und erstellen eine Histogramm - der statistische Begriff für eine Menge von Zählern (oder Häufigkeiten) -
- Wenn der Schlüssel im Wörterbuch gefunden wird, wird dem Wert eine Eins hinzugefügt
- Wenn es nicht gefunden wird, erstellen wir ein Schlüssel-Wert-Paar mit einem Wert von eins
- Die am_häufigsten Variable speichert - ironischerweise - den größten Wert (nicht den Schlüssel) des Frequenzwörterbuchs
- Wir geben die Modi Variable, die aus allen Schlüsseln der Datei Frequenz Wörterbuch mit der größten Häufigkeit.
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 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 Modus() Funktion gibt den ersten Modus zurück, auf den sie trifft, während multimode() gibt eine Liste mit den häufigsten Werten des Datensatzes zurück.
print(mode(points_per_game))
print(mode(sponsorship))
Ausgabe:
10
nike
Anmerkung: 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 eine StatistikFehler.
Die Verwendung des multimode() Funktion:
print(multimode(points_per_game))
print(multimode(sponsorship))
Ausgabe:
[10]
['nike', 'adidas', 'jordan']
Zusammenfassend
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 für die zentrale Tendenz, berechnet.
Obwohl Sie eigene Funktionen zur Ermittlung von Mittelwert, Median und Modus definieren können, wird empfohlen, das Statistikmodul zu verwenden, da es Teil der Standardbibliothek ist und Sie nichts installieren müssen, um es zu verwenden.
Als nächstes lesen Sie eine freundliche Einführung in Datenanalyse in Python.