Las pruebas ICFES son exámenes estandarizados obligatorios en Colombia, siendo la principal la Saber 11 que evalúa competencias en lectura crítica, matemáticas, ciencias naturales, sociales e inglés. Son fundamentales porque constituyen un requisito para graduarse de bachillerato, determinan el acceso a universidades públicas, sirven como criterio para becas, permiten evaluar la calidad educativa de las instituciones y orientan las políticas públicas del sistema educativo nacional
Impacto del cierre de escuelas por COVID-19
Este análisis implica examinar los datos históricos de los resultados de la prueba Saber 11 en los colegios públicos de Bogotá y compararlos con los resultados durante el cierre de las escuelas con el propósito de identificar los cambios y las tendencias que pueden haber ocurrido durante este periodo. Además, se llevará a cabo un análisis comparativo de las diferentes localidades de Bogotá para determinar si existen diferencias significativas en los resultados de la prueba Saber 11 entre los colegios públicos de la ciudad y para finalizar se hará una reflexión sobre cómo la educación remota afectó a los estudiantes de los colegios públicos en Bogotá que son primordialmente los de menores condiciones socioeconómicas y si estos tuvieron acceso o no, a recursos educativos y tecnológicos adecuados durante la pandemia.
Es importante destacar que los cambios mencionados anteriormente se refieren a las diferencias en los puntajes promedio según algunas variables de interés, entre las cuales se incluyen:
-
Ubicación geográfica (localidad donde se encuentra la institución educativa oficial).
-
Estrato socioeconómico de los estudiantes
-
Jornada académica en la que se encuentra el estudiante
-
Disponibilidad o no de un computador en el hogar.
-
Acceso o no a internet en el hogar.
-
Nivel educativo de los padres.
-
Flexibilización de los contenidos curriculares desarrollados, asociados a intensidad horaria, metodologías implementadas y criterios de evaluación.
Seguiremos estas etapas, para la primera etapa analizaremos, importaremos los datos, haremos correciones y revisaremos que todo este bien para poder empezar con lo divertido, es muy normal que en empresas a inicio existan errores, mala organizacion, malas decisiones, información decentralizada, etc. Cosas que iremos arreglando, por ejemplo, para este escenario trabajaremos con txts proporcionados de la base de datos del icfes. Una vez que hagamos los analisis necesarios y las graficas necesarias haremos los entrenamientos, validamos y realizaremos la prediccion con algoritmos de aprendizaje supervizado - y predicciones con algebra linel multiple.

