
Vous pouvez mélanger au hasard des lignes de pandas.DataFrame et des éléments de pandas.Series avec la méthode sample(). Il existe d’autres façons de mélanger, mais l’utilisation de la méthode sample () est pratique car elle ne nécessite pas l’importation d’autres modules.
Cet article décrit le contenu suivant.
- Spécifiez frac=1 pour sample() à mélanger
- Réinitialiser l’index :
ignore_index, reset_index()
- Mettre à jour l’objet d’origine
Dans l’exemple de code, le fichier CSV suivant est utilisé.
import pandas as pd
df = pd.read_csv('data/src/sample_pandas_normal.csv')
print(df)
# name age state point
# 0 Alice 24 NY 64
# 1 Bob 42 CA 92
# 2 Charlie 18 CA 70
# 3 Dave 68 TX 70
# 4 Ellen 24 CA 88
# 5 Frank 30 NY 57
L’exemple utilise pandas.DataFrame, mais vous pouvez mélanger pandas.Series de la même manière.
Notez que vous pouvez utiliser sort_values() et sort_index() pour trier les lignes en fonction des valeurs d’index ou de colonne. Voir l’article suivant.
Spécifiez frac=1 pour sample() à mélanger
Consultez l’article suivant pour plus de détails sur la méthode sample().
Si le paramètre frac est défini sur 1, toutes les lignes sont échantillonnées de manière aléatoire, ce qui équivaut à mélanger la ligne entière.
print(df.sample(frac=1))
# name age state point
# 2 Charlie 18 CA 70
# 1 Bob 42 CA 92
# 3 Dave 68 TX 70
# 0 Alice 24 NY 64
# 5 Frank 30 NY 57
# 4 Ellen 24 CA 88
Vous pouvez initialiser le générateur de nombres aléatoires avec une graine fixe avec le paramètre random_state. Après initialisation avec la même graine, ils sont toujours mélangés de la même manière.
print(df.sample(frac=1, random_state=0))
# name age state point
# 5 Frank 30 NY 57
# 2 Charlie 18 CA 70
# 1 Bob 42 CA 92
# 3 Dave 68 TX 70
# 0 Alice 24 NY 64
# 4 Ellen 24 CA 88
print(df.sample(frac=1, random_state=0))
# name age state point
# 5 Frank 30 NY 57
# 2 Charlie 18 CA 70
# 1 Bob 42 CA 92
# 3 Dave 68 TX 70
# 0 Alice 24 NY 64
# 4 Ellen 24 CA 88
Réinitialiser l’index :ignore_index, reset_index()
Si vous souhaitez réindexer le résultat (0, 1, … , n-1), définissez le paramètre ignore_index sur True.
print(df.sample(frac=1, ignore_index=True))
# name age state point
# 0 Ellen 24 CA 88
# 1 Frank 30 NY 57
# 2 Bob 42 CA 92
# 3 Dave 68 TX 70
# 4 Alice 24 NY 64
# 5 Charlie 18 CA 70
Le ignore_index a été ajouté dans pandas 1.3.0. Pour les versions antérieures, vous pouvez utiliser la méthode reset_index(). Définissez le paramètre drop sur True pour supprimer l’index d’origine.
print(df.sample(frac=1).reset_index(drop=True))
# name age state point
# 0 Bob 42 CA 92
# 1 Dave 68 TX 70
# 2 Alice 24 NY 64
# 3 Charlie 18 CA 70
# 4 Frank 30 NY 57
# 5 Ellen 24 CA 88
Mettre à jour l’objet d’origine
Si vous souhaitez mettre à jour l’objet d’origine, affectez le résultat mélangé à l’objet d’origine et écrasez-le.
df = df.sample(frac=1)
print(df)
# name age state point
# 0 Alice 24 NY 64
# 5 Frank 30 NY 57
# 1 Bob 42 CA 92
# 4 Ellen 24 CA 88
# 3 Dave 68 TX 70
# 2 Charlie 18 CA 70