Pandas DataFrame DataFrame.sample() Función

Minahil Noor 30 enero 2023
  1. La sintaxis de pandas.DataFrame.sample()
  2. Códigos de ejemplo: DataFrame.sample()
  3. Códigos de ejemplo: DataFrame.sample() para extraer las columnas
  4. Códigos de ejemplo: DataFrame.sample() para generar una fracción de datos
  5. Códigos de ejemplo: DataFrame.sample() para sobremuestrear el DataFrame
  6. Códigos de ejemplo: DataFrame.sample() Con weights
Pandas DataFrame DataFrame.sample() Función

La función Pandas Python DataFrame.sample() genera una muestra de una fila o una columna aleatoria de un DataFrame. La muestra puede contener más de una fila o columna.

La sintaxis de pandas.DataFrame.sample()

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

Parámetros

n Es un valor entero. Representa el número aleatorio de las filas o columnas a ser seleccionadas del DataFrame.
frac Es un valor flotante. Especifica el porcentaje de filas o columnas aleatorias que se extraen del DataFrame. Por ejemplo, frac=0.45 significa que las filas o columnas aleatorias seleccionadas serán el 45% de los datos originales.
replace Es un valor booleano. Si se ajusta a True, entonces devuelve la muestra con la sustitución de datos.
weights Es una cadena de caracteres o una estructura N-dimensional array-like. Si se llama en un DataFrame entonces acepta el nombre de una columna cuando el eje es 0. Las filas con valores mayores en la columna de pesos tienen más probabilidades de ser devueltas como los datos de la muestra.
random_state Es una entera o numpy.random.RandomState función. Si es un entero entonces devuelve el mismo número de filas o columnas en cada iteración. De lo contrario, devuelve un objeto numpy.random.RandomState.
axis Es un entero o una cadena de caracteres. Dice sobre el eje objetivo ya sea filas o columnas. Puede ser 0 o index y 1 o columns.

Retorna

Devuelve una Series o un DataFrame. La Series o DataFrame devuelta es una llamada que contiene n elementos seleccionados al azar del DataFrame original.

Códigos de ejemplo: DataFrame.sample()

Por defecto, la función devuelve una muestra que contiene filas, es decir, 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)

Nuestro DataFrame parece

   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 los parámetros de esta función son opcionales. Si ejecutamos esta función sin pasar ningún parámetro, devuelve una sola fila aleatoria como salida.

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)

Salida1:

   Attendance Name  Obtained Marks
3          75  Ben              64

Salida2:

   Attendance   Name  Obtained Marks
4          95  Kevin              67

La salida 1 y la salida 2 muestran la ejecución del mismo programa dos veces. Cada vez que esta función genera una muestra aleatoria de filas a partir del DataFrame dado.

Códigos de ejemplo: DataFrame.sample() para extraer las columnas

Para generar columnas en una muestra simplemente cambiaremos nuestro eje a 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

La función ha generado una muestra de una sola columna como salida. El número de columnas fue establecido por el parámetro n=1.

Códigos de ejemplo: DataFrame.sample() para generar una fracción de datos

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

La muestra devuelta es el 50% de los datos originales.

Códigos de ejemplo: DataFrame.sample() para sobremuestrear el DataFrame

Si frac>1, entonces el parámetro replace debe ser True para permitir que la misma fila pueda ser muestreada más de una vez; de lo contrario, levantará un 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

Si replace está configurado como False mientras que frac es mayor que 1, entonces se producirá un 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 ejemplo: DataFrame.sample() Con 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

Aquí, las filas con mayores valores en la columna Attendance están seleccionadas en la muestra devuelta.

Artículo relacionado - Pandas DataFrame