Die Daten beschreiben
Kurz gesagt: Die deskriptive Statistik sagt, wo die Mitte der Daten liegt (Mittelwert, Median, häufigster Wert) und wie weit sie streuen (Standardabweichung, Perzentile, Quartilsabstand).
Problem
„Der Durchschnittskunde“
Der Chef will eine Kundenkarte. „Der Durchschnittskunde bestellt 8-mal im Jahr. Schenken wir etwas zur achten Bestellung: So bekommt jeder gewöhnliche Kunde es.“
Das klingt vernünftig. Aber wie viele Kunden kommen überhaupt auf eine achte Bestellung? Und wie viele Bestellungen gibt ein gewöhnlicher Kunde auf? Der Mittelwert beantwortet nur eine dieser Fragen, und nicht immer die, die du denkst.
Die Idee
Mittelwert, Median, häufigster Wert
Eine Zahl, die sagt „die Bestellungen liegen ungefähr hier“, gibt es in drei Arten:
- der Mittelwert: die Summe geteilt durch die Anzahl;
- der Median: die Zahl in der Mitte, wenn du sortierst; die Hälfte liegt darunter, die Hälfte darüber;
- der Modus: der Wert, der am häufigsten vorkommt.
Der Bestellwert des Jahres, ohne die stornierten Bestellungen:
Der Mittelwert ist 10,63 €, der Median 7,70 €. Die häufigste Bestellung ist 2,40 €. Drei Zahlen für dieselben Daten, und 64,4 % der Bestellungen liegen unter dem Mittelwert.
Der Grund ist der Schwanz: Wenige große Bestellungen (bis 78,70 €) ziehen den Mittelwert nach oben. Der Median spürt sie nicht, weil er nur schaut, was in der Mitte liegt. Den Schwanz hast du im Histogramm der Bestellungen gesehen.
mode() gibt eine Liste zurück, weil sich mehrere Werte die höchste Anzahl teilen können. Deshalb ist values auf den Cent gerundet: Sonst zählen 2.4 und 2.4000000000000004 als verschiedene Werte.
Die Idee
Streuung: Spannweite und Standardabweichung
Der Mittelwert sagt nicht, wie verschieden die Bestellungen voneinander sind. Zwei Shops mit einem Mittelwert von 10 € können sehr verschieden sein: In dem einen ist jede Bestellung etwa 10 €, im anderen gibt es Bestellungen von 1 € und von 50 €. Das nennt man Streuung.
Die Spannweite ist das Größte minus das Kleinste: 77,90 €. Sie hängt nur von den beiden äußersten Bestellungen ab, und eine seltsame Bestellung verändert sie.
Die Standardabweichung (std) ist der typische Abstand einer Bestellung vom Mittelwert. Hier ist sie 9,43 €: Eine Bestellung von 10,63 € ± etwa 9 € ist nichts Ungewöhnliches.
Genauer, für Neugierige
std ist die Wurzel aus dem mittleren quadrierten Abstand vom Mittelwert. Das Quadrieren gewichtet große Abstände viel stärker, deshalb wächst std bei einem langen Schwanz mit.
pandas teilt durch n − 1, NumPy (np.std) durch n. Bei 10.459 Bestellungen steckt der Unterschied in der vierten Nachkommastelle. Bei 5 Zahlen sieht man ihn: np.std(x, ddof=1) liefert dasselbe wie pandas.
Die Idee
Perzentile und der Quartilsabstand
Ein Perzentil sagt, unter welchem Wert ein bestimmter Anteil der Daten liegt. Das 90. Perzentil ist der Wert, unter dem 90 % der Bestellungen liegen. quantile liefert sie mit einem Anteil von 0 bis 1:
10 % der Bestellungen liegen bei bis zu 2,40 € und 90 % bei bis zu 22,92 €. Die drei gestrichelten Linien sind die Quartile: das 25. Perzentil (q1, 4,20 €), der Median (7,70 €) und das 75. (q3, 14,00 €). Sie teilen die Bestellungen in vier gleich große Teile.
Die mittleren 50 % der Bestellungen liegen zwischen q1 und q3. Ihre Breite ist der Quartilsabstand (IQR, englisch interquartile range): 14,00 − 4,20 = 9,80 €. Anders als die Spannweite bewegt sich der IQR nicht wegen einer einzigen riesigen Bestellung.
Schau dir auch das Bild an: Vom Median bis q3 sind es 6,30 €, aber von q1 bis zum Median nur 3,50 €. Die rechte Hälfte ist gedehnt: Das ist der Schwanz, in Zahlen erzählt.
Probier es aus
Die Grenze für kostenlose Lieferung
Der Shop liefert die größten 10 % der Bestellungen kostenlos. Ab welchem Betrag? Speichere die Grenze in threshold.
Lösung
import pandas as pd
orders = pd.read_csv('year_orders.csv')
items = pd.read_csv('year_items.csv')
items['revenue'] = items['quantity'] * items['unit_price']
per_order = items.groupby('order_id')['revenue'].sum()
orders['value'] = orders['id'].map(per_order)
# Stornierte Bestellungen sind kein Umsatz: weglassen.
values = orders[orders['status'] != 'cancelled']['value'].round(2)
threshold = values.quantile(0.9)
print(threshold)
print((values >= threshold).mean())values.quantile(0.9) ist 22,92 €: Genau 10 % der Bestellungen liegen bei diesem Betrag oder darüber. Der Mittelwert plus eine std ergibt 20,06 €, und 13,3 % der Bestellungen liegen darüber. Bei einem langen Schwanz sagt std nicht, welcher Anteil über einer Linie liegt. Perzentile tun das.
Die Idee
describe(), bis zum Ende gelesen
describe() von deinem ersten Blick auf eine Tabelle liefert alles bisher Besprochene auf einmal:
Jetzt ergibt jede Zeile Sinn:
count: 10.459 Bestellungen;meanundstd: im Mittel 10,63 €, typischerweise etwa 9,43 € davon entfernt;minundmax: von 0,80 € bis 78,70 €;25%,50%,75%: die Quartile.50%ist der Median.
Ein schneller Blick auf einen Schwanz: mean liegt deutlich über 50% (10,63 € gegenüber 7,70 €), und von 75% bis max sind es 64,70 €, von min bis 25% dagegen 3,40 €. Der Schwanz liegt rechts.
Die Idee
„Den Durchschnittskunden“ gibt es nicht
Zurück zur Kundenkarte. Wie viele Bestellungen gibt jeder Kunde im Jahr auf? Es zählen alle Bestellungen, auch die stornierten: Der Kunde hat ja bestellt.
Es gibt 1.390 Kunden. Im Mittel geben sie 8 Bestellungen auf, aber der Median ist 4 und der häufigste Wert 2. 224 Kunden haben nur einmal bestellt, und der treueste hat 121 Bestellungen.
Das Histogramm zeigt, warum: Die meisten Kunden stehen links, bei 1–5 Bestellungen, und ein langer Schwanz von Stammkunden reicht bis 121. Der Mittelwert (die durchgezogene Linie) liegt zwischen den beiden Welten und beschreibt niemanden gut. Der Kunde „mit durchschnittlich 8 Bestellungen“ ist eine Zahl aus einer Rechnung, keine Person, der du oft begegnest.
Wenn die Daten einen langen Schwanz haben, nennt der Median den gewöhnlichen Fall, und der Mittelwert ist für etwas anderes da: zum Beispiel dafür, wie viele Bestellungen 100 neue Kunden zusammen bringen.
Die Idee
Ungewöhnliche Werte: die IQR-Regel
Welche Bestellungen sind ungewöhnlich groß? Eine gängige Regel: Alles, was mehr als 1,5 × IQR unter q1 oder über q3 liegt, ist ungewöhnlich.
Der obere Zaun ist 14,00 + 1,5 × 9,80 = 28,70 €, und 609 Bestellungen liegen darüber. Der untere Zaun ist negativ, also liegt nichts darunter.
Die Regel zeigt nur hin. Die Entscheidung triffst du: Diese 609 Bestellungen sind echt und bringen etwa 21 % des Umsatzes. Einen Wert entfernst du nur, wenn er ein nachgewiesener Fehler ist, etwa ein Preis ohne Komma oder ein Duplikat, wie du in der Lektion über das Bereinigen gesehen hast.
Probier es aus
Die Stammkunden
Welche Kunden bestellen ungewöhnlich oft? Berechne den oberen Zaun der IQR-Regel für die Bestellungen pro Kunde (in limit) und speichere die Kunden darüber in regulars.
Lösung
import pandas as pd
orders = pd.read_csv('year_orders.csv')
per_customer = orders.groupby('customer_id').size()
q1 = per_customer.quantile(0.25)
q3 = per_customer.quantile(0.75)
limit = q3 + 1.5 * (q3 - q1)
regulars = per_customer[per_customer > limit]
print(limit, len(regulars))q1 sind 2 Bestellungen, q3 ist 7, der IQR ist 5, und der Zaun ist 7 + 1,5 × 5 = 14,5. 171 Kunden liegen darüber, und sie geben 54,6 % aller Bestellungen auf. Ist der Zaun q3 selbst (7), bekommst du 340 Kunden: Das ist ein Viertel aller, nicht die ungewöhnlichen. Startest du beim Mittelwert, geht es in der Regel nicht mehr um Quartile.
Übung
Ein Geschenk zur achten Bestellung?
Wie viele Bestellungen gibt der gewöhnliche Kunde auf? Speichere es in typical. Und welcher Anteil der Kunden kommt auf eine achte Bestellung? Speichere den Anteil (von 0 bis 1) in reach.
Lösung
import pandas as pd
orders = pd.read_csv('year_orders.csv')
per_customer = orders.groupby('customer_id').size()
typical = per_customer.median()
reach = (per_customer >= 8).mean()
print(typical, round(reach * 100, 1))Der Median ist 4 Bestellungen: Die Hälfte der Kunden gibt 4 oder weniger auf. Der Mittelwert (8) ist nicht „der gewöhnliche Kunde“. 340 der 1.390 Kunden kommen auf eine achte Bestellung, das sind 24,5 %. Ein Geschenk zur achten Bestellung erreichte ein Viertel der Kunden, die treuesten, nicht „jeden gewöhnlichen“. Mit > 8 bekommst du 21,6 %: Du lässt die mit genau 8 Bestellungen aus.
Test
Teste dich
Verwandte Lektionen
Abschnitt „Verwandte Lektionen“- Baut auf: Neue Spalten · Gruppen: groupby · Das erste Diagramm · Verteilungen
- Geht weiter in: Stichprobe und Grundgesamtheit · Konfidenzintervalle · Eine Hypothese testen · Datenleck
- Aufgaben zum Thema: Statistik für Entscheidungen