Pandas : Comment échantillonner des lignes avec remplacement



Vous pouvez utiliser l’argument replace=True dans la fonction pandas sample() pour échantillonner aléatoirement les lignes d’un DataFrame avec remplacement :

#randomly select n rows with repeats allowed
df.sample(n=5, replace=True) 

En utilisant replace=True , vous autorisez l’inclusion de la même ligne dans l’échantillon plusieurs fois.

L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.

Exemple : exemples de lignes avec remplacement dans Pandas

Supposons que nous ayons le DataFrame pandas suivant qui contient des informations sur divers joueurs de basket-ball :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
                   'points': [18, 22, 19, 14, 14, 11, 20, 28],
                   'assists': [5, 7, 7, 9, 12, 9, 9, 4],
                   'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]})
                   
#view DataFrame
print(df)

  team  points  assists  rebounds
0    A      18        5        11
1    B      22        7         8
2    C      19        7        10
3    D      14        9         6
4    E      14       12         6
5    F      11        9         5
6    G      20        9         9
7    H      28        4        12

Supposons que nous utilisions la fonction sample() pour sélectionner aléatoirement un échantillon de lignes :

#randomly select 6 rows from DataFrame (without replacement)
df.sample(n=6, random_state=0)

        team	points	assists	rebounds
6	G	20	9	9
2	C	19	7	10
1	B	22	7	8
7	H	28	4	12
3	D	14	9	6
0	A	18	5	11

Notez que six lignes ont été sélectionnées dans le DataFrame et qu’aucune des lignes n’apparaît plusieurs fois dans l’échantillon.

Remarque : L’argument random_state=0 garantit que cet exemple est reproductible.

Supposons maintenant que nous utilisions l’argument replace=True pour sélectionner un échantillon aléatoire de lignes avec remplacement :

#randomly select 6 rows from DataFrame (with replacement)
df.sample(n=6, replace=True, random_state=0)

        team	points	assists	rebounds
4	E	14	12	6
7	H	28	4	12
5	F	11	9	5
0	A	18	5	11
3	D	14	9	6
3	D	14	9	6

Notez que la ligne avec l’équipe « D » apparaît plusieurs fois.

En utilisant l’argument replace=True , nous permettons à la même ligne d’apparaître plusieurs fois dans l’échantillon.

Notez également que nous pourrions sélectionner une fraction aléatoire du DataFrame à inclure dans l’échantillon en utilisant l’argument frac .

Par exemple, l’exemple suivant montre comment sélectionner 75 % des lignes à inclure dans l’échantillon avec remplacement :

#randomly select 75% of rows (with  replacement)
df.sample(frac=0.75, replace=True, random_state=0) 

        team	points	assists	rebounds
4	E	14	12	6
7	H	28	4	12
5	F	11	9	5
0	A	18	5	11
3	D	14	9	6
3	D	14	9	6

Notez que 75 % du nombre de lignes (6 sur 8) ont été incluses dans l’échantillon et qu’au moins une des lignes (avec l’équipe « D ») est apparue deux fois dans l’échantillon.

Remarque : Vous pouvez trouver la documentation complète de la fonction pandas sample() ici .

Ressources additionnelles

Les didacticiels suivants expliquent comment exécuter d’autres méthodes d’échantillonnage courantes dans Pandas :

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

Ajouter un commentaire

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