Comment mélanger au hasard les lignes DataFrame dans Pandas

  1. Méthode pandas.DataFrame.sample() pour mélanger les lignes DataFrame dans Pandas
  2. numpy.random.permutation() pour mélanger les lignes Pandas DataFrame
  3. sklearn.utils.shuffle() pour mélanger les lignes Pandas DataFrame

Nous pourrions utiliser la méthode sample() des objets Pandas Dataframe, la fonction permutation() du module NumPy et la fonction shuffle() du package sklearn pour mélanger aléatoirement les lignes DataFrame dans Pandas.

Méthode pandas.DataFrame.sample() pour mélanger les lignes DataFrame dans Pandas

pandas.DataFrame.sample() peut être utilisé pour renvoyer un échantillon aléatoire d’éléments à partir d’un axe de l’objet DataFrame. Nous définissons le paramètre axis sur 0 car nous devons échantillonner les éléments par ligne, qui est la valeur par défaut pour le paramètre axis.

Le paramètre frac détermine quelle fraction du nombre total d’instances doit être renvoyée. Si nous voulons mélanger, nous mettons la valeur de frac à 1.

import pandas as pd

dates=['April-10', 'April-11', 'April-12', 'April-13']
fruits=['Apple', 'Papaya', 'Banana', 'Mango']
prices=[3, 1, 2, 4]

df = pd.DataFrame({'Date':dates ,
                   'Fruit':fruits ,
                   'Price': prices})
print(df)

df_shuffled=df.sample(frac=1).reset_index(drop=True)
print(df_shuffled)

Production:

       Date   Fruit  Price
0  April-10   Apple      3
1  April-11  Papaya      1
2  April-12  Banana      2
3  April-13   Mango      4
       Date   Fruit  Price
3  April-13   Mango      4
2  April-12  Banana      2
0  April-10   Apple      3
1  April-11  Papaya      1

La méthode Dataframe.shuttle mélange les lignes de Pandas DataFrame, comme indiqué ci-dessus. Les indices des lignes DataFrame restent les mêmes que les indices initiaux.

Nous pourrions ajouter la méthode reset_index() pour réinitialiser l’index de le DataFrame.

import pandas as pd

dates=['April-10', 'April-11', 'April-12', 'April-13']
fruits=['Apple', 'Papaya', 'Banana', 'Mango']
prices=[3, 1, 2, 4]

df = pd.DataFrame({'Date':dates ,
                   'Fruit':fruits ,
                   'Price': prices})
print(df)

df_shuffled=df.sample(frac=1).reset_index(drop=True)
print(df_shuffled)

Production:

       Date   Fruit  Price
0  April-10   Apple      3
1  April-11  Papaya      1
2  April-12  Banana      2
3  April-13   Mango      4
       Date   Fruit  Price
0  April-11  Papaya      1
1  April-13   Mango      4
2  April-10   Apple      3
3  April-12  Banana      2

Ici, l’option drop = True empêche la colonne index d’être ajoutée comme nouvelle colonne.

numpy.random.permutation() pour mélanger les lignes Pandas DataFrame

Nous pouvons utiliser numpy.random.permutation() pour mélanger les indices de DataFrame. Lorsque les indices mélangés sont utilisés pour sélectionner des lignes à l’aide de la méthode iloc(), nous obtenons des lignes mélangées de manière aléatoire.

import pandas as pd
import numpy as np

dates=['April-10', 'April-11', 'April-12', 'April-13']
fruits=['Apple', 'Papaya', 'Banana', 'Mango']
prices=[3, 1, 2, 4]

df = pd.DataFrame({'Date':dates ,
                   'Fruit':fruits ,
                   'Price': prices})

df_shuffled=df.iloc[np.random.permutation(df.index)].reset_index(drop=True)
print(df_shuffled

Production:

       Date   Fruit  Price
0  April-13   Mango      4
1  April-12  Banana      2
2  April-10   Apple      3
3  April-11  Papaya      1

Vous pouvez obtenir un résultat différent en exécutant le même code. C’est parce que la fonction np.random.permutation() génère à chaque fois différentes permutations de nombres.

sklearn.utils.shuffle() pour mélanger les lignes Pandas DataFrame

Nous pouvons également utiliser sklearn.utils.shuffle() pour mélanger les lignes de Pandas DataFrame.

import pandas as pd
import numpy as np
import sklearn

dates=['April-10', 'April-11', 'April-12', 'April-13']
fruits=['Apple', 'Papaya', 'Banana', 'Mango']
prices=[3, 1, 2, 4]

df = pd.DataFrame({'Date':dates ,
                   'Fruit':fruits ,
                   'Price': prices})

df_shuffled=sklearn.utils.shuffle(df)
print(df_shuffled)

Production:

       Date   Fruit  Price
3  April-13   Mango      4
0  April-10   Apple      3
1  April-11  Papaya      1
2  April-12  Banana      2

Si vous n’avez pas installé le paquet sklearn dans votre, vous pouvez simplement l’installer en utilisant le script:

pip install -U scikit-learn

Article connexe - Pandas DataFrame Row

  • Obtenir l'index des lignes dont la colonne correspond à une valeur spécifique dans Pandas
  • Comment obtenir le nombre de lignes d'un Pandas DataFrame