Geschichtete probenahme bei pandas (mit beispielen)
Forscher entnehmen häufig Stichproben aus einer Population und nutzen die Daten aus der Stichprobe, um Rückschlüsse auf die Population als Ganzes zu ziehen.
Eine häufig verwendete Stichprobenmethode ist die geschichtete Zufallsstichprobe , bei der eine Population in Gruppen aufgeteilt wird und eine bestimmte Anzahl von Mitgliedern aus jeder Gruppe zufällig für die Aufnahme in die Stichprobe ausgewählt wird.
In diesem Tutorial werden zwei Methoden zur Durchführung geschichteter Zufallsstichproben in Python erläutert.
Beispiel 1: Geschichtete Probenahme mithilfe von Zählungen
Angenommen, wir haben den folgenden Pandas-DataFrame, der Daten zu 8 Basketballspielern aus 2 verschiedenen Teams enthält:
import pandas as pd #createDataFrame df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], 'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'], 'assists': [5, 7, 7, 8, 5, 7, 6, 9], 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]}) #view DataFrame df team position assists rebounds 0 A G 5 11 1 A G 7 8 2 A F 7 10 3 A G 8 6 4 B F 5 6 5 B F 7 9 6 B C 6 6 7 B C 9 10
Der folgende Code zeigt, wie eine geschichtete Zufallsstichprobe durchgeführt wird, indem zwei Spieler aus jedem Team zufällig ausgewählt werden, um sie in die Stichprobe aufzunehmen:
df. groupby ('team', group_keys= False ). apply ( lambda x: x.sample (2)) team position assists rebounds 0 A G 5 11 3 A G 8 6 6 B C 6 6 5 B F 7 9
Beachten Sie, dass zwei Spieler aus jedem Team in der geschichteten Stichprobe enthalten sind.
Beispiel 2: Geschichtete Probenahme unter Verwendung von Proportionen
Nehmen wir erneut an, dass wir den folgenden Pandas-DataFrame haben, der Daten zu 8 Basketballspielern aus 2 verschiedenen Teams enthält:
import pandas as pd #createDataFrame df = pd.DataFrame({'team': ['A', 'A', 'B', 'B', 'B', 'B', 'B', 'B'], 'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'], 'assists': [5, 7, 7, 8, 5, 7, 6, 9], 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]}) #view DataFrame df team position assists rebounds 0 A G 5 11 1 A G 7 8 2 A F 7 10 3 A G 8 6 4 B F 5 6 5 B F 7 9 6 B C 6 6 7 B C 9 10
Beachten Sie, dass 6 der 8 Spieler (75 %) im DataFrame zu Team A und 2 der 8 Spieler (25 %) zu Team B gehören.
Der folgende Code zeigt, wie eine geschichtete Zufallsstichprobe durchgeführt wird, sodass der Anteil der Spieler in der Stichprobe aus jedem Team dem Anteil der Spieler aus jedem Team im größeren DataFrame entspricht:
import numpy as np #define total sample size desired N = 4 #perform stratified random sampling df. groupby ('team', group_keys= False ). apply ( lambda x: x. sample (int(np. rint (N* len (x)/ len (df))))). sample (frac=1). reset_index (drop= True ) team position assists rebounds 0 B F 7 9 1 B G 8 6 2 B C 6 6 3 A G 7 8
Beachten Sie, dass der Anteil der Spieler von Team A in der geschichteten Stichprobe (25 %) dem Anteil der Spieler von Team A im größeren DataFrame entspricht.
Ebenso entspricht der Anteil der Spieler von Team B in der geschichteten Stichprobe (75 %) dem Anteil der Spieler von Team B im größeren DataFrame.
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie Sie mithilfe von Pandas andere Beispieltypen auswählen:
So führen Sie Cluster-Sampling in Pandas durch
Wie man eine systematische Probenahme bei Pandas durchführt