Mescola casualmente le righe DataFrame in Pandas

Suraj Joshi 30 gennaio 2023
  1. Metodo pandas.DataFrame.sample() per mescolare le righe DataFrame in Pandas
  2. numpy.random.permutation() per mescolare le righe DataFrame di Pandas
  3. sklearn.utils.shuffle() per mescolare le righe DataFrame di Pandas
Mescola casualmente le righe DataFrame in Pandas

Potremmo usare il metodo sample() degli oggetti DataFrame di Pandas, la funzione permutation() dal modulo NumPy e la funzione shuffle() dal pacchetto sklearn per mescolare casualmente le righe DataFrame in Pandas.

Metodo pandas.DataFrame.sample() per mescolare le righe DataFrame in Pandas

pandas.DataFrame.sample() può essere utilizzato per restituire un campione casuale di elementi da un asse di un oggetto DataFrame. Impostiamo il parametro axis a 0 poiché abbiamo bisogno di campionare gli elementi per riga, che è il valore predefinito per il parametro axis.

Il parametro frac determina quale frazione delle istanze totali deve essere restituita. Se vogliamo mescolare, impostiamo il valore di frac a 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)

Produzione:

       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

Il metodo Dataframe.shuttle mescola le righe di Pandas DataFrame, come mostrato sopra. Gli indici delle righe DataFrame mantengono gli stessi indici iniziali.

Potremmo aggiungere il metodo reset_index() per reimpostare l’indice del 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)

Produzione:

       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

Qui, l’opzione drop=True impedisce che la colonna index venga aggiunta come nuova colonna.

numpy.random.permutation() per mescolare le righe DataFrame di Pandas

Possiamo usare numpy.random.permutation() per mescolare gli indici di DataFrame. Quando gli indici mescolati sono usati per selezionare righe usando il metodo iloc(), otteniamo righe mescolate casualmente.

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)

Produzione:

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

Potresti ottenere un risultato diverso durante l’esecuzione dello stesso codice. È perché la funzione np.random.permutation() genera ogni volta diverse permutazioni di numeri.

sklearn.utils.shuffle() per mescolare le righe DataFrame di Pandas

Possiamo anche usare sklearn.utils.shuffle() per mescolare righe di 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)

Produzione:

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

Se non hai il pacchetto sklearn installato nel tuo, puoi semplicemente installarlo usando lo script:

pip install -U scikit-learn
Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Articolo correlato - Pandas DataFrame Row