Proyecto de análisis de mercado | Continuidad en el programa jovenes en acción¶
Informe final de la investigación (pdf):
Descripción general de las fases del análisis.¶
Para la realización de este análisis de mercado se establen las siguientes 5 grandes etapas:
- FaseADM-1 Business Question.
- ADM-1.1 Definición del tema central.
- ADM-1.2 Establecer la pregunta sistémica por resolver.
- ADM-1.3 Proyectar los objetivos a lograr con la investigación.
- ADM-1.4 Crear el plan de trabajo.
- ADM-1.5 Investigar los recursos técnicos disponibles para trabajar.
- ADM-1.6 Asignar los roles de los participantes de la investigación.
- Fase ADM-2 Data collection.
- ADM-2.1 Definir los medios y fuentes para la recolección y obtención de los datos.
- ADM-2.2 Iniciar la recolección de los datos.
- ADM-2.3 Realizar la elección de los datos a utilizar.
- ADM-2.4 Analizar la calidad de los datos.
- Fase ADM-3 Prepare and explore data.
- ADM-3.1 Eliminación de los datos duplicados.
- ADM-3.2 Imputación o eliminación de los datos nulos o vacíos.
- ADM-3.3 Tratamiento de los datos atípicos.
- ADM-3.4 Normalización y estandarización del conjunto de datos.
- ADM-3.5 Codificación de variables categóricas a cuantitativas.
- ADM-3.6 Selección de categorías de mayor importancia para el análisis.
- Fase ADM-4 Data analysis.
- ADM-4.1 Determinar el nivel de correlación entre variables.
- ADM-4.2 Explorar las variables estadísticas descriptivas.
- ADM-4.3 Realizar visualizaciones de los datos.
- ADM-4.4 Evolución de las variables en series de tiempo.
- Fase ADM-5 Present Findings.
- ADM-5.1 Creación del contexto para el lector de la información.
- ADM-5.2 Enseñar los hallazgos claves.
- ADM-5.2 Enseñar los hallazgos incidentales
Configuraciones previas del notebook.¶
- Se usara python y las librerias de numpy y pandas para realizar la limpieza y tratamiento de los datos.
- Para la visualización de las variables en graficos se usara las librerias de matplotlib y seaborn.
- Para el tratamiento de fechas se usara datetime para el tratamiento de fechas.
import numpy as np
import pandas as pd
import datetime as dt
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_theme(
style="ticks",
palette= "Set2",
rc={"axes.spines.right": False,
"axes.spines.top": False,
"axes.edgecolor": "gray",
"axes.linewidth": 1.75,
"xtick.color": "gray",
"ytick.color": "gray",
"text.color": "dimgray",
"axes.labelcolor": "dimgray",
"axes.labelweight": "semibold",
"axes.titlecolor": "dimgray",
"axes.titleweight": "semibold",
"axes.titlepad": 20
}
)
ADM-1 Business Question.¶
ADM-1.0 Descripción de la etapa de business question.¶
Descripción:
Primera etapa del análisis de mercado, que se estructura y se definirá los siguientes objetivos:
- ADM-1.1 Definición del tema central.
- ADM-1.2 Establecer la pregunta sistémica por resolver.
- ADM-1.3 Proyectar los objetivos a lograr con la investigación.
- ADM-1.4 Crear el plan de trabajo.
- ADM-1.5 Investigar los recursos técnicos disponibles para trabajar:
- Selección de las tecnologías a usar.
- Fuentes de datos previas para utilizar.
- Qué nivel de acceso a la información se puede obtener.
- El volumen de datos a manejar.
- ADM-1.6 Asignar los roles de los participantes de la investigación.
- Stakeholder (Cliente).
- Data analyst (Administrador 1)
- Product owner (Administrador 2).
ADM-1.1 Definición del tema central.¶
Descripción:
Establecer una temática principal, permite crear de forma practica la pregunta causal de la investigación, por ende, se realiza la preselección de los siguientes temas como posibles opciones para elegir:
- Inclusión social y reconciliación.
- Tecnología e información.
- Ambiente y desarrollo sostenible
- Finanzas y economía.
Para realizar la elección se tiene en cuenta los parámetros, requerimientos, obligaciones y restricciones que se deben cumplir en la realización de esta actividad académica por lo cual se define como el tema central:
Inclusión social y reconciliación.
ADM-1.2 Establecer la pregunta sistémica por resolver.¶
Teniendo la inclusión social y reconciliación como tema central se puede empezar a definir las bases de la pregunta sistémica, entendiendo que el tema elegido tiene gran amplitud de frentes, se decide generar la siguiente lista de subcategorías a elegir:
- Víctimas del conflicto armado.
- Adultos mayores.
- Niños.
- Adolescentes.
- Equidad de género.
Se decide escoger Adolescentes.
El principal programa de intervención que realiza prosperidad social en los últimos años es jóvenes en acción. En base a es enunciado se genera la siguiente pregunta:
¿Cuantos de los jovenes en acción decidieron continuar con su proceso formativo (Tecnico > Tecnologico > Pregrado)?
ADM-1.3 Proyectar los objetivos a lograr con la investigación.¶
Ficha tecnica:
- Título de la Investigación:
¿Cuántos de los beneficiarios decidieron continuar con su proceso formativo (técnico > tecnológico > Pregrado)?
2. Objetivos de la Investigación:
* Evaluar el impacto de jóvenes en acción en la continuidad académica de sus beneficiarios.
* Identificar los factores que influyen en la decisión de continuar sus estudios.
* Determinar las percepciones y experiencias de los beneficiarios con respecto al subsidio.
* Que tanto conocimiento tienen los beneficiarios sobre los alcances del programa.
3. Metodología:
* Diseño de la investigación: Estudio descriptivo y correlacional.
* Población objetivo: Beneficiarios de jóvenes en acción.
* Muestra: Selección aleatoria de beneficiarios.
* Técnicas de recolección de datos: Encuestas y entrevistas.
* Variables para medir: Continuidad académica, percepciones y experiencias del subsidio, factores de influencia.
* Análisis de datos: Estadístico descriptivo, correlacional y cualitativo de las bases de datos públicos de prosperidad social y de las obtenidas en las encuestas y entrevistas.
4. Procedimiento:
* Obtención de permisos y aprobaciones éticas necesarias.
* Diseño de los instrumentos de recolección de datos (cuestionario y guía de entrevistas).
* Selección y reclutamiento de la muestra de beneficiarios.
* Aplicación de los cuestionarios y realización de las entrevistas.
* Registro y codificación de los datos recolectados.
* Análisis de los datos utilizando técnicas estadísticas y cualitativas.
* Interpretación de los resultados y formulación de conclusiones.
* Elaboración del informe final de la investigación.
5. Cronograma:
* Fase 1 - Business Question (2 semanas).
* Fase 2 - Data collection (2 semanas).
* Fase 3 - Prepare and explore data (2 semanas).
* Fase 4 - Data análisis (2 semanas).
* Fase 5 - Present Findings (2 semanas).
6. Recursos:
* Personal: Analista de datos, encuestador.
* Materiales: Encuesta digital, bases de datos públicas.
* Tecnología: Software de análisis de datos (Python y Power BI), herramientas de presentación (Power Point).
7. Conceptualización:
Contextualizar a los encuestados de los que es jóvenes en acción, cual es el objetivo del programa y cuáles son los alcances ya sea en tiempo o en recursos económicos.
8. Limitaciones y Consideraciones éticas:
* Posibles sesgos de respuesta por parte de los participantes.
* Respetar la privacidad y confidencialidad de los participantes.
* Garantizar el consentimiento informado de los participantes.
* Mantener la confidencialidad de los datos recolectados.
ADM-8 Proyectar los objetivos a lograr con la investigación.¶
Ficha tecnica de la investigación:
ADM-1.5 Investigar los recursos técnicos disponibles para trabajar.¶
Selección de las tecnologías a usar:
- Python.
- Power bi.
Fuentes de datos previas para utilizar:
- Datos públicos de la página de datos.gov.co.
Qué nivel de acceso a los datos se puede obtener:
- Fuentes abiertas (Directo).
- Encuestas (Directo, Virtual).
- Entrevistas (Directo, Virtual).
El volumen de datos a manejar.
- Fuentes abiertas (Base de datos con 260.000 registros).
- Encuestas (Por definir).
- Entrevistas (Por definir).
ADM-1.6 Asignar los roles de los participantes de la investigación.¶
- Stakeholders (Julio Loaiza).
- Data analyst (Miguel Gutierrez).
- Product owner (Mardubil Rojas).
ADM-2 Data collection.¶
Descripción de la etapa de data collection.¶
Se iniciará la obtención de los datos, tomando las siguientes 4 actividades:
- ADM-2.1 Definir los medios y fuentes para la recolección y obtención de los datos.
- ADM-2.2 Iniciar la recolección de los datos.
- ADM-2.3 Realizar la elección de los datos a utilizar.
- ADM-2.4 Analizar la calidad de los datos.
ADM-2.1 Definir los medios y fuentes para la recolección y obtención de los datos.¶
Fuentes cerradas (Directas):
Fuentes abiertas (Indirectas):
ADM-2.2 Iniciar la recolección de los datos.¶
Descripción: Obtenemos la muestra objetivo a lograr en base al total de los datos obtenidos de la base de datos de jóvenes en acción.
ADM-2.3 Realizar la elección de los datos a utilizar.¶
Descripción:
Para determinar que categorias debemos utilizar se realizara un analisis previo de que datos son los que se disponen de las fuentes abiertas, ya que los datos recolectados de manera manual se han definido de forma previa para que cada categoria sea util y asi optimizar el tiempo necesario para su obtención.
- CantidadDeBeneficiarios
- CantidadBeneficioConsolidado
- CantidadUltimobeneficio
- CodigoDepartamentoAtencion
- CodigoMunicipioAtencion
- CondicionSexual
- Discapacidad
- EstadoBeneficiario
- EstadoCivil
- Etnia
- FechaInscripcionBeneficiario
- FechaUltimoBeneficioAsignado
- Genero
- NivelEscolaridad
- NombreDepartamentoAtencion
- NombreMunicipioAtencion
- País
- RangoEdad
- TipoAsignacionBeneficio
- TipoBeneficio
- TipoDocumento
- TipoPoblacion
- ValorBeneficioConsolidadoAsignado
- ValorUltimoBeneficioAsignado
En la base de datos publica podemos encontrar que existe una gran cantidad de categorías, 24 en total, por ende, se decide analizar los estadísticos de cada columna para observar que tan útil seria la información que nos brindaría cada una de estas.
#Importamos el archivo .csv con el metodo .read_csv()
df = pd.read_csv('Data/Beneficiarios_Jovenes_en_Accion.csv')
df.head()
CantidadDeBeneficiarios | CantidadBeneficioConsolidado | CantidadUltimobeneficio | CodigoDepartamentoAtencion | CodigoMunicipioAtencion | CondicionSexual | Discapacidad | EstadoBeneficiario | EstadoCivil | Etnia | ... | NombreDepartamentoAtencion | NombreMunicipioAtencion | Pais | RangoEdad | TipoAsignacionBeneficio | TipoBeneficio | TipoDocumento | TipoPoblacion | ValorBeneficioConsolidadoAsignado | ValorUltimoBeneficioAsignado | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 0 | 0 | 54 | 54518 | ND | NO | NO ACTIVO | Sin Información | ND | ... | NORTE DE SANTANDER | PAMPLONA | Colombia | 30-49 | INCENTIVO MONETARIO CONDICIONADO A LA FORMACION | MONETARIO | CC | SISBEN | 0 - 1.500.000 | 0 - 1.300.000 |
1 | 1 | 0 | 0 | 18 | 18001 | ND | NO | ACTIVO | Sin Información | ND | ... | CAQUETA | FLORENCIA | ND | 18-29 | INCENTIVO MONETARIO CONDICIONADO A LA FORMACION | MONETARIO | CC | SISBEN | 0 - 1.500.000 | 0 - 1.300.000 |
2 | 1 | 0 | 0 | 13 | 13001 | ND | NO | NO ACTIVO | Sin Información | ND | ... | BOLIVAR | CARTAGENA | Colombia | 30-49 | INCENTIVO MONETARIO CONDICIONADO A LA FORMACION | MONETARIO | CC | SISBEN | 0 - 1.500.000 | 0 - 1.300.000 |
3 | 1 | 0 | 0 | 25 | 25754 | ND | NO | ACTIVO | Sin Información | ND | ... | CUNDINAMARCA | SOACHA | ND | 18-29 | INCENTIVO MONETARIO CONDICIONADO A LA FORMACION | MONETARIO | TI | SISBEN | 1.500.001 - 3.000.000 | 0 - 1.300.000 |
4 | 31 | 0 | 0 | 47 | 47001 | ND | ND | ACTIVO | Sin Información | ND | ... | MAGDALENA | SANTA MARTA | 57 | 18-29 | INCENTIVO MONETARIO CONDICIONADO A LA FORMACION | MONETARIO | CC | SISBEN | 0 - 1.500.000 | 0 - 1.300.000 |
5 rows × 24 columns
#Obtenemos los encabezados de cada columna con el metodo .columns,
#Se convierte en una lista con la función list() y se obtinene su longitud con la función len() para saber el # total de columnas
print(df.columns, '\n\n# Total de columnas:', len(list(df.columns)))
Index(['CantidadDeBeneficiarios', 'CantidadBeneficioConsolidado', 'CantidadUltimobeneficio', 'CodigoDepartamentoAtencion', 'CodigoMunicipioAtencion', 'CondicionSexual', 'Discapacidad', 'EstadoBeneficiario', 'EstadoCivil', 'Etnia', 'FechaInscripcionBeneficiario', 'FechaUltimoBeneficioAsignado', 'Genero', 'NivelEscolaridad', 'NombreDepartamentoAtencion', 'NombreMunicipioAtencion', 'Pais', 'RangoEdad', 'TipoAsignacionBeneficio', 'TipoBeneficio', 'TipoDocumento', 'TipoPoblacion', 'ValorBeneficioConsolidadoAsignado', 'ValorUltimoBeneficioAsignado'], dtype='object') # Total de columnas: 24
#Usamos el metodo .describe para obtener las estadisticas generales del conjunto de datos, en este caso de los datos cuantitativos.
round(df.describe(), 1)
CantidadDeBeneficiarios | CantidadBeneficioConsolidado | CantidadUltimobeneficio | CodigoDepartamentoAtencion | CodigoMunicipioAtencion | |
---|---|---|---|---|---|
count | 260112.0 | 260112.0 | 260112.0 | 260112.0 | 260112.0 |
mean | 1.6 | 0.0 | 0.0 | 37.1 | 37280.2 |
std | 4.1 | 0.0 | 0.0 | 26.8 | 26805.3 |
min | 1.0 | 0.0 | 0.0 | 5.0 | 5001.0 |
25% | 1.0 | 0.0 | 0.0 | 13.0 | 13001.0 |
50% | 1.0 | 0.0 | 0.0 | 25.0 | 25754.0 |
75% | 1.0 | 0.0 | 0.0 | 66.0 | 66001.0 |
max | 402.0 | 0.0 | 0.0 | 99.0 | 99773.0 |
#Usamos el metodo .describe para obtener las estadisticas generales del conjunto de datos, en este caso de los datos cualitativos.
df.describe(exclude=[np.number])
CondicionSexual | Discapacidad | EstadoBeneficiario | EstadoCivil | Etnia | FechaInscripcionBeneficiario | FechaUltimoBeneficioAsignado | Genero | NivelEscolaridad | NombreDepartamentoAtencion | NombreMunicipioAtencion | Pais | RangoEdad | TipoAsignacionBeneficio | TipoBeneficio | TipoDocumento | TipoPoblacion | ValorBeneficioConsolidadoAsignado | ValorUltimoBeneficioAsignado | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
count | 260112 | 260112 | 260112 | 260112 | 260112 | 260112 | 260112 | 260112 | 260112 | 260112 | 260112 | 260112 | 260112 | 260112 | 260112 | 260112 | 260112 | 260112 | 260112 |
unique | 10 | 3 | 2 | 7 | 9 | 50 | 1 | 3 | 7 | 33 | 1018 | 5 | 5 | 1 | 1 | 5 | 5 | 5 | 4 |
top | ND | NO | NO ACTIVO | Sin Información | ND | 2014-07-01 | 1900-01-01 | Mujer | ND | ANTIOQUIA | BOGOTA D.C. | ND | 18-29 | INCENTIVO MONETARIO CONDICIONADO A LA FORMACION | MONETARIO | CC | SISBEN | 1.500.001 - 3.000.000 | 0 - 1.300.000 |
freq | 258915 | 174578 | 158945 | 249807 | 242782 | 29570 | 260112 | 144076 | 138197 | 25672 | 19476 | 135841 | 213376 | 260112 | 260112 | 169793 | 206694 | 77971 | 257220 |
Se puede observar que varias de las variables categoricas tienen como dato top o moda ND (no esta disponible) o que por su propia descripción no son relevantes para la investigación y datos cuantitativos que contiene valores como codigos de municipio y departamento cuando ya hay columnas con los nombres explicitos, por esto se realiza una nueva base de datos (df_1) con estas categorias eliminadas y ajustando los nombres de algunas columnas para hacerlo mucho mas legibles.
#Se usa el metodo .drop() para eliminar las columnas innecesarias y las restantes se asignan a la variable df_1
df_1 = df.drop(columns = ['CantidadDeBeneficiarios', 'CantidadBeneficioConsolidado', 'CantidadUltimobeneficio', 'CodigoDepartamentoAtencion',
'CodigoMunicipioAtencion', 'CondicionSexual', 'Pais'])
#Se cambian los nombres de ciertas columnas para facilitar su legibilidad con el metodo .replace()
#T. = tipo, N. = nivel, V. = valor
df_1.columns = ['Discapacidad', 'Estado', 'Estado Civil', 'Etnia',
'Fecha Inicial', 'Fecha Final', 'Genero', 'N. Escolaridad', 'Departamento',
'Municipio', 'Rango Edad', 'T. Asignacion',
'T. Beneficio', 'T. Documento', 'T. Poblacion', 'V. Total Asignado', 'V. Ult. Asignado']
#Volvemos hacer la misma impreción del antepenultimo paso para ver las columnas y su cantidad
print(df_1.columns, '\n\n# Total de columnas:', len(list(df_1.columns)))
Index(['Discapacidad', 'Estado', 'Estado Civil', 'Etnia', 'Fecha Inicial', 'Fecha Final', 'Genero', 'N. Escolaridad', 'Departamento', 'Municipio', 'Rango Edad', 'T. Asignacion', 'T. Beneficio', 'T. Documento', 'T. Poblacion', 'V. Total Asignado', 'V. Ult. Asignado'], dtype='object') # Total de columnas: 17
ADM-2.4 Analizar la calidad de los datos.¶
Se encuentra que la base de datos no contiene registros vacios, todos las categorias de los tipos de datos son de tipo objeto, se debera realizar cambios de categorias como en las fechas y los datos cuantitativos.
#Se usa el metodo .info() para saber cual es el estado de los datos
df_1.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 260112 entries, 0 to 260111 Data columns (total 17 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Discapacidad 260112 non-null object 1 Estado 260112 non-null object 2 Estado Civil 260112 non-null object 3 Etnia 260112 non-null object 4 Fecha Inicial 260112 non-null object 5 Fecha Final 260112 non-null object 6 Genero 260112 non-null object 7 N. Escolaridad 260112 non-null object 8 Departamento 260112 non-null object 9 Municipio 260112 non-null object 10 Rango Edad 260112 non-null object 11 T. Asignacion 260112 non-null object 12 T. Beneficio 260112 non-null object 13 T. Documento 260112 non-null object 14 T. Poblacion 260112 non-null object 15 V. Total Asignado 260112 non-null object 16 V. Ult. Asignado 260112 non-null object dtypes: object(17) memory usage: 33.7+ MB
#Se modifica el tipo de dato para las columnas de fecha inicial y fecha final con el metodo .to_datetime()
df_1['Fecha Inicial'] = pd.to_datetime(df_1['Fecha Inicial'], format = '%Y-%m-%d')
df_1['Fecha Final'] = pd.to_datetime(df_1['Fecha Final'], format = '%Y-%m-%d')
df_1.dtypes
Discapacidad object Estado object Estado Civil object Etnia object Fecha Inicial datetime64[ns] Fecha Final datetime64[ns] Genero object N. Escolaridad object Departamento object Municipio object Rango Edad object T. Asignacion object T. Beneficio object T. Documento object T. Poblacion object V. Total Asignado object V. Ult. Asignado object dtype: object
# Se crean 3 nuevas variables correspondientes al año, # de mes y el nombre del mes
df_1['Año'] = df_1['Fecha Inicial'].dt.year.astype('object')
df_1['# Mes'] = df_1['Fecha Inicial'].dt.month.astype('object')
df_1['Mes'] = df_1['Fecha Inicial'].dt.month_name()
#Se analizan los registros unicos de cada categoria para encontrar la distribución de los registros
columnas_df_1 = ['Discapacidad', 'Estado', 'Estado Civil', 'Etnia', 'Año', 'Genero', 'N. Escolaridad', 'Rango Edad', 'T. Asignacion', 'T. Beneficio', 'T. Documento', 'T. Poblacion', 'V. Total Asignado', 'V. Ult. Asignado']
for a in columnas_df_1:
print(
f"***{a}***\n",
f"\n{df_1[a].value_counts()}\n",
"\n-----------------------------------\n" )
***Discapacidad*** NO 174578 ND 85093 SI 441 Name: Discapacidad, dtype: int64 ----------------------------------- ***Estado*** NO ACTIVO 158945 ACTIVO 101167 Name: Estado, dtype: int64 ----------------------------------- ***Estado Civil*** Sin Información 249807 SO 6024 ND 3974 UL 264 CA 33 DI 8 VI 2 Name: Estado Civil, dtype: int64 ----------------------------------- ***Etnia*** ND 242782 AFROCOLOMBIANO – NEGRO 11291 INDIGENA 5410 MESTIZO 224 RAIZAL 106 PALENQUERO 98 ROM O GITANO 94 ROM 68 AFROCOLOMBIANO - NEGRO 39 Name: Etnia, dtype: int64 ----------------------------------- ***Año*** 2014 94089 2015 64148 2013 52023 2017 36033 2018 13368 2016 451 Name: Año, dtype: int64 ----------------------------------- ***Genero*** Mujer 144076 Hombre 115969 ND 67 Name: Genero, dtype: int64 ----------------------------------- ***N. Escolaridad*** ND 138197 TECNOLOGO 54443 TECNICO 31243 PREGRADO 29639 SIN ESPECIFICAR 6420 SECUNDARIA 168 PRIMARIA 2 Name: N. Escolaridad, dtype: int64 ----------------------------------- ***Rango Edad*** 18-29 213376 30-49 46534 >65 115 06-17 68 50-65 19 Name: Rango Edad, dtype: int64 ----------------------------------- ***T. Asignacion*** INCENTIVO MONETARIO CONDICIONADO A LA FORMACION 260112 Name: T. Asignacion, dtype: int64 ----------------------------------- ***T. Beneficio*** MONETARIO 260112 Name: T. Beneficio, dtype: int64 ----------------------------------- ***T. Documento*** CC 169793 TI 89699 RC 478 No Definido 111 CE 31 Name: T. Documento, dtype: int64 ----------------------------------- ***T. Poblacion*** SISBEN 206694 DESPLAZADOS 33321 UNIDOS 15626 INDIGENAS 4117 ICBF 354 Name: T. Poblacion, dtype: int64 ----------------------------------- ***V. Total Asignado*** 1.500.001 - 3.000.000 77971 0 - 1.500.000 58016 3.000.001 - 4.500.000 51394 4.500.001 - 6.000.000 42000 > 6.000.001 30731 Name: V. Total Asignado, dtype: int64 ----------------------------------- ***V. Ult. Asignado*** 0 - 1.300.000 257220 1.300.001 - 2.600.000 2729 2.600.001 - 3.900.000 161 > 3.900.001 2 Name: V. Ult. Asignado, dtype: int64 -----------------------------------
Se puede la distribución de los datos del nivel de escolaridad y el rango de edad, resaltando la gran cantidad de datos ND encontrados en el nivel de escolaridad.
data_1 = pd.pivot_table(data=df_1[['N. Escolaridad', 'T. Documento']], index='N. Escolaridad', values='T. Documento', aggfunc='count', sort=False).sort_values(by='T. Documento', ascending=False)
data_2 = pd.pivot_table(data=df_1[['Rango Edad', 'T. Documento']], index='Rango Edad', values='T. Documento', aggfunc='count', sort=False).sort_values(by='Rango Edad', ascending=False)
fig, ax = plt.subplots(nrows=2, ncols=1, figsize=(9,8))
graf_1 = sns.barplot(ax=ax[0], data=data_1, y=data_1.index, x='T. Documento')
graf_1.bar_label(graf_1.containers[0], fontsize=10)
ax[0].set_title('Distribución de la categoria "Nivel de escolaridad"')
ax[0].set_xlabel('')
ax[0].set_ylabel('')
ax[0].set_xlim(0, 160000)
ax[0].set_xticks(ticks=range(0, 160001, 20000))
ax[0].set_xticklabels(labels=[(str(x) + " mil") for x in range(0, 161, 20)])
ax[0].set_yticklabels(labels=data_1.index.str.capitalize())
graf_2 = sns.barplot(ax=ax[1], data=data_2, y=data_2.index, x='T. Documento')
graf_2.bar_label(graf_2.containers[0], fontsize=10)
ax[1].set_title('Distribución de la categoria "Rango de edad"')
ax[1].set_xlabel('')
ax[1].set_ylabel('')
ax[1].set_xlim(0, 250000)
ax[1].set_xticks(ticks=range(0, 250001, 50000))
ax[1].set_xticklabels(labels=[(str(x) + " mil") for x in range(0, 251, 50)])
plt.subplots_adjust(hspace=0.4)
plt.show()
Nuevamente el tipo de registros ND toma una parte significativa en algunas de las categorías como lo es el caso de “Discapacidad”, esto probablemente producto de una mala recolección.
data_3 = pd.pivot_table(data=df_1[['Discapacidad', 'T. Documento']], index='Discapacidad', values='T. Documento', aggfunc='count', sort=False).sort_values(by='T. Documento', ascending=False)
data_4 = pd.pivot_table(data=df_1[['Genero', 'T. Documento']], index='Genero', values='T. Documento', aggfunc='count', sort=False).sort_values(by='T. Documento', ascending=False)
fig, ax = plt.subplots(nrows=2, ncols=1, figsize=(9,7))
graf_3 = sns.barplot(ax=ax[0], data=data_3, y=data_3.index, x='T. Documento')
graf_3.bar_label(graf_3.containers[0], fontsize=10)
ax[0].set_title('Distribución de la categoria "Discapacidad"')
ax[0].set_xlabel('')
ax[0].set_ylabel('')
ax[0].set_xlim(0, 180000)
ax[0].set_xticks(ticks=range(0, 180001, 30000))
ax[0].set_xticklabels(labels=[(str(x) + " mil") for x in range(0, 181, 30)])
ax[0].set_yticklabels(labels=data_3.index.str.capitalize())
graf_4 = sns.barplot(ax=ax[1], data=data_4, y=data_4.index, x='T. Documento')
graf_4.bar_label(graf_4.containers[0], fontsize=10)
ax[1].set_title('Distribución de la categoria "Genero"')
ax[1].set_xlabel('')
ax[1].set_ylabel('')
ax[1].set_xlim(0, 150000)
ax[1].set_xticks(ticks=range(0, 150001, 30000))
ax[1].set_xticklabels(labels=[(str(x) + " mil") for x in range(0, 151, 30)])
plt.subplots_adjust(hspace=0.5)
plt.show()
Parece un patrón recurrente que en cierto tipo de categorías el dato ND se hace presente, se puede partir del supuesto que la recolección de datos en años anteriores no fue muy buena.
data_5 = pd.pivot_table(data=df_1[['Etnia', 'T. Documento']], index='Etnia', values='T. Documento', aggfunc='count', sort=False).sort_values(by='T. Documento', ascending=False)
data_6 = pd.pivot_table(data=df_1[['Estado', 'T. Documento']], index='Estado', values='T. Documento', aggfunc='count', sort=False).sort_values(by='T. Documento', ascending=False)
fig, ax = plt.subplots(nrows=2, ncols=1, figsize=(9,10))
graf_5 = sns.barplot(ax=ax[0], data=data_5, y=data_5.index, x='T. Documento')
graf_5.bar_label(graf_5.containers[0], fontsize=10)
ax[0].set_title('Distribución de la categoria "Etnia"')
ax[0].set_xlabel('')
ax[0].set_ylabel('')
ax[0].set_xlim(0, 260000)
ax[0].set_xticks(ticks=range(0, 300001, 50000))
ax[0].set_xticklabels(labels=[(str(x) + " mil") for x in range(0, 301, 50)])
ax[0].set_yticklabels(labels=data_5.index.str.capitalize())
graf_6 = sns.barplot(ax=ax[1], data=data_6, y=data_6.index, x='T. Documento')
graf_6.bar_label(graf_6.containers[0], fontsize=10)
ax[1].set_title('Distribución de la categoria "Estado"')
ax[1].set_xlabel('')
ax[1].set_ylabel('')
ax[1].set_xlim(0, 180000)
ax[1].set_xticks(ticks=range(0, 180001, 30000))
ax[1].set_xticklabels(labels=[(str(x) + " mil") for x in range(0, 181, 30)])
ax[1].set_yticklabels(labels=data_6.index.str.capitalize())
plt.subplots_adjust(hspace=0.3)
plt.show()
A nivel geográfico no se mantiene la misma proporción entre los departamentos con mayor número de beneficiarios y sus municipios.
data_7 = pd.pivot_table(data=df_1[['Departamento', 'T. Documento']], index='Departamento', values='T. Documento', aggfunc='count', sort=False).sort_values(by='T. Documento', ascending=False).head(10)
data_8 = pd.pivot_table(data=df_1[['Municipio', 'T. Documento']], index='Municipio', values='T. Documento', aggfunc='count', sort=False).sort_values(by='T. Documento', ascending=False).head(10)
fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(15,6))
graf_7 = sns.barplot(ax=ax[0], data=data_7, y=data_7.index, x='T. Documento')
graf_7.bar_label(graf_7.containers[0], fontsize=10)
ax[0].set_title('Distribución top 10 de la categoria "Departamento"')
ax[0].set_xlabel('')
ax[0].set_ylabel('')
ax[0].set_xlim(0, 30000)
ax[0].set_xticks(ticks=range(0, 30001, 5000))
ax[0].set_xticklabels(labels=[(str(x) + " mil") for x in range(0, 31, 5)])
ax[0].set_yticklabels(labels=data_7.index.str.capitalize())
graf_8 = sns.barplot(ax=ax[1], data=data_8, y=data_8.index, x='T. Documento')
graf_8.bar_label(graf_8.containers[0], fontsize=10)
ax[1].set_title('Distribución top 10 de la categoria "Municipio"')
ax[1].set_xlabel('')
ax[1].set_ylabel('')
ax[1].set_xlim(0, 21000)
ax[1].set_xticks(ticks=range(0, 21001, 3000))
ax[1].set_xticklabels(labels=[(str(x) + " mil") for x in range(0, 22, 3)])
ax[1].set_yticklabels(labels=data_8.index.str.capitalize())
plt.subplots_adjust(wspace=0.4)
plt.show()
Estas dos categorías resultan poco útiles para el análisis debido que solo tienen un tipo de registro por lo cual deberán ser eliminadas de la base de datos.
data_7 = pd.pivot_table(data=df_1[['T. Beneficio', 'T. Documento']], index='T. Beneficio', values='T. Documento', aggfunc='count', sort=False).sort_values(by='T. Documento', ascending=False)
data_8 = pd.pivot_table(data=df_1[['T. Asignacion', 'T. Documento']], index='T. Asignacion', values='T. Documento', aggfunc='count', sort=False).sort_values(by='T. Documento', ascending=False)
fig, ax = plt.subplots(nrows=2, ncols=1, figsize=(9,5), sharex=True)
graf_7 = sns.barplot(ax=ax[0], data=data_7, y=data_7.index, x='T. Documento')
graf_7.bar_label(graf_7.containers[0], fontsize=10)
ax[0].set_title('Distribución de la categoria "Tipo de beneficio"')
ax[0].set_xlabel('')
ax[0].set_ylabel('')
ax[0].set_yticklabels(labels=data_7.index.str.capitalize())
graf_8 = sns.barplot(ax=ax[1], data=data_8, y=data_8.index, x='T. Documento')
graf_8.bar_label(graf_8.containers[0], fontsize=10)
ax[1].set_title('Distribución de la categoria "Tipo de asignacion"')
ax[1].set_xlabel('')
ax[1].set_ylabel('')
ax[1].set_xlim(0, 270000)
ax[1].set_xticks(ticks=range(0, 270001, 30000))
ax[1].set_xticklabels(labels=[(str(x) + " mil") for x in range(0, 271, 30)])
ax[1].set_yticks(ticks=range(0,1))
ax[1].set_yticklabels(labels=['Incentivo\nmonetario\ncondicionado\na la formación'])
plt.subplots_adjust(hspace=0.5)
plt.show()
En la base de datos apenas si hay registros del año 2016, no se sabe cuál sea la justificación de esta ausencia, también se ve que julio es el mes donde más se inscriben beneficiarios.
data_9 = pd.pivot_table(data=df_1[['Año', 'T. Documento']], index='Año', values='T. Documento', aggfunc='count', sort=False).sort_values(by='Año')
data_10 = pd.pivot_table(data=df_1[['Mes', 'T. Documento']], index='Mes', values='T. Documento', aggfunc='count', sort=False).sort_values(by='T. Documento', ascending=False)
fig, ax = plt.subplots(nrows=2, ncols=1, figsize=(9,10))
graf_9 = data_9.plot(ax=ax[0], kind="barh", legend=False)
graf_9.bar_label(graf_9.containers[0], fontsize=10)
ax[0].set_title('Distribución de la categoria "Año"')
ax[0].set_xlabel('')
ax[0].set_ylabel('')
ax[0].set_xlim(0, 100000)
ax[0].set_xticks(ticks=range(0, 100001, 20000))
ax[0].set_xticklabels(labels=[(str(x) + " mil") for x in range(0, 101, 20)])
graf_10 = sns.barplot(ax=ax[1], data=data_10, y=data_10.index, x='T. Documento')
graf_10.bar_label(graf_10.containers[0], fontsize=10)
ax[1].set_title('Distribución de la categoria "Estado"')
ax[1].set_xlabel('')
ax[1].set_ylabel('')
ax[1].set_xlim(0, 80000)
ax[1].set_xticks(ticks=range(0, 80001, 10000))
ax[1].set_xticklabels(labels=[(str(x) + " mil") for x in range(0, 81, 10)])
plt.subplots_adjust(hspace=0.3)
plt.show()
Se interpreta que muchos de los beneficiarios al momento de terminar su bachillerato ingresas rápidamente a un nivel superior de formación debido al número de tarjetas de identidad.
data_11 = pd.pivot_table(data=df_1[['T. Documento', 'Año']], index='T. Documento', values='Año', aggfunc='count', sort=False).sort_values(by='Año', ascending=False)
data_12 = pd.pivot_table(data=df_1[['Estado Civil', 'T. Documento']], index='Estado Civil', values='T. Documento', aggfunc='count', sort=False).sort_values(by='T. Documento', ascending=False)
fig, ax = plt.subplots(nrows=2, ncols=1, figsize=(9,8))
graf_11 = sns.barplot(ax=ax[0], data=data_11, y=data_11.index, x='Año')
graf_11.bar_label(graf_11.containers[0], fontsize=10)
ax[0].set_title('Distribución de la categoria "T. Documento"')
ax[0].set_xlabel('')
ax[0].set_ylabel('')
ax[0].set_xlim(0, 180000)
ax[0].set_xticks(ticks=range(0, 180001, 30000))
ax[0].set_xticklabels(labels=[(str(x) + " mil") for x in range(0, 181, 30)])
graf_12 = sns.barplot(ax=ax[1], data=data_12, y=data_12.index, x='T. Documento')
graf_12.bar_label(graf_12.containers[0], fontsize=10)
ax[1].set_title('Distribución de la categoria "Estado Civil"')
ax[1].set_xlabel('')
ax[1].set_ylabel('')
ax[1].set_xlim(0, 280000)
ax[1].set_xticks(ticks=range(0, 280001, 40000))
ax[1].set_xticklabels(labels=[(str(x) + " mil") for x in range(0, 281, 40)])
plt.subplots_adjust(hspace=0.4)
plt.show()
La categoría “Ultimo valor asignado” deberá ser eliminada debido a que su información es poco relevante, sin embargo, el valor total asignado si podría ser útil para determinar cuánto tiempo se usó estudiando.
data_13 = pd.pivot_table(data=df_1[['V. Ult. Asignado','T. Documento']], index='V. Ult. Asignado', values='T. Documento', aggfunc='count', sort=False).sort_values(by='T. Documento', ascending=False)
data_14 = pd.pivot_table(data=df_1[['V. Total Asignado', 'T. Documento']], index='V. Total Asignado', values='T. Documento', aggfunc='count', sort=False).sort_values(by='T. Documento', ascending=False)
fig, ax = plt.subplots(nrows=2, ncols=1, figsize=(9,8))
graf_13 = sns.barplot(ax=ax[0], data=data_13, y=data_13.index, x='T. Documento')
graf_13.bar_label(graf_13.containers[0], fontsize=10)
ax[0].set_title('Distribución de la categoria "Ultimo valor asignado"')
ax[0].set_xlabel('')
ax[0].set_ylabel('')
ax[0].set_xlim(0, 280000)
ax[0].set_xticks(ticks=range(0, 280001, 40000))
ax[0].set_xticklabels(labels=[(str(x) + " mil") for x in range(0, 281, 40)])
graf_14 = sns.barplot(ax=ax[1], data=data_14, y=data_14.index, x='T. Documento')
graf_14.bar_label(graf_14.containers[0], fontsize=10)
ax[1].set_title('Distribución de la categoria "Valor total Asignado"')
ax[1].set_xlabel('')
ax[1].set_ylabel('')
ax[1].set_xlim(0, 90000)
ax[1].set_xticks(ticks=range(0, 90001, 15000))
ax[1].set_xticklabels(labels=[(str(x) + " mil") for x in range(0, 91, 15)])
plt.subplots_adjust(hspace=0.4)
plt.show()
Se encuentra que a mayoría de la población esa sisbenizada, además del gran número de personas desplazadas, este campo no contiene valores ND.
data_15 = pd.pivot_table(data=df_1[['T. Poblacion','T. Documento']], index='T. Poblacion', values='T. Documento', aggfunc='count', sort=False).sort_values(by='T. Documento', ascending=False)
fig, ax = plt.subplots(figsize=(9,4))
graf_15 = sns.barplot(data=data_15, y=data_15.index, x='T. Documento')
graf_15.bar_label(graf_15.containers[0], fontsize=10)
ax.set_title('Distribución de la categoria "Tipo de poblacion"')
ax.set_xlabel('')
ax.set_ylabel('')
ax.set_xlim(0, 210000)
ax.set_xticks(ticks=range(0, 210001, 30000))
ax.set_xticklabels(labels=[(str(x) + " mil") for x in range(0, 211, 30)])
ax.set_yticklabels(labels=data_15.index.str.capitalize())
plt.show()
ADM-3 Prepare and explore data.¶
Descripción de la etapa de Prepare and explore data.¶
Se realizarán los siguientes pasos con el fin de obtener los registros idóneos para la posterior exploración de los datos:
- ADM-3.1 Eliminación de los datos duplicados.
- ADM-3.2 Imputación o eliminación de los datos nulos o vacíos.
- ADM-3.3 Tratamiento de los datos atípicos.
- ADM-3.4 Normalización y estandarización del conjunto de datos.
- ADM-3.5 Codificación de variables categóricas a cualitativas.
- ADM-3.6 Selección de categorías de mayor importancia para el análisis.
ADM-3.1 Eliminación de los datos duplicados.¶
En este caso se encontró que la columna de "fecha final“, “T. Beneficio” y “T. Asignación” solo tienen un único registro que se repite en todos los registros, las columnas “Estado Civil” y “Discapacidad” tiene mayoritariamente registros ND por lo cual se procederá a eliminar completamente todas estas columnas. Con esta modificación se pasa de 16 a 14 columnas.
- Estado
- Etnia
- Fecha Inicial
- Genero
- N. Escolaridad
- Departamento
- Municipio
- Rango Edad
- T. Población
- V. Total Asignado
- V. Ult. Asignado
- Año
Mes¶
- Mes
df_1 = df_1.drop(['Fecha Final', 'Discapacidad', 'T. Beneficio', 'T. Asignacion', 'Estado Civil', 'V. Ult. Asignado'], axis=1)
columnas_df_1 = list(df_1.columns)
df_1.columns
Index(['Estado', 'Etnia', 'Fecha Inicial', 'Genero', 'N. Escolaridad', 'Departamento', 'Municipio', 'Rango Edad', 'T. Documento', 'T. Poblacion', 'V. Total Asignado', 'Año', '# Mes', 'Mes'], dtype='object')
ADM-3.2 Imputación o eliminación de los datos nulos o vacíos.¶
Descripción:
Con las categorías ya filtradas la mayor parte de los registros no tienen datos nulos exceptuando ciertas columnas como “Etnia” o “N. Educativo”, estas categorías tienen la característica de que sus registros son del tipo categórico por lo cual realizar una imputación de datos no asegura una distribución muy precisa de los datos por lo cual se opta por omitir estos registros ND al momento de analizar dichas categorías.
ADM-3.3 Tratamiento de los datos atípicos.¶
Descripción:
Debido al tipo a que los datos en su mayoría son del tipo categórico no se logran encontrar datos atípicos como seria usual en una categoría con registros numéricos.
ADM-3.4 Normalización y estandarización del conjunto de datos.¶
Descripción:
Para el caso de la base de datos publicas los datos ya fueron previamente normalizados por lo cual no es necesario realizar nuevamente el proceso y para los registros obtenidos de la encuesta no se es necesario debido.
ADM-3.5 Codificación de variables categóricas a cuantitativas.¶
Descripción:
No se requiere para el avance del análisis la cuantificación de ninguna de las categorías en la base de datos ni en la encuesta.
ADM-3.6 Selección de categorías de mayor importancia para el análisis.¶
Descripción:
Se seleccionaron ya las categorías con las cuales se piensa dar inicio al análisis, cabe destacar la reducción significativa del número de categorías inicial a lo que se tiene ahora, debido a lo irrelevante o la mala recolección de los datos para dicha categoría.
- Estado
- Etnia
- Fecha Inicial
- Genero
- N. Escolaridad
- Departamento
- Municipio
- Rango Edad
- T. Población
- V. Total Asignado
- V. Ult. Asignado
- Año
Mes¶
- Mes
ADM-4 Data analysis.¶
Descripción de la etapa de data analysis.¶
Se realizarán los siguientes pasos con el fin de obtener los registros idóneos para la posterior exploración de los datos:
- ADM-4.1 Determinar el nivel de correlación entre variables.
- ADM-4.2 Explorar las variables estadísticas descriptivas.
- ADM-4.3 Realizar visualizaciones de los datos.
- ADM-4.4 Evolución de las variables en series de tiempo.
ADM-4.1 Determinar el nivel de correlación entre variables.¶
Descripción:
Se aprecia en el mapa de correlación que la mayoría de las categorías tienen una correlación nula y tendiendo algo a negativa, las pocas variables que logran tener algo de correlación positiva son las de tipo fecha.
h = df_1.apply(lambda x: pd.factorize(x)[0]).corr()
plt.figure(figsize = (13,7.7))
sns.heatmap(data = h, annot = True, fmt='.1g')
plt.show()
/tmp/ipykernel_34/1569916088.py:1: FutureWarning: In a future version, the Index constructor will not infer numeric dtypes when passed object-dtype sequences (matching Series behavior) h = df_1.apply(lambda x: pd.factorize(x)[0]).corr() /tmp/ipykernel_34/1569916088.py:1: FutureWarning: In a future version, the Index constructor will not infer numeric dtypes when passed object-dtype sequences (matching Series behavior) h = df_1.apply(lambda x: pd.factorize(x)[0]).corr()
ADM-4.1 Determinar el nivel de correlación entre variables.¶
Descripción:
Para el caso de la encuesta también se mantiene el mismo patrón de correlación donde las categorías de tipo fecha y las de datos personales son las únicas que tienen una correlación positiva.
df_e = pd.read_csv('Data/Analisis_ Evolucion del nivel academico.csv')
df_e.columns = ['Marca temporal', 'Correo', 'Nombre', 'Apellido',
'Rango de edad', 'Departamento', '¿Es o fue benef. del JeA?',
'# de años recibiendo JeA?', '¿Tenia conocimiento sobre la inf.?',
'Uso JeA para continuar formandose?', '¿Trans. académico que realizado?',
'N. académico cuando recibio JeA?', 'N. académicos culminados?',
'¿Estudia, trabaja o ambas?', '¿Cómo realizo su 1 formación?', 'Trabaja,¿cont. su formación?']
df_e.head()
Marca temporal | Correo | Nombre | Apellido | Rango de edad | Departamento | ¿Es o fue benef. del JeA? | # de años recibiendo JeA? | ¿Tenia conocimiento sobre la inf.? | Uso JeA para continuar formandose? | ¿Trans. académico que realizado? | N. académico cuando recibio JeA? | N. académicos culminados? | ¿Estudia, trabaja o ambas? | ¿Cómo realizo su 1 formación? | Trabaja,¿cont. su formación? | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2023/07/05 10:21:53 a. m. GMT-5 | Exrabaguerrero@ut.edu.co | Esith xiomara | Raba guerrero | 26 - 28 | Bogota | No. Nunca he sido beneficiario | 1 | No | No | No hice uso de este beneficio | Pregrado | Pregrado | Ambas | Presencial | A distancia |
1 | 2023/07/05 10:24:48 a. m. GMT-5 | ktapiaf@ut.edu.co | Kelly Yazmin | Tapia Ferrer | 16 - 18 | Tolima | Sí. Actualmente soy beneficiario | 2 | Sí | No | No hice uso de este beneficio | Pregrado | Técnico | Estudiante | Presencial | Todavía no he tenido mi primer experiencia lab... |
2 | 2023/07/05 10:31:09 a. m. GMT-5 | dagonzalezpen@ut.edu.co | Daniela | González | 22 - 25 | Cundinamarca | Sí. Actualmente soy beneficiario | 2 | No | No | No hice uso de este beneficio | Pregrado | Técnico | Ambas | A distancia | A distancia |
3 | 2023/07/05 10:31:23 a. m. GMT-5 | Blardilag@ut.edu.co | Betsy Liliana | Ardila García | 22 - 25 | Tolima | Sí. Actualmente soy beneficiario | 4 | No | No | No hice uso de este beneficio | Pregrado | Pregrado | Ambas | Presencial | A distancia |
4 | 2023/07/05 10:31:35 a. m. GMT-5 | Mfsolanov@ut.edu.co | Marfi Fernanda | Solano Vargas | 26 - 28 | Tolima | Sí. Actualmente soy beneficiario | 4 | No | No | No hice uso de este beneficio | Pregrado | Pregrado | Estudiante | A distancia | Todavía no he tenido mi primer experiencia lab... |
z = df_e.apply(lambda x: pd.factorize(x)[0]).corr()
plt.figure(figsize = (13,7.7))
sns.heatmap(data = z, annot=True, fmt='.1g')
plt.show()
df_e = pd.read_csv('/kaggle/input/enc-universitarios/Anlisis_ Evolucin del nivel acadmico.csv')
df_e.columns = ['Marca temporal', 'Correo', 'Nombre', 'Apellido',
'Rango de edad', 'Departamento', 'Pregunta 1',
'Pregunta 2', 'Pregunta 3', 'Pregunta 4', 'Pregunta 5',
'Pregunta 6', 'Pregunta 7', 'Pregunta 8', 'Pregunta 9', 'Pregunta 10']
z = df_e.apply(lambda x: pd.factorize(x)[0]).corr()
plt.figure(figsize = (13,7.7))
sns.heatmap(data = z, annot=True, fmt='.1g')
plt.show()
ADM-4.2 Explorar las variables estadísticas descriptivas.¶
Descripción:
Estas serían las estadísticas descriptivas de las categorías escogida para realizar el análisis, en el siguiente paso se apreciarán de forma más grafica.
df_1.describe(exclude = int, datetime_is_numeric=False)
/tmp/ipykernel_34/1893674079.py:1: FutureWarning: Treating datetime data as categorical rather than numeric in `.describe` is deprecated and will be removed in a future version of pandas. Specify `datetime_is_numeric=True` to silence this warning and adopt the future behavior now. df_1.describe(exclude = int, datetime_is_numeric=False)
Estado | Etnia | Fecha Inicial | Genero | N. Escolaridad | Departamento | Municipio | Rango Edad | T. Documento | T. Poblacion | V. Total Asignado | Año | # Mes | Mes | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
count | 260112 | 260112 | 260112 | 260112 | 260112 | 260112 | 260112 | 260112 | 260112 | 260112 | 260112 | 260112.0 | 260112.0 | 260112 |
unique | 2 | 9 | 50 | 3 | 7 | 33 | 1018 | 5 | 5 | 5 | 5 | 6.0 | 12.0 | 12 |
top | NO ACTIVO | ND | 2014-07-01 00:00:00 | Mujer | ND | ANTIOQUIA | BOGOTA D.C. | 18-29 | CC | SISBEN | 1.500.001 - 3.000.000 | 2014.0 | 7.0 | July |
freq | 158945 | 242782 | 29570 | 144076 | 138197 | 25672 | 19476 | 213376 | 169793 | 206694 | 77971 | 94089.0 | 75408.0 | 75408 |
first | NaN | NaN | 2013-01-01 00:00:00 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
last | NaN | NaN | 2018-09-01 00:00:00 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
ADM-4.3 Realizar visualizaciones de los datos.¶
Exceptuando los registros ND, se encuentra que en el top 7 dptos. el nivel académico que predomina es el tecnólogo, la población desplazada destaca en todos los niveles académicos.
Grafica en power bi
Grafica en power bi
Ahora observando la evoluciónde la categoría género a través del tiempo, se aprecia la tendencia de que las mujeres tienen mayor número de beneficiarias.
Grafica en power bi
Grafica en power bi
La distribución de los beneficiarios en los mapas indica que una mayoría significativa de los beneficiarios se encuentra reunida alrededor de las grandes urbes del país.
Grafica en power bi
Grafica en power bi
Se puede suponer que el rango de 30-49 sea de los inicios del programa o errores de ingreso ya que la edad focal del beneficio no permite las edades contenidas en dicho rango.
Grafica en power bi
Grafica en power bi
El Sisbén y los afrocolombianos son el tipo de población y etnia más predominantes entre los beneficiaros.
Grafica en power bi
Grafica en power bi
El Sisbén y los afrocolombianos son el tipo de población y etnia más predominantes entre los beneficiaros.
Grafica en power bi
Grafica en power bi
ADM-4.4 Evolución de las variables en series de tiempo.¶
La disminución de beneficiarios a través del tiempo puede suponer que los registros estén incompletos o que los jóvenes desconozcan cada vez más el programa.
Grafica en power bi
Grafica en power bi
Es motivo de una posterior investigación el saber porque el número de nuevos beneficiarios disminuye en los años posteriores.
Grafica en power bi
Grafica en power bi
Es motivo de una posterior investigación el saber porque el número de nuevos beneficiarios disminuye en los años posteriores.
Grafica en power bi
Grafica en power bi
ADM-5 Present Findings.¶
Descripción de la etapa de Present Findings.¶
Descripción:
Se realizarán los siguientes pasos con el fin de obtener los registros idóneos para la posterior exploración de los datos:
- ADM-5.1 Creación del contexto para el lector de la información.
- ADM-5.2 Enseñar los hallazgos claves.
- ADM-5.3 Establecer los resultados logrados.
- ADM-5.4 Definir la conclusiones y recomendaciones.
ADM-5.1 Creación del contexto para el lector de la información.¶
Descripción:
Se parte de la premisa de el nivel de implicación que tiene el programa de jóvenes en acción del departamento de prosperidad social en la continuación de su proceso formativo a un nivel superior de educación, debido a que el programa cuenta con una continuidad en un periodo de tiempo más largo si el estudiante decide seguir estudiando, por ende se quiere identificar cuantos de los beneficiarios tenían conocimiento de este beneficio, si hicieron uso del mismo y que tanto influyo en la decisión de seguir formándose.
La investigación se encontró con múltiples altibajos, debido a que la base de datos públicas que es nuestro mayor volumen de datos se encontraba significativamente llena de registros “ND = No Data”, por lo cual no resultan muy útiles para el análisis, por otra parte, una de las categorías más importantes como lo era “Fecha de finalización”, resulto ser una categoría con un único registro, por lo cual resulto imposible calcular cuánto tiempo permaneció en el programa cada uno de los registros.
Con estas implicaciones el objetivo principal de la investigación era prácticamente imposible de conseguir, debido a esto nos vimos en la necesidad de basarnos en las proporciones obtenidas en la encuesta realizada, para de esta forma intentar extrapolar una información sobre la otra.
De esta forma se debe hacer claridad en el hecho de que el objetivo principal de la investigación se puede considerar parcialmente alcanzada o directamente no alcanzado. Sin embargo, se encontraron hallazgos importantes que serán compartidos en el siguiente punto.
ADM-5.2 Enseñar los hallazgos claves.¶
Descripción:
Los siguientes datos son los hallazgos obtenidos de las bases de datos públicas y de la encuesta realizada.
- El nivel académico con más beneficiarios es tecnólogo con un total de 54443.
- Los niveles académicos técnico y tecnólogo tienen un número de beneficiarios bastante próximo 31243 y 29639 respectivamente.
- La mayoría de los beneficiarios son mayores de edad con un total de 169793.
- Son pocos los beneficiarios identificados como discapacitados con un total de 441.
- Las mujeres son el género con mayor número de beneficiarias con un total de 144074.
- La mayoría de los beneficiarios no se identifican con ningún tipo de etnia con un total de 242782.
- La etnia con más beneficiarios es afrocolombiana con un total de 11291.
- El top 5 de departamentos con mayor número de beneficiarios es Antioquia con 25672, Bogotá con 19476, Valle del Cauca con 19372, Atlántico con 18589 y Bolívar con 15293, mostrando una concentración en el centro y en la costa atlántica del país.
- El top 5 municipios con mayor número de empresarios es Bogotá con 19476, Barranquilla con 13490, Medellín con 13362, Cartagena con 11775 y Cúcuta con 8539.
- El año con mayor número de ingreso de beneficiarios fue el 2014.
- El mes con mayor número de ingresos de beneficiarios es julio.
- La mayoría de los beneficiarios se clasifican como sisbenizados con un total de 206604, seguido por los desplazados con un total de 33321.
- El rango mayoritario de edad entre los beneficiarios encuestados es 22 a 25 años con 41,56%.
- De los beneficiarios encuestados el 48,05% han recibido por 2 años el subsidio de JeA.
- De los beneficiarios encuestados el 70,13% no tenían conocimiento del estado de tránsito dispuesto en JeA.
- De los beneficiarios encuestados el 63,64% no usaron el beneficio de en tránsito para su formación académica.
- De los beneficiarios encuestados el 15,58% realizo el tránsito de tecnólogo > pregrado, el 14,29% realizo el tránsito de técnico > pregrado y el 1,3% realizo el tránsito de técnico > tecnólogo.
- De los beneficiarios encuestados el 71,43 % inicio a recibir JeA en el nivel académico pregrado.
- De los beneficiarios encuestados el 61,04% se graduaron de una tecnología.
- De los beneficiarios encuestados el 55,84% estudia y trabajan al mismo tiempo.
- De los beneficiarios encuestados el 55,84% realizaron su primera formación en formato presencial.
- De los beneficiarios encuestados el 51,95% que trabaja continua su formación en formato a distancia.
- La tendencia del número de beneficiarios en base a los datos obtenidos tiende a ir a la baja.
ADM-5.3 Enseñar los hallazgos incidentales.¶
Descripción:
Los siguientes hallazgos se obtienen producto del análisis y el planteamiento de hipótesis para obtener una posible causa de origen de alguna irregularidad o anomalía en los datos.
- El número de registros ND tan significativamente alto en múltiples categorías de alta importancia como por ejemplo el N. de escolaridad, se supone un incorrecto diligenciamiento o perdida de los datos.
- Categorías que solo cuentan con un tipo de registro como por ejemplo fecha ultima beneficio asignado, se supone un incorrecto diligenciamiento o el no uso de la categoría.
- La ausencia casi total de registros en ciertos intervalos de tiempo como por ejemplo el año 2016, se supone una pérdida total de los datos.
- Un bajonivel de segmentación en la edad de los beneficiarios ya que solo le logra encontrar dos tipos de rangos etarios, de las cuales una de ellas no concuerda con los lineamientos establecidos por el programa de JeA.
- Poca o nula información pública de los formatos para el registro de información que alimentan la base de datos, se supone esta como una de las principales causales del alto número de registros de datos ND.
- Poca o nula información pública del ciclo del procesamiento y aseguramiento de la calidad del dato para el programa JeA, se supone esta otra razón para comprenderel porqué del estado actual en que se encuentra la base de datos.
- Poca o nula información pública de las aptitudes y requerimientos formativos de las personas encargadas de realizar los registros de los datos, se supone en otra posible causal del alto número de registros ND.