En este artículo, analizaremos el muestreo aleatorio simple y el muestreo estratificado en PySpark.
Muestreo aleatorio simple:
En el muestreo aleatorio simple, cada elemento no se obtiene en un orden particular. En otras palabras, se obtienen aleatoriamente. Es por eso que los elementos tienen la misma probabilidad de ser seleccionados. En palabras simples, el muestreo aleatorio se define como el proceso para seleccionar un subconjunto al azar de un gran conjunto de datos. El muestreo aleatorio simple en PySpark se puede obtener a través de la función sample(). El muestreo simple es de dos tipos: de reemplazo y sin reemplazo. Estos tipos de muestreo aleatorio se analizan a continuación en detalle,
Método 1: Muestreo aleatorio con reemplazo
El muestreo aleatorio con reemplazo es un tipo de muestreo aleatorio en el que el elemento elegido al azar anterior se devuelve a la población y ahora se toma al azar un elemento aleatorio.
Sintaxis:
muestra (Verdadero, fracción, semilla)
Aquí,
- fracción: Representa la fracción de filas a generar. Puede oscilar entre 0,0 y 1,0 (inclusive)
- semilla: Representa la semilla requerida para el muestreo (Por defecto es una semilla aleatoria). Se utiliza para regenerar el mismo muestreo aleatorio.
Ejemplo:
Python3
# Python program to demonstrate random # sampling in pyspark with replacement # Import libraries import pandas as pd from pyspark.sql import Row from pyspark.sql import SparkSession # Create a session spark = SparkSession.builder.getOrCreate() # Create dataframe by passing list df = spark.createDataFrame([ Row(Brand="Redmi", Units=1000000, Performance="Outstanding", Ecofriendly="Yes"), Row(Brand="Samsung", Units=900000, Performance="Outstanding", Ecofriendly="Yes"), Row(Brand="Nokia", Units=500000, Performance="Excellent", Ecofriendly="Yes"), Row(Brand="Motorola",Units=400000, Performance="Average", Ecofriendly="Yes"), Row(Brand="Apple", Units=2000000,Performance="Outstanding", Ecofriendly="Yes") ]) # Apply sample() function with replacement df_mobile_brands = df.sample(True, 0.5, 42) # Print to the console df_mobile_brands.show()
Producción:
Método 2: Muestreo aleatorio sin reemplazo
El muestreo aleatorio sin reemplazo es un tipo de muestreo aleatorio en el que cada grupo tiene solo una oportunidad de ser seleccionado en la muestra.
Sintaxis:
muestra (falso, fracción, semilla)
Aquí,
fracción: Representa la fracción de filas a generar. Puede oscilar entre 0,0 y 1,0 (inclusive)
semilla: Representa la semilla requerida para el muestreo (Por defecto es una semilla aleatoria). Se utiliza para regenerar el mismo muestreo aleatorio.
Ejemplo:
Python3
# Python program to demonstrate random # sampling in pyspark without replacement # Import libraries import pandas as pd from pyspark.sql import Row from pyspark.sql import SparkSession # create the session spark = SparkSession.builder.getOrCreate() # Create dataframe by passing list df = spark.createDataFrame([ Row(Brand="Redmi", Units=1000000, Performance="Outstanding", Ecofriendly="Yes"), Row(Brand="Samsung", Units=900000, Performance="Outstanding", Ecofriendly="Yes"), Row(Brand="Nokia", Units=500000, Performance="Excellent", Ecofriendly="Yes"), Row(Brand="Motorola",Units=400000, Performance="Average", Ecofriendly="Yes"), Row(Brand="Apple", Units=2000000,Performance="Outstanding", Ecofriendly="Yes") ]) # Apply sample() function without replacement df_mobile_brands = df.sample(False, 0.5, 42) # Print to the console df_mobile_brands.show()
Producción:
Método 3: Muestreo estratificado en pyspark
En el caso del muestreo Estratificado cada uno de los miembros se agrupa en los grupos que tienen la misma estructura (grupos homogéneos) conocidos como estratos y se elige el representante de cada uno de dichos subgrupos (llamados estratos). El muestreo estratificado en pyspark se puede calcular usando la función sampleBy(). La sintaxis se da a continuación,
Sintaxis:
sampleBy(columna, fracciones, semilla=Ninguno)
Aquí,
- columna: la columna que define los estratos
- fracciones: Representa la fracción de muestreo para cada estrato. Cuando no se da el estrato, asumimos que la fracción es cero.
- semilla: Representa la semilla requerida para el muestreo (Por defecto es una semilla aleatoria). Se utiliza para regenerar el mismo muestreo aleatorio.
Ejemplo:
En este ejemplo, tenemos tres estratos, 1000000, 400000 y 2000000 y se seleccionan según las fracciones 0,2, 0,4 y 0,2 respectivamente.
Python3
# Python program to demonstrate stratified sampling in pyspark # Import libraries import pandas as pd from pyspark.sql import Row from pyspark.sql import SparkSession # Create the session spark = SparkSession.builder.getOrCreate() # Creating dataframe by passing list df = spark.createDataFrame([ Row(Brand="Redmi", Units=1000000, Performance="Outstanding", Ecofriendly="Yes"), Row(Brand="Samsung", Units=1000000, Performance="Outstanding", Ecofriendly="Yes"), Row(Brand="Nokia", Units=400000, Performance="Excellent", Ecofriendly="Yes"), Row(Brand="Motorola",Units=400000, Performance="Average", Ecofriendly="Yes"), Row(Brand="OPPO",Units=400000, Performance="Average", Ecofriendly="Yes"), Row(Brand="Apple", Units=2000000,Performance="Outstanding", Ecofriendly="Yes") ]) # Applying sampleBy() function mobile_brands = df.sampleBy("Units", fractions={ 1000000: 0.2, 2000000: 0.4, 400000: 0.2}, seed=0) # Print to the console mobile_brands.show()
Producción: