Personnaliser les préférences

Nous utilisons des cookies pour vous aider à naviguer efficacement et à exécuter certaines fonctions. Vous trouverez ci-dessous des informations détaillées sur tous les cookies sous chaque catégorie de consentement.

Les cookies classés comme « Nécessaires » sont stockés sur votre navigateur car ils sont essentiels pour activer les fonctionnalités de base du site.... 

Toujours actif

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

Aucun cookie à afficher.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

Aucun cookie à afficher.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

Aucun cookie à afficher.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Aucun cookie à afficher.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

Aucun cookie à afficher.

Échantillonnage stratifié chez les pandas (avec exemples)



Les chercheurs prélèvent souvent des échantillons dans une population et utilisent les données de l’échantillon pour tirer des conclusions sur la population dans son ensemble.

Une méthode d’échantillonnage couramment utilisée est l’échantillonnage aléatoire stratifié , dans lequel une population est divisée en groupes et un certain nombre de membres de chaque groupe sont sélectionnés au hasard pour être inclus dans l’échantillon.

Ce didacticiel explique deux méthodes pour effectuer un échantillonnage aléatoire stratifié en Python.

Exemple 1 : Échantillonnage stratifié à l’aide de décomptes

Supposons que nous ayons le DataFrame pandas suivant qui contient des données sur 8 joueurs de basket-ball de 2 équipes différentes :

import pandas as pd

#create DataFrame
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

Le code suivant montre comment effectuer un échantillonnage aléatoire stratifié en sélectionnant au hasard 2 joueurs de chaque équipe à inclure dans l’échantillon :

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

Notez que deux joueurs de chaque équipe sont inclus dans l’échantillon stratifié.

Exemple 2 : échantillonnage stratifié à l’aide de proportions

Supposons encore une fois que nous ayons le DataFrame pandas suivant qui contient des données sur 8 joueurs de basket-ball de 2 équipes différentes :

import pandas as pd

#create DataFrame
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

Notez que 6 des 8 joueurs (75 %) du DataFrame font partie de l’équipe A et 2 des 8 joueurs (25 %) sont de l’équipe B.

Le code suivant montre comment effectuer un échantillonnage aléatoire stratifié de telle sorte que la proportion de joueurs dans l’échantillon de chaque équipe corresponde à la proportion de joueurs de chaque équipe dans le DataFrame plus grand :

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

Notez que la proportion de joueurs de l’équipe A dans l’échantillon stratifié (25 %) correspond à la proportion de joueurs de l’équipe A dans le DataFrame plus grand.

De même, la proportion de joueurs de l’équipe B dans l’échantillon stratifié (75 %) correspond à la proportion de joueurs de l’équipe B dans le DataFrame plus grand.

Ressources additionnelles

Les didacticiels suivants expliquent comment sélectionner d’autres types d’échantillons à l’aide de pandas :

Comment effectuer un échantillonnage de cluster dans Pandas
Comment effectuer un échantillonnage systématique chez les pandas

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *