terça-feira, 27 de abril de 2021

Como selecionar aleatoriamente linhas do Pandas DataFrame

Vamos discutir como selecionar aleatoriamente linhas do Pandas DataFrame . Uma seleção aleatória de linhas de um DataFrame pode ser obtida de diferentes maneiras.

Crie um dataframe simples com dicionário de listas.

import pandas as pd

data = {
    'Name': ['Jai', 'Princi', 'Gaurav', 'Anuj', 'Geeku'],
    'Age': [27, 24, 22, 32, 15],
    'Address': ['Delhi', 'Kanpur', 'Allahabad', 'Kannauj', 'Noida'],
    'Qualification':['Msc', 'MA', 'MCA', 'Phd', '10th']
}

df = pd.DataFrame(data)

print(df)

Saída:

     Name  Age    Address Qualification
0     Jai   27      Delhi           Msc
1  Princi   24     Kanpur            MA
2  Gaurav   22  Allahabad           MCA
3    Anuj   32    Kannauj           Phd
4   Geeku   15      Noida          10th

Método #1: Usando o método sample()

O método sample() retorna uma amostra aleatória de itens de um eixo do objeto e este objeto é do mesmo tipo de seu chamador.

Exemplo #1:

# Selecione uma linha aleatoriamente usando sample()
# sem fornecer nenhum parâmetro.

import pandas as pd

data = {
    'Name': ['Jai', 'Princi', 'Gaurav', 'Anuj', 'Geeku'],
    'Age': [27, 24, 22, 32, 15],
    'Address': ['Delhi', 'Kanpur', 'Allahabad', 'Kannauj', 'Noida'],
    'Qualification':['Msc', 'MA', 'MCA', 'Phd', '10th']
}

df = pd.DataFrame(data)

# Seleciona uma linha do dataframe aleatoriamente
print(df.sample())
    Name  Age Address Qualification
4  Geeku   15   Noida          10th

Exemplo #2: usando o parâmetro n, que seleciona n números de linhas aleatoriamente.

Selecione n números de linhas aleatoriamente usando sample(n) ou sample(n=n). Cada vez que você executa isso, obtém n linhas diferentes.

# Seleciona três linhas do dataframe aleatoriamente
print(df.sample(n=3))
     Name  Age    Address Qualification
2  Gaurav   22  Allahabad           MCA
0     Jai   27      Delhi           Msc
1  Princi   24     Kanpur            MA

Exemplo #3: Usando o parâmetro frac.

Pode-se fazer a fração dos itens do eixo e obter linhas. Por exemplo, se for passado o valor .5 para o parâmetro frac o método sample retornar 50% das linhas.

# Seleciona três linhas do dataframe aleatoriamente
print(df.sample(frac=.5))
    Name  Age  Address Qualification
3   Anuj   32  Kannauj           Phd
4  Geeku   15    Noida          10th

Exemplo #4: selecione algumas linhas aleatoriamente com replace=false

A substituição de parâmetro dá permissão para selecionar uma linha várias vezes (como). O valor padrão do parâmetro de substituição do método sample() é False, então você nunca seleciona mais do que o número total de linhas.

# o dataframe df tem apenas 4 linhas

# se tentarmos selecionar mais de 4 linhas, ocorrerá um erro
# Não é possível obter uma amostra maior do que a população quando 'replace = False'
print(df.sample(n=3, replace=False))

Saída:

    Name  Age  Address Qualification
0    Jai   27    Delhi           Msc
3   Anuj   32  Kannauj           Phd
4  Geeku   15    Noida          10th

Exemplo #5: Selecione mais de n linhas, onde n é o número total de linhas com a ajuda do parâmetro replace.

# o dataframe df tem apenas 4 linhas

# Selecione mais de 4 linhas com o uso do parâmetro replace
# o valor padrão é False
print(df.sample(n=6, replace=True))

Saída:

     Name  Age    Address Qualification
4   Geeku   15      Noida          10th
2  Gaurav   22  Allahabad           MCA
2  Gaurav   22  Allahabad           MCA
4   Geeku   15      Noida          10th
2  Gaurav   22  Allahabad           MCA
4   Geeku   15      Noida          10th

Exemplo #6: Usando o parâmetro random_state

Com um determinado DataFrame, a amostra sempre buscará as mesmas linhas. Se random_state for None ou np.random, um objeto RandomState inicializado aleatoriamente será retornado.

print(df.sample(n=2, random_state=2))

Saída:

     Name  Age    Address Qualification
2  Gaurav   22  Allahabad           MCA
4   Geeku   15      Noida          10th

Artigo escrito por Rajput-Ji e traduzido por Acervolima de How to randomly select rows from Pandas DataFrame.

Licença

0 comentários:

Postar um comentário