Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Ein Ergebnis ehrlich lesen

Nach dieser Lektion: Ich kann sagen, wie weit man dem Ergebnis einer Stichprobe trauen kann.

Lektion, 60 Min.5 BefehleJupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

Zehn Wintertage

Ein neuer Mitarbeiter zählt die Ausleihen der ersten zehn Tage des Jahres und sagt: „Wir verleihen etwa 197 Räder am Tag.“ Der Besitzer nickt.

Das ganze Jahr ergibt etwa 270. Die Zahl stimmte, die Aussage nicht. Ein Ergebnis ist nur so ehrlich wie die Stichprobe, die Streuung und die Gruppe dahinter.

Am Ende dieser Lektion

Notiz

Ich kann sagen, wie weit man dem Ergebnis einer Stichprobe trauen kann.

Schlüsselwörter

BegriffWas er bedeutet
Stichprobeeinige Zeilen aus einer größeren Tabelle
Repräsentativeine Stichprobe, die der ganzen Tabelle ähnelt
Streuungwie stark die Werte voneinander abweichen
Ausreißerein Wert weit von den übrigen, echt oder falsch
Mediander mittlere Wert, wenn die Werte geordnet sind
Gruppengrößewie viele Zeilen hinter einem Mittelwert oder einer Zahl stehen

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Eine Stichprobe muss dem Ganzen ähneln

Oft kann man nicht alles ansehen, also zieht man eine Stichprobe. Eine gute Stichprobe ist repräsentativ: Sie ähnelt der ganzen Tabelle in dem, was zählt.

Die ersten zehn Zeilen einer Tabelle sind selten repräsentativ. Sie stammen alle vom selben Ort oder aus derselben Zeit.

Drei Arten vergleichen, Tage zu wählen

Befehl
docker exec jupyter python3 -c "import pandas as pd; h=pd.read_csv('hires.csv'); print(\"Mittelwert des Jahres:\", round(h['hires'].mean(),1)); print(\"Mittelwert der ersten 10 Tage:\", round(h['hires'].head(10).mean(),1)); print(\"Mittelwert jedes 36. Tages:\", round(h['hires'].iloc[::36].mean(),1), len(h['hires'].iloc[::36]))"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Eine Zufallsstichprobe wackelt trotzdem

Zufällig gezogene Zeilen vermeiden ein Muster. Aber eine kleine Zufallsstichprobe gibt jedes Mal einen anderen Mittelwert, eine größere wackelt weniger.

In pandas zieht sample(10, random_state=1) zehn Tage. Der random_state ist ein Startwert: Dieselbe Zahl gibt wieder dieselben Tage.

Sechs Stichproben mit 10, dann mit 100 Tagen

Befehl
docker exec jupyter python3 -c "import pandas as pd; h=pd.read_csv('hires.csv'); print([round(h['hires'].sample(10, random_state=s).mean(),1) for s in range(1,7)]); print([round(h['hires'].sample(100, random_state=s).mean(),1) for s in range(1,7)])"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein großer Wert, und was man tut

Ein Ausreißer liegt weit von den übrigen. Er zieht den Mittelwert zu sich, bewegt den Median aber kaum.

Löschen Sie ihn nicht, nur weil er groß ist. Fragen Sie, ob er stimmen kann. Ein Fehler, etwa 5000 Ausleihen in einem Laden mit 30 Rädern, wird entfernt. Ein echter voller Tag bleibt und wird erwähnt.

Ein riesiger Tag, in Python gerechnet

Code: python
# Sieben Tage Ausleihen an einer Station, dann dieselbe Liste mit einem riesigen Tag.
tage = [204, 173, 327, 173, 240, 198, 220]
def mitte(werte):
    geordnet = sorted(werte)
    haelfte = len(geordnet) // 2
    if len(geordnet) % 2 == 1:
        return geordnet[haelfte]
    return (geordnet[haelfte - 1] + geordnet[haelfte]) / 2

print("Mittelwert:", round(sum(tage) / len(tage), 1), "Median:", mitte(tage))
tage.append(5000)
print("Mittelwert:", round(sum(tage) / len(tage), 1), "Median:", mitte(tage))
# Welche der beiden Zahlen hat sich stärker bewegt?

Eine erfundene 5000 an den ersten Tag setzen

Befehl
docker exec jupyter python3 -c "import pandas as pd; h=pd.read_csv('hires.csv'); t=h.copy(); t.loc[t.index[0],'hires']=5000; print(round(h['hires'].mean(),1), h['hires'].median(), round(t['hires'].mean(),1), t['hires'].median())"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die drei größten Tage ansehen

Befehl
docker exec jupyter python3 -c "import pandas as pd; h=pd.read_csv('hires.csv'); print(h.nlargest(3,'hires')[['date','weather','hires']].to_string(index=False))"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein häufiger Fehler

Warnung

Viele denken, der Median sei immer besser als der Mittelwert. Er ist bei einem Ausreißer stabiler, verbirgt aber dessen Größe. Geben Sie beide an, und sagen Sie, wie groß der größte Wert war und warum Sie ihn behalten haben.

Sehen Sie auf die Größe jeder Gruppe

Ein Mittelwert über 8 Tage und einer über 200 Tage sind nicht gleich starke Belege. Zeigen Sie neben jedem Mittelwert immer, wie viele Zeilen in der Gruppe sind.

Und achten Sie aufs Verb. Regentage gehen einher mit weniger Ausleihen in dieser Tabelle. Zu zeigen, dass Regen sie verursacht, braucht mehr als einen Mittelwert.

Regentage gegen Sonnentage

Befehl
docker exec jupyter python3 -c "import pandas as pd; h=pd.read_csv('hires.csv'); r=h[h['weather']=='rainy']['hires']; s=h[h['weather']=='sunny']['hires']; print(len(r),len(s),round(r.mean(),1),round(s.mean(),1)); print(round(r.std(),1), round(s.std(),1))"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Beispiel: die Zahlen lesen

Was man siehtWas man sagen kannWas man nicht sagen kann
120 Regentage, Mittelwert 227.6Regentage hatten hier weniger AusleihenDass Regen der einzige Grund ist
131 Sonnentage, Mittelwert 312.2Sonnentage waren hier vollerDass es nächstes Jahr so sein wird
Streuung 80.3 und 68.2Einzelne Tage schwanken starkDass ein Tag seinem Mittelwert gleicht

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Weiter: eine faire Regel für Ausreißer

Suchen Sie in Ihrem Notebook das 25. und das 75. Perzentil von hires mit quantile. Nennen Sie ihren Abstand den IQR.

Zählen Sie die Tage unter dem 25. Perzentil minus 1,5 IQR oder über dem 75. plus 1,5 IQR. Welche Tage sind das, und würden Sie einen löschen?

Über dieses Lab und seinen Quellcode: JupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.