Gestratificeerde bemonstering bij panda's (met voorbeelden)
Onderzoekers nemen vaak steekproeven uit een populatie en gebruiken de gegevens uit de steekproef om conclusies te trekken over de populatie als geheel.
Een veelgebruikte steekproefmethode is de gestratificeerde willekeurige steekproef , waarbij een populatie in groepen wordt verdeeld en een bepaald aantal leden uit elke groep willekeurig wordt geselecteerd om in de steekproef te worden opgenomen.
In deze tutorial worden twee methoden uitgelegd voor het uitvoeren van gestratificeerde willekeurige steekproeven in Python.
Voorbeeld 1: Gestratificeerde bemonstering met behulp van tellingen
Stel dat we het volgende panda’s DataFrame hebben dat gegevens bevat over 8 basketbalspelers uit 2 verschillende teams:
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
De volgende code laat zien hoe je gestratificeerde willekeurige steekproeven uitvoert door willekeurig twee spelers uit elk team te selecteren om in de steekproef op te nemen:
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
Houd er rekening mee dat twee spelers van elk team zijn opgenomen in de gestratificeerde steekproef.
Voorbeeld 2: Gestratificeerde bemonstering met behulp van verhoudingen
Laten we opnieuw aannemen dat we het volgende panda’s DataFrame hebben dat gegevens bevat over 8 basketbalspelers uit 2 verschillende teams:
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
Houd er rekening mee dat 6 van de 8 spelers (75%) in het DataFrame deel uitmaken van team A en dat 2 van de 8 spelers (25%) deel uitmaken van team B.
De volgende code laat zien hoe u gestratificeerde willekeurige steekproeven kunt uitvoeren, zodat het aandeel spelers in de steekproef van elk team overeenkomt met het aandeel spelers van elk team in het grotere DataFrame:
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
Merk op dat het aandeel Team A-spelers in de gestratificeerde steekproef (25%) overeenkomt met het aandeel Team A-spelers in het grotere DataFrame.
Op dezelfde manier komt het aandeel team B-spelers in de gestratificeerde steekproef (75%) overeen met het aandeel team B-spelers in het grotere DataFrame.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere voorbeeldtypen kunt selecteren met behulp van panda’s:
Clusterbemonstering uitvoeren in Pandas
Hoe systematische bemonstering onder panda’s uit te voeren