Como embaralhar aleatoriamente linhas DataFrame em Pandas
-
Método
pandas.DataFrame.sample()
para embaralhar linhas de DataFrame em Pandas -
numpy.random.permutation()
para embaralhar Pandas DataFrame Rows -
sklearn.utils.shuffle()
para Shuffle Pandas DataFrame Rows
Poderíamos utilizar o método sample()
dos objetos Pandas DataFrame
, permutation()
função do módulo NumPy
e shuffle()
função do pacote sklearn
para embaralhar aleatoriamente linhas DataFrame
em Pandas.
Método pandas.DataFrame.sample()
para embaralhar linhas de DataFrame em Pandas
pandas.DataFrame.sample()
pode ser utilizado para retornar uma amostra aleatória de itens de um eixo do objeto DataFrame. Definimos o parâmetro axis
como 0, pois precisamos amostrar elementos a partir de linhas, que é o valor padrão para o parâmetro axis
.
O parâmetro frac
determina que fração de instâncias totais precisa ser retornada. Se desejarmos embaralhar, definimos o valor de frac
para 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)
Resultado:
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
O método Dataframe.shuttle
embaralha as linhas de Pandas DataFrame, como mostrado acima. Os índices das linhas DataFrame mantêm o mesmo valor dos índices iniciais.
Poderíamos adicionar o método reset_index()
para zerar o índice 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)
Resultado:
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
Aqui, a opção drop=True
evita que a coluna index
seja adicionada como a nova coluna.
numpy.random.permutation()
para embaralhar Pandas DataFrame Rows
Podemos utilizar numpy.random.permutation()
para baralhar os índices da DataFrame. Quando os índices embaralhados são utilizados para selecionar linhas utilizando o método iloc()
, obtemos linhas embaralhadas aleatoriamente.
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)
Resultado:
Date Fruit Price
0 April-13 Mango 4
1 April-12 Banana 2
2 April-10 Apple 3
3 April-11 Papaya 1
Você pode obter um resultado diferente ao executar o mesmo código. É porque a função np.random.permutation()
gera diferentes permutações de números a cada vez.
sklearn.utils.shuffle()
para Shuffle Pandas DataFrame Rows
Também podemos utilizar sklearn.utils.shuffle()
para embaralhar as linhas 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)
Resultado:
Date Fruit Price
3 April-13 Mango 4
0 April-10 Apple 3
1 April-11 Papaya 1
2 April-12 Banana 2
Se você não tiver o pacote sklearn
instalado em seu computador, você pode simplesmente instalá-lo utilizando o script:
pip install -U scikit-learn
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedInArtigo relacionado - Pandas DataFrame Row
- Como obter a contagem de filas de um Pandas DataFrame
- Como filtrar linhas de dados com base nos valores das colunas em Pandas
- Como Iterar Através de Linhas de um DataFrame em Pandas
- Como obter índice de todas as linhas cuja coluna específica satisfaz dada a condição em Pandas
- Obter a Primeira Fila de Pandas de Dataframe