1. Importanción de Pandas.
A mededida que se escribe este analisis iremos importando las librerias (Un conjunto de funciones y herramientas predefinidas que pueden ser importadas y utilizadas en el desarrollo para realizar tareas específicas). Para este paso usaremos pandas para el analisis y manipulacion de datos.
import pandas as pd1.1 Identificación de datos.
En este proceso analizaremos las variables e importaremos el dataset (archivos.txt) de la base de datos proporcionada del ICFEs, como sabemos los csv tienen separadores para identificar columnas, filas y datos, en este caso si visualizamos alguno de estos archivos tenemos ¬ como separador. Así que no hace falta la conversion aun csv.
import pandas as pd
path = '/content/drive/MyDrive/icfes/'
# Importamos los datos a nuestra variable df
df = pd.read_csv(path+'SB11_20181.TXT', sep='¬', engine='python')
df.head()| ESTU_TIPODOCUMENTO | ESTU_NACIONALIDAD | ESTU_GENERO | ESTU_FECHANACIMIENTO | PERIODO | ESTU_CONSECUTIVO | ESTU_ESTUDIANTE | ESTU_PAIS_RESIDE | ESTU_TIENEETNIA | ESTU_ETNIA | ... | PUNT_INGLES | PERCENTIL_INGLES | DESEMP_INGLES | PUNT_GLOBAL | PERCENTIL_GLOBAL | ESTU_INSE_INDIVIDUAL | ESTU_NSE_INDIVIDUAL | ESTU_NSE_ESTABLECIMIENTO | ESTU_ESTADOINVESTIGACION | ESTU_PILOPAGA | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | TI | COLOMBIA | F | 19/07/2000 | 20181 | SB11201810005035 | ESTUDIANTE | COLOMBIA | No | NaN | ... | 44 | 21 | A- | 226 | 20 | 54.101344 | NSE3 | 3.0 | PUBLICAR | NO |
| 1 | TI | COLOMBIA | M | 03/10/2001 | 20181 | SB11201810005012 | ESTUDIANTE | COLOMBIA | No | NaN | ... | 58 | 45 | A2 | 263 | 37 | 66.990405 | NSE4 | 3.0 | PUBLICAR | NO |
| 2 | TI | COLOMBIA | F | 29/06/2000 | 20181 | SB11201810005026 | ESTUDIANTE | COLOMBIA | No | NaN | ... | 32 | 5 | A- | 204 | 12 | 45.721848 | NSE2 | 3.0 | PUBLICAR | NO |
| 3 | TI | COLOMBIA | M | 30/04/2001 | 20181 | SB11201810004998 | ESTUDIANTE | COLOMBIA | No | NaN | ... | 50 | 32 | A1 | 331 | 70 | 51.145124 | NSE2 | 3.0 | PUBLICAR | NO |
| 4 | TI | COLOMBIA | F | 06/08/2001 | 20181 | SB11201810005010 | ESTUDIANTE | COLOMBIA | No | NaN | ... | 62 | 50 | A2 | 318 | 63 | 53.365582 | NSE3 | 3.0 | PUBLICAR | NO |
5 rows × 82 columns
df| ESTU_TIPODOCUMENTO | ESTU_NACIONALIDAD | ESTU_GENERO | ESTU_FECHANACIMIENTO | PERIODO | ESTU_CONSECUTIVO | ESTU_ESTUDIANTE | ESTU_PAIS_RESIDE | ESTU_TIENEETNIA | ESTU_ETNIA | ... | PUNT_INGLES | PERCENTIL_INGLES | DESEMP_INGLES | PUNT_GLOBAL | PERCENTIL_GLOBAL | ESTU_INSE_INDIVIDUAL | ESTU_NSE_INDIVIDUAL | ESTU_NSE_ESTABLECIMIENTO | ESTU_ESTADOINVESTIGACION | ESTU_PILOPAGA | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | TI | COLOMBIA | F | 19/07/2000 | 20181 | SB11201810005035 | ESTUDIANTE | COLOMBIA | No | NaN | ... | 44 | 21 | A- | 226 | 20 | 54.101344 | NSE3 | 3.0 | PUBLICAR | NO |
| 1 | TI | COLOMBIA | M | 03/10/2001 | 20181 | SB11201810005012 | ESTUDIANTE | COLOMBIA | No | NaN | ... | 58 | 45 | A2 | 263 | 37 | 66.990405 | NSE4 | 3.0 | PUBLICAR | NO |
| 2 | TI | COLOMBIA | F | 29/06/2000 | 20181 | SB11201810005026 | ESTUDIANTE | COLOMBIA | No | NaN | ... | 32 | 5 | A- | 204 | 12 | 45.721848 | NSE2 | 3.0 | PUBLICAR | NO |
| 3 | TI | COLOMBIA | M | 30/04/2001 | 20181 | SB11201810004998 | ESTUDIANTE | COLOMBIA | No | NaN | ... | 50 | 32 | A1 | 331 | 70 | 51.145124 | NSE2 | 3.0 | PUBLICAR | NO |
| 4 | TI | COLOMBIA | F | 06/08/2001 | 20181 | SB11201810005010 | ESTUDIANTE | COLOMBIA | No | NaN | ... | 62 | 50 | A2 | 318 | 63 | 53.365582 | NSE3 | 3.0 | PUBLICAR | NO |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 12522 | TI | COLOMBIA | M | 09/04/2000 | 20181 | SB11201810055305 | ESTUDIANTE | COLOMBIA | No | NaN | ... | 51 | 33 | A1 | 208 | 13 | 71.165216 | NSE4 | 2.0 | PUBLICAR | NO |
| 12523 | TI | COLOMBIA | F | 17/12/2001 | 20181 | SB11201810055294 | ESTUDIANTE | COLOMBIA | Si | NaN | ... | 46 | 25 | A- | 260 | 35 | 55.447884 | NSE3 | 2.0 | PUBLICAR | NO |
| 12524 | TI | COLOMBIA | M | 27/03/2000 | 20181 | SB11201810055303 | ESTUDIANTE | COLOMBIA | No | NaN | ... | 26 | 1 | A- | 210 | 14 | 62.192852 | NSE3 | 2.0 | PUBLICAR | NO |
| 12525 | TI | COLOMBIA | M | 18/01/2002 | 20181 | SB11201810055301 | ESTUDIANTE | COLOMBIA | No | NaN | ... | 44 | 21 | A- | 215 | 16 | 54.766308 | NSE3 | 2.0 | PUBLICAR | NO |
| 12526 | TI | COLOMBIA | M | 04/05/2001 | 20181 | SB11201810055300 | ESTUDIANTE | COLOMBIA | No | NaN | ... | 42 | 18 | A- | 278 | 44 | 53.387778 | NSE3 | 2.0 | PUBLICAR | NO |
12527 rows × 82 columns
Tenemos 82 columnas y 12mil estudiantes, y vimos ejemplos de como se reflejan los datos de los estudiantes, ya nos podemos dar una idea de como manejar las variables categóricas, por ejemplo, ESTU_GENERO, donde utilizaremos One-Hot Encoding, donde se crea una nueva columna binaria (0 o 1) para cada categoría única de la variable.
- F: Femenino (0)
- M: Mascuino (1)
Pero sin adelantarnos, sigamos estudiando las variables ya que no se muestran todas.
df.info()RangeIndex: 12527 entries, 0 to 12526
Data columns (total 82 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 ESTU_TIPODOCUMENTO 12527 non-null object
1 ESTU_NACIONALIDAD 12527 non-null object
2 ESTU_GENERO 12527 non-null object
3 ESTU_FECHANACIMIENTO 12527 non-null object
4 PERIODO 12527 non-null int64
5 ESTU_CONSECUTIVO 12527 non-null object
6 ESTU_ESTUDIANTE 12527 non-null object
7 ESTU_PAIS_RESIDE 12527 non-null object
8 ESTU_TIENEETNIA 12526 non-null object
9 ESTU_ETNIA 119 non-null object
10 ESTU_DEPTO_RESIDE 12527 non-null object
11 ESTU_COD_RESIDE_DEPTO 12527 non-null int64
12 ESTU_MCPIO_RESIDE 12527 non-null object
13 ESTU_COD_RESIDE_MCPIO 12527 non-null int64
14 FAMI_ESTRATOVIVIENDA 12063 non-null object
15 FAMI_PERSONASHOGAR 12244 non-null object
16 FAMI_CUARTOSHOGAR 12319 non-null object
17 FAMI_EDUCACIONPADRE 12094 non-null object
18 FAMI_EDUCACIONMADRE 12096 non-null object
19 FAMI_TRABAJOLABORPADRE 12273 non-null object
20 FAMI_TRABAJOLABORMADRE 12299 non-null object
21 FAMI_TIENEINTERNET 12108 non-null object
22 FAMI_TIENESERVICIOTV 12083 non-null object
23 FAMI_TIENECOMPUTADOR 12347 non-null object
24 FAMI_TIENELAVADORA 12354 non-null object
25 FAMI_TIENEHORNOMICROOGAS 12347 non-null object
26 FAMI_TIENEAUTOMOVIL 12329 non-null object
27 FAMI_TIENEMOTOCICLETA 12317 non-null object
28 FAMI_TIENECONSOLAVIDEOJUEGOS 12335 non-null object
29 FAMI_NUMLIBROS 12102 non-null object
30 FAMI_COMELECHEDERIVADOS 12086 non-null object
31 FAMI_COMECARNEPESCADOHUEVO 12073 non-null object
32 FAMI_COMECEREALFRUTOSLEGUMBRE 12076 non-null object
33 FAMI_SITUACIONECONOMICA 12328 non-null object
34 ESTU_DEDICACIONLECTURADIARIA 12091 non-null object
35 ESTU_DEDICACIONINTERNET 12069 non-null object
36 ESTU_HORASSEMANATRABAJA 12326 non-null object
37 ESTU_TIPOREMUNERACION 12273 non-null object
38 COLE_CODIGO_ICFES 12527 non-null int64
39 COLE_COD_DANE_ESTABLECIMIENTO 12527 non-null int64
40 COLE_NOMBRE_ESTABLECIMIENTO 12527 non-null object
41 COLE_GENERO 12527 non-null object
42 COLE_NATURALEZA 12527 non-null object
43 COLE_CALENDARIO 12527 non-null object
44 COLE_BILINGUE 11123 non-null object
45 COLE_CARACTER 12403 non-null object
46 COLE_COD_DANE_SEDE 12527 non-null int64
47 COLE_NOMBRE_SEDE 12527 non-null object
48 COLE_SEDE_PRINCIPAL 12527 non-null object
49 COLE_AREA_UBICACION 12527 non-null object
50 COLE_JORNADA 12527 non-null object
51 COLE_COD_MCPIO_UBICACION 12527 non-null int64
52 COLE_MCPIO_UBICACION 12527 non-null object
53 COLE_COD_DEPTO_UBICACION 12527 non-null int64
54 COLE_DEPTO_UBICACION 12527 non-null object
55 ESTU_PRIVADO_LIBERTAD 12527 non-null object
56 ESTU_COD_MCPIO_PRESENTACION 12527 non-null int64
57 ESTU_MCPIO_PRESENTACION 12527 non-null object
58 ESTU_DEPTO_PRESENTACION 12527 non-null object
59 ESTU_COD_DEPTO_PRESENTACION 12527 non-null int64
60 PUNT_LECTURA_CRITICA 12527 non-null int64
61 PERCENTIL_LECTURA_CRITICA 12527 non-null int64
62 DESEMP_LECTURA_CRITICA 12527 non-null int64
63 PUNT_MATEMATICAS 12527 non-null int64
64 PERCENTIL_MATEMATICAS 12527 non-null int64
65 DESEMP_MATEMATICAS 12527 non-null int64
66 PUNT_C_NATURALES 12527 non-null int64
67 PERCENTIL_C_NATURALES 12527 non-null int64
68 DESEMP_C_NATURALES 12527 non-null int64
69 PUNT_SOCIALES_CIUDADANAS 12527 non-null int64
70 PERCENTIL_SOCIALES_CIUDADANAS 12527 non-null int64
71 DESEMP_SOCIALES_CIUDADANAS 12527 non-null int64
72 PUNT_INGLES 12527 non-null int64
73 PERCENTIL_INGLES 12527 non-null int64
74 DESEMP_INGLES 12527 non-null object
75 PUNT_GLOBAL 12527 non-null int64
76 PERCENTIL_GLOBAL 12527 non-null int64
77 ESTU_INSE_INDIVIDUAL 12268 non-null float64
78 ESTU_NSE_INDIVIDUAL 12268 non-null object
79 ESTU_NSE_ESTABLECIMIENTO 12430 non-null float64
80 ESTU_ESTADOINVESTIGACION 12527 non-null object
81 ESTU_PILOPAGA 12527 non-null object
dtypes: float64(2), int64(26), object(54)
memory usage: 7.8+ MB1.2 Categorización de variables por grupos
Categoría 1: Información personal del estudiante
- ESTU_TIPODOCUMENTO
- ESTU_NACIONALIDAD
- ESTU_GENERO
- ESTU_FECHANACIMIENTO
- ESTU_CONSECUTIVO
- ESTU_ESTUDIANTE
- ESTU_PAIS_RESIDE
- ESTU_TIENEETNIA
- ESTU_ETNIA
- ESTU_DEPTO_RESIDE
- ESTU_COD_RESIDE_DEPTO
- ESTU_MCPIO_RESIDE
- ESTU_COD_RESIDE_MCPIO
- ESTU_PRIVADO_LIBERTAD
Categoría 2: Información familiar y socioeconómica
- FAMI_ESTRATOVIVIENDA
- FAMI_PERSONASHOGAR
- FAMI_CUARTOSHOGAR
- FAMI_EDUCACIONPADRE
- FAMI_EDUCACIONMADRE
- FAMI_TRABAJOLABORPADRE
- FAMI_TRABAJOLABORMADRE
- FAMI_TIENEINTERNET
- FAMI_TIENESERVICIOTV
- FAMI_TIENECOMPUTADOR
- FAMI_TIENELAVADORA
- FAMI_TIENEHORNOMICROOGAS
- FAMI_TIENEAUTOMOVIL
- FAMI_TIENEMOTOCICLETA
- FAMI_TIENECONSOLAVIDEOJUEGOS
- FAMI_NUMLIBROS
- FAMI_COMELECHEDERIVADOS
- FAMI_COMECARNEPESCADOHUEVO
- FAMI_COMECEREALFRUTOSLEGUMBRE
- FAMI_SITUACIONECONOMICA
- ESTU_INSE_INDIVIDUAL
- ESTU_NSE_INDIVIDUAL
- ESTU_NSE_ESTABLECIMIENTO
Categoría 3: Información académica y laboral del estudiante
- ESTU_DEDICACIONLECTURADIARIA
- ESTU_DEDICACIONINTERNET
- ESTU_HORASSEMANATRABAJA
- ESTU_TIPOREMUNERACION
- ESTU_ESTADOINVESTIGACION
- ESTU_PILOPAGA
Categoría 4: Información del colegio
- COLE_CODIGO_ICFES
- COLE_COD_DANE_ESTABLECIMIENTO
- COLE_NOMBRE_ESTABLECIMIENTO
- COLE_GENERO
- COLE_NATURALEZA
- COLE_CALENDARIO
- COLE_BILINGUE
- COLE_CARACTER
- COLE_COD_DANE_SEDE
- COLE_NOMBRE_SEDE
- COLE_SEDE_PRINCIPAL
- COLE_AREA_UBICACION
- COLE_JORNADA
- COLE_COD_MCPIO_UBICACION
- COLE_MCPIO_UBICACION
- COLE_COD_DEPTO_UBICACION
- COLE_DEPTO_UBICACION
Categoría 5: Información de la presentación del examen
- PERIODO
- ESTU_COD_MCPIO_PRESENTACION
- ESTU_MCPIO_PRESENTACION
- ESTU_DEPTO_PRESENTACION
- ESTU_COD_DEPTO_PRESENTACION
Categoría 6: Resultados de la prueba Saber 11
- PUNT_LECTURA_CRITICA
- PERCENTIL_LECTURA_CRITICA
- DESEMP_LECTURA_CRITICA
- PUNT_MATEMATICAS
- PERCENTIL_MATEMATICAS
- DESEMP_MATEMATICAS
- PUNT_C_NATURALES
- PERCENTIL_C_NATURALES
- DESEMP_C_NATURALES
- PUNT_SOCIALES_CIUDADANAS
- PERCENTIL_SOCIALES_CIUDADANAS
- DESEMP_SOCIALES_CIUDADANAS
- PUNT_INGLES
- PERCENTIL_INGLES
- DESEMP_INGLES
- PUNT_GLOBAL
- PERCENTIL_GLOBAL
# Consultamos datos estadisticos generales: numeros de elementos, media, desviación, valor minimo, porcentajes
df.describe().transpose()| count | mean | std | min | 25% | 50% | 75% | max | |
|---|---|---|---|---|---|---|---|---|
| PERIODO | 12527.0 | 2.018100e+04 | 0.000000e+00 | 2.018100e+04 | 2.018100e+04 | 2.018100e+04 | 2.018100e+04 | 2.018100e+04 |
| ESTU_COD_RESIDE_DEPTO | 12527.0 | 4.790053e+01 | 3.109914e+01 | 5.000000e+00 | 1.100000e+01 | 7.600000e+01 | 7.600000e+01 | 7.600000e+01 |
| ESTU_COD_RESIDE_MCPIO | 12527.0 | 4.796111e+04 | 3.111927e+04 | 5.001000e+03 | 1.100100e+04 | 7.600100e+04 | 7.600100e+04 | 7.689500e+04 |
| COLE_CODIGO_ICFES | 12527.0 | 8.921620e+04 | 1.367315e+05 | 1.820000e+02 | 1.934900e+04 | 4.644100e+04 | 1.061200e+05 | 7.146340e+05 |
| COLE_COD_DANE_ESTABLECIMIENTO | 12527.0 | 3.577158e+11 | 4.197414e+10 | 1.765200e+11 | 3.118480e+11 | 3.760010e+11 | 3.760010e+11 | 4.768921e+11 |
| COLE_COD_DANE_SEDE | 12527.0 | 3.576174e+11 | 4.195383e+10 | 1.765200e+11 | 3.118480e+11 | 3.760010e+11 | 3.760010e+11 | 4.768921e+11 |
| COLE_COD_MCPIO_UBICACION | 12527.0 | 4.849935e+04 | 3.063171e+04 | 5.001000e+03 | 1.100100e+04 | 7.600100e+04 | 7.600100e+04 | 7.689200e+04 |
| COLE_COD_DEPTO_UBICACION | 12527.0 | 4.839650e+01 | 3.064030e+01 | 5.000000e+00 | 1.100000e+01 | 7.600000e+01 | 7.600000e+01 | 7.600000e+01 |
| ESTU_COD_MCPIO_PRESENTACION | 12527.0 | 4.790827e+04 | 3.118285e+04 | 5.001000e+03 | 1.100100e+04 | 7.600100e+04 | 7.600100e+04 | 7.683400e+04 |
| ESTU_COD_DEPTO_PRESENTACION | 12527.0 | 4.785280e+01 | 3.117389e+01 | 5.000000e+00 | 1.100000e+01 | 7.600000e+01 | 7.600000e+01 | 7.600000e+01 |
| PUNT_LECTURA_CRITICA | 12527.0 | 6.426591e+01 | 9.022561e+00 | 2.900000e+01 | 5.900000e+01 | 6.500000e+01 | 7.100000e+01 | 1.000000e+02 |
| PERCENTIL_LECTURA_CRITICA | 12527.0 | 6.320029e+01 | 2.453513e+01 | 1.000000e+00 | 4.500000e+01 | 6.600000e+01 | 8.400000e+01 | 1.000000e+02 |
| DESEMP_LECTURA_CRITICA | 12527.0 | 3.409675e+00 | 6.386825e-01 | 1.000000e+00 | 3.000000e+00 | 3.000000e+00 | 4.000000e+00 | 4.000000e+00 |
| PUNT_MATEMATICAS | 12527.0 | 6.379428e+01 | 1.189882e+01 | 2.100000e+01 | 5.600000e+01 | 6.500000e+01 | 7.200000e+01 | 1.000000e+02 |
| PERCENTIL_MATEMATICAS | 12527.0 | 6.397637e+01 | 2.402950e+01 | 1.000000e+00 | 4.700000e+01 | 6.700000e+01 | 8.400000e+01 | 1.000000e+02 |
| DESEMP_MATEMATICAS | 12527.0 | 3.151034e+00 | 6.811860e-01 | 1.000000e+00 | 3.000000e+00 | 3.000000e+00 | 4.000000e+00 | 4.000000e+00 |
| PUNT_C_NATURALES | 12527.0 | 6.280267e+01 | 1.063723e+01 | 0.000000e+00 | 5.600000e+01 | 6.400000e+01 | 7.000000e+01 | 1.000000e+02 |
| PERCENTIL_C_NATURALES | 12527.0 | 6.420212e+01 | 2.384049e+01 | 1.000000e+00 | 4.700000e+01 | 6.700000e+01 | 8.400000e+01 | 1.000000e+02 |
| DESEMP_C_NATURALES | 12527.0 | 2.971981e+00 | 7.347994e-01 | 1.000000e+00 | 3.000000e+00 | 3.000000e+00 | 3.000000e+00 | 4.000000e+00 |
| PUNT_SOCIALES_CIUDADANAS | 12527.0 | 6.215742e+01 | 1.125163e+01 | 2.200000e+01 | 5.500000e+01 | 6.300000e+01 | 7.000000e+01 | 1.000000e+02 |
| PERCENTIL_SOCIALES_CIUDADANAS | 12527.0 | 6.310178e+01 | 2.483422e+01 | 1.000000e+00 | 4.500000e+01 | 6.600000e+01 | 8.400000e+01 | 1.000000e+02 |
| DESEMP_SOCIALES_CIUDADANAS | 12527.0 | 2.936298e+00 | 7.899843e-01 | 1.000000e+00 | 2.000000e+00 | 3.000000e+00 | 3.000000e+00 | 4.000000e+00 |
| PUNT_INGLES | 12527.0 | 7.050802e+01 | 1.388719e+01 | 0.000000e+00 | 6.000000e+01 | 7.300000e+01 | 8.200000e+01 | 1.000000e+02 |
| PERCENTIL_INGLES | 12527.0 | 6.484953e+01 | 2.306537e+01 | 1.000000e+00 | 4.800000e+01 | 6.700000e+01 | 8.400000e+01 | 1.000000e+02 |
| PUNT_GLOBAL | 12527.0 | 3.190647e+02 | 4.907322e+01 | 1.370000e+02 | 2.870000e+02 | 3.260000e+02 | 3.550000e+02 | 4.750000e+02 |
| PERCENTIL_GLOBAL | 12527.0 | 6.451217e+01 | 2.340080e+01 | 1.000000e+00 | 4.800000e+01 | 6.700000e+01 | 8.400000e+01 | 1.000000e+02 |
| ESTU_INSE_INDIVIDUAL | 12268.0 | 6.585032e+01 | 8.564458e+00 | 2.159309e+01 | 5.966838e+01 | 6.641709e+01 | 7.210113e+01 | 8.358035e+01 |
| ESTU_NSE_ESTABLECIMIENTO | 12430.0 | 3.272164e+00 | 5.884799e-01 | 1.000000e+00 | 3.000000e+00 | 3.000000e+00 | 4.000000e+00 | 4.000000e+00 |
Un resumen de las estadísticas descriptivas de las variables cuantitativas del año 2018
-
PERIODO:
- Todos los valores son iguales a 20181, lo que indica que los datos corresponden al mismo periodo.
-
ESTU_COD_RESIDE_MCPIO, COLE_COD_MCPIO_UBICACION y ESTU_COD_MCPIO_PRESENTACION:
- El 50% de los datos están entre los códigos 11001 (Bogotá) y 76001 (Cali).
-
Puntajes y percentiles en las áreas evaluadas (PUNT_LECTURA_CRITICA, PUNT_MATEMATICAS, PUNT_C_NATURALES, PUNT_SOCIALES_CIUDADANAS, PUNT_INGLES):
- Los puntajes promedio varían entre 62 y 70 puntos, con desviaciones estándar entre 9 y 13 puntos.
- Los percentiles promedio están alrededor de 63, con desviaciones estándar cercanas a 24.
-
Desempeños en las áreas evaluadas (DESEMP_LECTURA_CRITICA, DESEMP_MATEMATICAS, DESEMP_C_NATURALES, DESEMP_SOCIALES_CIUDADANAS):
- Los desempeños promedio varían entre 2.9 y 3.4, con desviaciones estándar pequeñas (menores a 1).
-
PUNT_GLOBAL y PERCENTIL_GLOBAL:
- El puntaje global promedio es de 319 puntos, con una desviación estándar de 49 puntos.
- El percentil global promedio es de 64.5, con una desviación estándar de 23.4.
-
ESTU_INSE_INDIVIDUAL:
- El índice socioeconómico individual promedio es de 65.85, con una desviación estándar de 8.56.
- El 50% de los estudiantes tienen un índice entre 59.67 y 72.10.
-
ESTU_NSE_ESTABLECIMIENTO:
- El nivel socioeconómico promedio de los establecimientos es de 3.27, con una desviación estándar pequeña (0.59).
- La mayoría de los establecimientos se encuentran en los niveles socioeconómicos 3 y 4.
# Consultamos numeros de filas y columnas, para estar seguros.
df.shape(12527, 82)# Consultamos si tenemos celdas con valores sin valores
null_counts = df.isnull().sum()
null_counts| 0 | |
|---|---|
| ESTU_TIPODOCUMENTO | 0 |
| ESTU_NACIONALIDAD | 0 |
| ESTU_GENERO | 0 |
| ESTU_FECHANACIMIENTO | 0 |
| PERIODO | 0 |
| ... | ... |
| ESTU_INSE_INDIVIDUAL | 259 |
| ESTU_NSE_INDIVIDUAL | 259 |
| ESTU_NSE_ESTABLECIMIENTO | 97 |
| ESTU_ESTADOINVESTIGACION | 0 |
| ESTU_PILOPAGA | 0 |
82 rows × 1 columns
# Filtramos las variables que tengan mas de un valor null con datos > 0
null_counts[null_counts > 0]| 0 | |
|---|---|
| ESTU_TIENEETNIA | 1 |
| ESTU_ETNIA | 12408 |
| FAMI_ESTRATOVIVIENDA | 464 |
| FAMI_PERSONASHOGAR | 283 |
| FAMI_CUARTOSHOGAR | 208 |
| FAMI_EDUCACIONPADRE | 433 |
| FAMI_EDUCACIONMADRE | 431 |
| FAMI_TRABAJOLABORPADRE | 254 |
| FAMI_TRABAJOLABORMADRE | 228 |
| FAMI_TIENEINTERNET | 419 |
| FAMI_TIENESERVICIOTV | 444 |
| FAMI_TIENECOMPUTADOR | 180 |
| FAMI_TIENELAVADORA | 173 |
| FAMI_TIENEHORNOMICROOGAS | 180 |
| FAMI_TIENEAUTOMOVIL | 198 |
| FAMI_TIENEMOTOCICLETA | 210 |
| FAMI_TIENECONSOLAVIDEOJUEGOS | 192 |
| FAMI_NUMLIBROS | 425 |
| FAMI_COMELECHEDERIVADOS | 441 |
| FAMI_COMECARNEPESCADOHUEVO | 454 |
| FAMI_COMECEREALFRUTOSLEGUMBRE | 451 |
| FAMI_SITUACIONECONOMICA | 199 |
| ESTU_DEDICACIONLECTURADIARIA | 436 |
| ESTU_DEDICACIONINTERNET | 458 |
| ESTU_HORASSEMANATRABAJA | 201 |
| ESTU_TIPOREMUNERACION | 254 |
| COLE_BILINGUE | 1404 |
| COLE_CARACTER | 124 |
| ESTU_INSE_INDIVIDUAL | 259 |
| ESTU_NSE_INDIVIDUAL | 259 |
| ESTU_NSE_ESTABLECIMIENTO | 97 |
Estos datos con valores en null son de estudiantes que no han respondido a esas preguntas (Por razones desconocidas), es importante tener esto en cuenta.
Ahora tratemos de ver las columnas, así en caso de volver no tenemos que ir viendo cada consulta o nos iremos perdiendo a la hora de buscar alguna variable al programar.
df.columnsIndex(['ESTU_TIPODOCUMENTO', 'ESTU_NACIONALIDAD', 'ESTU_GENERO',
'ESTU_FECHANACIMIENTO', 'PERIODO', 'ESTU_CONSECUTIVO',
'ESTU_ESTUDIANTE', 'ESTU_PAIS_RESIDE', 'ESTU_TIENEETNIA', 'ESTU_ETNIA',
'ESTU_DEPTO_RESIDE', 'ESTU_COD_RESIDE_DEPTO', 'ESTU_MCPIO_RESIDE',
'ESTU_COD_RESIDE_MCPIO', 'FAMI_ESTRATOVIVIENDA', 'FAMI_PERSONASHOGAR',
'FAMI_CUARTOSHOGAR', 'FAMI_EDUCACIONPADRE', 'FAMI_EDUCACIONMADRE',
'FAMI_TRABAJOLABORPADRE', 'FAMI_TRABAJOLABORMADRE',
'FAMI_TIENEINTERNET', 'FAMI_TIENESERVICIOTV', 'FAMI_TIENECOMPUTADOR',
'FAMI_TIENELAVADORA', 'FAMI_TIENEHORNOMICROOGAS', 'FAMI_TIENEAUTOMOVIL',
'FAMI_TIENEMOTOCICLETA', 'FAMI_TIENECONSOLAVIDEOJUEGOS',
'FAMI_NUMLIBROS', 'FAMI_COMELECHEDERIVADOS',
'FAMI_COMECARNEPESCADOHUEVO', 'FAMI_COMECEREALFRUTOSLEGUMBRE',
'FAMI_SITUACIONECONOMICA', 'ESTU_DEDICACIONLECTURADIARIA',
'ESTU_DEDICACIONINTERNET', 'ESTU_HORASSEMANATRABAJA',
'ESTU_TIPOREMUNERACION', 'COLE_CODIGO_ICFES',
'COLE_COD_DANE_ESTABLECIMIENTO', 'COLE_NOMBRE_ESTABLECIMIENTO',
'COLE_GENERO', 'COLE_NATURALEZA', 'COLE_CALENDARIO', 'COLE_BILINGUE',
'COLE_CARACTER', 'COLE_COD_DANE_SEDE', 'COLE_NOMBRE_SEDE',
'COLE_SEDE_PRINCIPAL', 'COLE_AREA_UBICACION', 'COLE_JORNADA',
'COLE_COD_MCPIO_UBICACION', 'COLE_MCPIO_UBICACION',
'COLE_COD_DEPTO_UBICACION', 'COLE_DEPTO_UBICACION',
'ESTU_PRIVADO_LIBERTAD', 'ESTU_COD_MCPIO_PRESENTACION',
'ESTU_MCPIO_PRESENTACION', 'ESTU_DEPTO_PRESENTACION',
'ESTU_COD_DEPTO_PRESENTACION', 'PUNT_LECTURA_CRITICA',
'PERCENTIL_LECTURA_CRITICA', 'DESEMP_LECTURA_CRITICA',
'PUNT_MATEMATICAS', 'PERCENTIL_MATEMATICAS', 'DESEMP_MATEMATICAS',
'PUNT_C_NATURALES', 'PERCENTIL_C_NATURALES', 'DESEMP_C_NATURALES',
'PUNT_SOCIALES_CIUDADANAS', 'PERCENTIL_SOCIALES_CIUDADANAS',
'DESEMP_SOCIALES_CIUDADANAS', 'PUNT_INGLES', 'PERCENTIL_INGLES',
'DESEMP_INGLES', 'PUNT_GLOBAL', 'PERCENTIL_GLOBAL',
'ESTU_INSE_INDIVIDUAL', 'ESTU_NSE_INDIVIDUAL',
'ESTU_NSE_ESTABLECIMIENTO', 'ESTU_ESTADOINVESTIGACION',
'ESTU_PILOPAGA'],
dtype='object')df.dtypes| 0 | |
|---|---|
| ESTU_TIPODOCUMENTO | object |
| ESTU_NACIONALIDAD | object |
| ESTU_GENERO | object |
| ESTU_FECHANACIMIENTO | object |
| PERIODO | int64 |
| ... | ... |
| ESTU_INSE_INDIVIDUAL | float64 |
| ESTU_NSE_INDIVIDUAL | object |
| ESTU_NSE_ESTABLECIMIENTO | float64 |
| ESTU_ESTADOINVESTIGACION | object |
| ESTU_PILOPAGA | object |
82 rows × 1 columns
Variables cuantitativas
Son aquellas que representan una cantidad numérica o medida. Estas variables pueden ser discretas o continuas.
- Variables cuantitativas discretas: Son aquellas que toman valores numéricos enteros y se pueden contar, como el número de personas en una familia o en este caso el periodo en el que se encuentra el estudiante.
- Variables cuantitativas continuas: Son aquellas que pueden tomar cualquier valor dentro de un rango, y generalmente se miden en una escala continua, como la altura de una persona o el peso de un objeto.
Variables cualitativas
Son aquellas que representan cualidades o características que no se pueden medir numéricamente. Estas variables se dividen en dos subtipos:
- Variables cualitativas nominales: Son aquellas que representan categorías sin un orden intrínseco, como el color de los ojos o la marca de un automóvil.
- Variables cualitativas ordinales: Son aquellas que representan categorías con un orden natural o jerarquía, como el nivel de educación (primaria, secundaria, universitaria).
Teniendo estas definiciones importantes para nuestro analisis prosigamos a categorizar las variables que usaremos.
-
Variables cuantitativas:
-
Variables cuantitativas continuas:
- Puntajes promedio en las áreas evaluadas (PUNT_LECTURA_CRITICA, PUNT_MATEMATICAS, PUNT_C_NATURALES, PUNT_SOCIALES_CIUDADANAS, PUNT_INGLES)
- Puntaje global (PUNT_GLOBAL)
- Índice socioeconómico del evaluado (ESTU_INSE_INDIVIDUAL)
-
Variables cuantitativas discretas:
- Periodo (PERIODO)
- Código DANE del municipio de ubicación de la sede (COLE_COD_MCPIO_UBICACION)
- Código DANE del departamento de ubicación de la sede (COLE_COD_DEPTO_UBICACION)
-
-
Variables cualitativas:
-
Variables cualitativas nominales:
- Municipio de ubicación de la sede (COLE_MCPIO_UBICACION)
- Departamento de ubicación de la sede (COLE_DEPTO_UBICACION)
- Naturaleza del establecimiento (COLE_NATURALEZA)
- Jornada de la sede (COLE_JORNADA)
- Género del evaluado (ESTU_GENERO)
- Disponibilidad de computador en el hogar (FAMI_TIENECOMPUTADOR)
- Acceso a internet en el hogar (FAMI_TIENEINTERNET)
-
Variables cualitativas ordinales:
- Estrato socioeconómico de la vivienda (FAMI_ESTRATOVIVIENDA)
- Nivel educativo más alto alcanzado por el padre (FAMI_EDUCACIONPADRE)
- Nivel educativo más alto alcanzado por la madre (FAMI_EDUCACIONMADRE)
- Nivel socioeconómico del evaluado (ESTU_NSE_INDIVIDUAL)
-
Como resumen tenemos información familiar, socioeconómica, academica (Trabajos de sus padres, cosas basicas materiales, titulaciones o nivel academico en el que petenezcan como su estrato) y laboral del estudiante como información personal, y detalle de como le fue en el icfes, ademas de saber donde estudia y presento el examen. Analizamos cada variable, sacamos las importantes, las categorizamos y sabemos que son, para que sirven y nos damos una idea de que podriamos hacer con ellas.
1.3 Importacion de los datasets
Como vimos al principio importamos un solo dataset SB11_20181.TXT para
explorar sus columnas, para comprobar que todo este bien miremos el periodo.
df['PERIODO']| PERIODO | |
|---|---|
| 0 | 20181 |
| 1 | 20181 |
| 2 | 20181 |
| 3 | 20181 |
| 4 | 20181 |
| ... | ... |
| 12522 | 20181 |
| 12523 | 20181 |
| 12524 | 20181 |
| 12525 | 20181 |
| 12526 | 20181 |
12527 rows × 1 columns
De momento esta todo bien, coincide con periodo y año con el archivo, asi que
es hora de importar los demas años y guardarlos todos en una sola variable, si
mantenemos variables separadas con datasets sera mucho mas complejo por lo que
iremos trabajando y filtrando por la columna PERIODO.
import csv
import io
def read_csv_replace_null(file, encoding):
with open(file, 'r', encoding=encoding, errors='replace') as f:
content = f.read().replace('