Cómo barajar aleatoriamente filas de DataFrame en Pandas
-
Método
pandas.DataFrame.sample()
para barajar filas de DataFrame en Pandas -
numpy.random.permutation()
para mezclar filas de Pandas DataFrame -
sklearn.utils.shuffle()
para mezclar filas de Pandas DataFrame
Podríamos usar el método sample()
de los objetos Pandas DataFrame
, la función permutation()
del módulo NumPy
y la función shuffle()
del paquete sklearn
para mezclar aleatoriamente las filas DataFrame
en Pandas.
Método pandas.DataFrame.sample()
para barajar filas de DataFrame en Pandas
pandas.DataFrame.sample()
se puede usar para devolver una muestra aleatoria de elementos desde un eje del objeto DataFrame. Establecemos el parámetro axis
en 0 ya que necesitamos muestrear elementos de fila, que es el valor predeterminado para el parámetro axis
.
El parámetro frac
determina qué fracción del total de instancias debe devolverse. Si deseamos barajar, establecemos el valor de frac
en 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)
Producción:
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
El método Dataframe.shuttle
baraja filas de Pandas DataFrame, como se muestra arriba. Los índices de las filas de DataFrame se mantienen igual que los índices iniciales.
Podríamos agregar el método reset_index()
para restablecer el índice 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)
Producción:
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
Aquí, la opción drop=True
evita que la columna index
se agregue como la nueva columna.
numpy.random.permutation()
para mezclar filas de Pandas DataFrame
Podemos usar numpy.random.permutation()
para barajar los índices de DataFrame. Cuando los índices barajados se utilizan para seleccionar filas utilizando el método iloc()
, obtenemos filas aleatoriamente barajadas.
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
Producción:
Date Fruit Price
0 April-13 Mango 4
1 April-12 Banana 2
2 April-10 Apple 3
3 April-11 Papaya 1
Es posible que obtenga un resultado diferente mientras ejecuta el mismo código. Esto se debe a que la función np.random.permutation()
genera diferentes permutaciones de números cada vez.
sklearn.utils.shuffle()
para mezclar filas de Pandas DataFrame
También podemos usar sklearn.utils.shuffle()
para mezclar filas 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)
Producción:
Date Fruit Price
3 April-13 Mango 4
0 April-10 Apple 3
1 April-11 Papaya 1
2 April-12 Banana 2
Si no tiene instalado el paquete sklearn
, simplemente puede instalarlo usando el script:
pip install -U scikit-learn