Pandas DataFrame DataFrame.sample() Função

Minahil Noor 30 janeiro 2023
  1. Sintaxe da função pandas.DataFrame.sample()
  2. Códigos de exemplo: DataFrame.sample()
  3. Códigos de exemplo: DataFrame.sample() para extrair as colunas
  4. Códigos de exemplo: DataFrame.sample() para Gerar uma Fração de Dados
  5. Códigos de exemplo: DataFrame.sample() a Oversample the DataFrame
  6. Códigos de exemplo: DataFrame.sample() com weights
Pandas DataFrame DataFrame.sample() Função

A função Python Pandas DataFrame.sample() gera uma amostra de uma linha ou coluna aleatória de um DataFrame. A amostra pode conter mais de uma linha ou coluna.

Sintaxe da função pandas.DataFrame.sample()

DataFrame.sample(
    n=None, frac=None, replace=False, weights=None, random_state=None, axis=None
)

Parâmetros

n É um valor inteiro. Ele representa o número aleatório das linhas ou colunas a serem selecionadas a partir do DataFrame.
frac É um valor float. Ele especifica a porcentagem de linhas ou colunas aleatórias a serem extraídas do DataFrame. Por exemplo, frac=0.45 significa que as linhas ou colunas aleatórias selecionadas serão 45% dos dados originais.
replace É um valor booleano. Se for definido como True, então ele devolve a amostra com a substituição dos dados.
weights É uma estrutura de string ou uma estrutura N-dimensional array-like . Se for chamada em um DataFrame, aceita o nome de uma coluna quando o eixo é 0. As linhas com valores maiores em coluna de pesos são mais propensas a serem retornadas como dados da amostra.
random_state É uma função integer ou numpy.random.RandomState. Se for um inteiro então ele retorna o mesmo número de linhas ou colunas em cada iteração. Caso contrário, ele retorna um objeto numpy.random.RandomState.
axis É um inteiro ou um string. Ele informa sobre o eixo alvo, seja linhas ou colunas. Pode ser 0 ou index e 1 ou columns.

Retornar

Ele retorna uma Series ou um DataFrame. A Series ou DataFrame retornada é um chamador que contém n itens selecionados aleatoriamente da DataFrame original.

Códigos de exemplo: DataFrame.sample()

Por padrão, a função retorna uma amostra contendo linhas, ou seja, axis=1.

import pandas as pd

dataframe=pd.DataFrame({'Attendance': {0: 60, 1: 100, 2: 80,3: 75, 4: 95},
                    'Name': {0: 'Olivia', 1: 'John', 2: 'Laura',3: 'Ben',4: 'Kevin'},
                    'Obtained Marks': {0: 56, 1: 75, 2: 82, 3: 64, 4: 67}})
print(dataframe)

Nosso DataFrame se parece com

   Attendance    Name  Obtained Marks
0          60  Olivia              56
1         100    John              75
2          80   Laura              82
3          75     Ben              64
4          95   Kevin              67

Todos os parâmetros desta função são opcionais. Se executarmos esta função sem passar nenhum parâmetro, ela retorna uma única linha aleatória como uma saída.

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: 100, 2: 80, 3: 75, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: 56, 1: 75, 2: 82, 3: 64, 4: 67},
    }
)
dataframe1 = dataframe.sample()
print(dataframe1)

Resultado 1:

   Attendance Name  Obtained Marks
3          75  Ben              64

Resultado 2:

   Attendance   Name  Obtained Marks
4          95  Kevin              67

Outpt1 e output2 mostram a execução do mesmo programa duas vezes. Cada vez que esta função gera uma amostra aleatória de linhas a partir do DataFrame dado.

Códigos de exemplo: DataFrame.sample() para extrair as colunas

Para gerar colunas em uma amostra, simplesmente mudaremos nosso eixo para 1.

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: 100, 2: 80, 3: 75, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: 56, 1: 75, 2: 82, 3: 64, 4: 67},
    }
)
dataframe1 = dataframe.sample(n=1, axis=1)
print(dataframe1)

Resultado:

     Name
0  Olivia
1    John
2   Laura
3     Ben
4   Kevin

A função gerou uma amostra de uma única coluna como uma saída. O número de colunas foi definido pelo parâmetro n=1.

Códigos de exemplo: DataFrame.sample() para Gerar uma Fração de Dados

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: 100, 2: 80, 3: 75, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: 56, 1: 75, 2: 82, 3: 64, 4: 67},
    }
)
dataframe1 = dataframe.sample(frac=0.5)
print(dataframe1)

Resultado:

   Attendance   Name  Obtained Marks
3          75    Ben              64
4          95  Kevin              67
1         100   John              75

A amostra devolvida é 50% dos dados originais.

Códigos de exemplo: DataFrame.sample() a Oversample the DataFrame

Se frac>1, então o parâmetro replace deve ser True para permitir que a mesma linha possa ser amostrada mais de uma vez; caso contrário, ele elevará um ValueError.

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: 100, 2: 80, 3: 75, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: 56, 1: 75, 2: 82, 3: 64, 4: 67},
    }
)
dataframe1 = dataframe.sample(frac=1.5, replace=True)
print(dataframe1)

Resultado:

   Attendance   Name  Obtained Marks
3          75     Ben              64
0          60  Olivia              56
1         100    John              75
2          80   Laura              82
1         100    John              75
2          80   Laura              82
0          60  Olivia              56
4          95   Kevin              67

Se replace estiver definido para ser False, enquanto que frac é maior que 1, então ele elevará um ValueError.

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: 100, 2: 80, 3: 75, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: 56, 1: 75, 2: 82, 3: 64, 4: 67},
    }
)
dataframe1 = dataframe.sample(frac=1.5, replace=False)
print(dataframe1)

Resultado:

Traceback (most recent call last):
  File "..\test.py", line 6, in <module>
    dataframe1 = dataframe.sample(frac=1.5, replace=False)
  File "..\lib\site-packages\pandas\core\generic.py", line 5044, in sample
    raise ValueError(
ValueError: Replace has to be set to `True` when upsampling the population `frac` > 1.

Códigos de exemplo: DataFrame.sample() com weights

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: 100, 2: 80, 3: 75, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: 56, 1: 75, 2: 82, 3: 64, 4: 67},
    }
)
dataframe1 = dataframe.sample(n=2, weights="Attendance")
print(dataframe1)

Resultado:

   Attendance   Name  Obtained Marks
1         100   John              75
4          95  Kevin              67

Aqui, as linhas com valores maiores na coluna Attendance são selecionadas na amostra retornada.

Artigo relacionado - Pandas DataFrame