Zum Inhalt
wannacode

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:

PythonDaten: die Tabellen des Shops

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.

1. Fünf Bestellungen: 4 €, 6 €, 7 €, 9 € und 12 €. Eine sechste kommt dazu, für 500 € (ein Büro bestellt für das ganze Jahr). Was passiert?

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.

PythonDaten: die Tabellen des Shops

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:

PythonDaten: die Tabellen des Shops

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.

PythonDaten: die Tabellen des Shops

Die Idee

describe(), bis zum Ende gelesen

describe() von deinem ersten Blick auf eine Tabelle liefert alles bisher Besprochene auf einmal:

PythonDaten: die Tabellen des Shops

Jetzt ergibt jede Zeile Sinn:

  • count: 10.459 Bestellungen;
  • mean und std: im Mittel 10,63 €, typischerweise etwa 9,43 € davon entfernt;
  • min und max: 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.

PythonDaten: die Tabellen des Shops

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.

PythonDaten: die Tabellen des Shops

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.

PythonDaten: die Tabellen des Shops

Ü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.

PythonDaten: die Tabellen des Shops

Test

Teste dich

1. Die mittlere Bestellung ist 10,63 € und der Median 7,70 €. Was sagt das über die Bestellungen?
2. Was ist der Quartilsabstand (IQR)?
3. describe() liefert für den Bestellwert 25% 4.20. Was bedeutet das?
4. Die IQR-Regel findet 609 Bestellungen über 28,70 €. Was machst du mit ihnen?

Erstellt von Ivo Gergov im Rahmen der Kampagne von Evo Tech für zugängliche Programmierausbildung ·