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
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedInArticle connexe - Pandas DataFrame Row
- Comment obtenir le nombre de lignes d'un Pandas DataFrame
- Filtrer les lignes des cadres de données en fonction des valeurs des colonnes dans Pandas
- Comment parcourir les lignes d'un DataFrame dans Pandas
- Comment obtenir l'index de toutes les lignes dont la colonne particulière satisfait la condition donnée dans Pandas
- Les Pandas déposent des lignes en double