Comment mélanger au hasard les lignes DataFrame dans Pandas
-
Méthode
pandas.DataFrame.sample()
pour mélanger les lignes DataFrame dans Pandas -
numpy.random.permutation()
pour mélanger les lignes Pandas DataFrame -
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