Realizar Muestreo Estratificado en Pandas
El siguiente tutorial le enseñará cómo realizar un muestreo estratificado en pandas en un marco de datos.
Muestreo estratificado en estadística
El muestreo estratificado es una estrategia para obtener muestras representativas de la población. La separación de la población en grupos homogéneos llamados estratos y el muestreo aleatorio de datos de cada estrato disminuye el sesgo en la selección de la muestra.
Cuando los valores medios de cada estrato difieren, en Estadística se emplea un muestreo estratificado. El muestreo estratificado se usa con frecuencia en el aprendizaje automático para construir conjuntos de datos de prueba para evaluar modelos, principalmente cuando un conjunto de datos es extenso y desigual.
Realizar Muestreo Estratificado en Pandas
El primer paso para realizar el muestreo estratificado sería importar la biblioteca Pandas.
import pandas as pd
Aprendamos ahora los pasos involucrados en el muestreo estratificado.
- Separar la población en estratos. La población se clasifica en estratos según características comparables en esta etapa, y cada individuo debe pertenecer exactamente a un estrato.
- Determinar el tamaño de la muestra. Necesitamos decidir si nuestra muestra será grande o pequeña en esta etapa.
- Muestrear aleatoriamente cada estrato. El muestreo desproporcionado, en el que el tamaño de la muestra de cada estrato es igual independientemente del tamaño de su población, o el muestreo proporcional, en el que el tamaño de la muestra de cada estrato es proporcional al tamaño de su población, se utiliza para seleccionar muestras aleatorias de cada estrato.
Ahora consideraremos una muestra y realizaremos un muestreo estratificado desproporcionado y proporcionado. De 10 estudiantes, tomaremos una muestra de 6 estudiantes según sus calificaciones.
Primero creemos un marco de datos de muestra para trabajar. Aquí tomaremos 4 columnas, que incluyen nombre, identificación, grado y categoría.
Crearemos este marco de datos utilizando el siguiente código.
students = {
"Name": [
"sanay",
"shivesh",
"rutwik",
"preet",
"yash",
"mann",
"pritesh",
"hritesh",
"raj",
"tarun",
],
"ID": ["001", "002", "003", "004", "005", "006", "007", "008", "009", "010"],
"Grade": ["A", "A", "C", "B", "B", "B", "C", "A", "A", "A"],
"Category": [2, 3, 1, 3, 2, 3, 3, 1, 2, 1],
}
df = pd.DataFrame(students)
print(df)
Producción :
Name ID Grade Category
0 sanay 001 A 2
1 shivesh 002 A 3
2 rutwik 003 C 1
3 preet 004 B 3
4 yash 005 B 2
5 mann 006 B 3
6 pritesh 007 C 3
7 hritesh 008 A 1
8 raj 009 A 2
9 tarun 010 A 1
Vale la pena señalar que el 50 por ciento de los niños están en el grado A, el 30 por ciento en el grado B y el 20 por ciento en el grado C. Ahora realizaremos un muestreo desproporcionado, creando una muestra de 6 estudiantes.
Para un muestreo desproporcionado, separe a los estudiantes en grupos según su grado, es decir, A, B, C, luego use la función de muestra para muestrear 2 estudiantes de cada grupo de grado al azar. Hacemos esto usando el siguiente código.
df.groupby("Grade", group_keys=False).apply(lambda x: x.sample(2))
Producción :
Name ID Grade Category
0 sanay 001 A 2
7 hritesh 008 A 1
5 mann 006 B 3
4 yash 005 B 2
2 rutwik 003 C 1
6 pritesh 007 C 3
Para un muestreo proporcional, separe a los estudiantes en grupos según su calificación, es decir, A, B, C, luego tome una muestra aleatoria de cada grupo según el porcentaje de población usando Pandas groupby()
. El tamaño total de la muestra es del 60% de la población (0,6).
Realizamos esto usando el siguiente código.
df.groupby("Grade", group_keys=False).apply(lambda x: x.sample(frac=0.6))
Producción :
Name ID Grade Category
7 hritesh 008 A 1
9 tarun 010 A 1
0 sanay 001 A 2
3 preet 004 B 3
5 mann 006 B 3
6 pritesh 007 C 3
Por lo tanto, podemos realizar con éxito un muestreo proporcionado y desproporcionado en un marco de datos en Pandas utilizando los enfoques anteriores.