Cómo barajar aleatoriamente filas de DataFrame en Pandas

  1. Método pandas.DataFrame.sample() para barajar filas de DataFrame en Pandas
  2. numpy.random.permutation() para mezclar filas de Pandas DataFrame
  3. 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

Artículo relacionado - Pandas DataFrame Row

  • Cómo iterar a través de filas de un DataFrame en Pandas
  • Cómo obtener el índice de todas las filas cuya columna particular satisface la condición dada en Pandas