Bloque 1: Manipulación Vectorizada y Análisis Exploratorio de Datos
Antes de construir un modelo es necesario conocer la estructura, la calidad y las limitaciones de los datos. Este bloque establece dos estándares de trabajo:
- Vectorización: toda manipulación de datos tabulares se expresa mediante operaciones vectorizadas, que delegan el cómputo en implementaciones compiladas. Frente a la iteración fila a fila, son órdenes de magnitud más eficientes y producen código más breve y auditable.
- Limpieza programática: la limpieza de datos es un script reproducible que transforma los datos originales en datos procesados. Los datos originales nunca se editan manualmente.
Principio Metodológico: Transformaciones Deterministas frente a Transformaciones Aprendidas
Una transformación determinista no depende de la distribución de los datos (corrección de tipos, normalización de etiquetas, eliminación de duplicados exactos). Una transformación aprendida calcula parámetros a partir de los datos (imputación por media o mediana, escalado, codificación de categorías).
En este bloque solo se aplican transformaciones deterministas. Las transformaciones aprendidas, si se calculasen sobre el conjunto completo, incorporarían información del futuro conjunto de prueba al entrenamiento: es la forma más habitual de Data Leakage. En este bloque se decide la estrategia de imputación; su aplicación se realiza tras la partición de los datos (Bloque 2) y se encapsula en un Pipeline (Bloque 4).
Prerrequisitos
- Bloque 0 integrado en
main.
Material de Referencia
- Procesamiento de datos tabulares: Complete Kaggle Learn: Pandas. El curso cubre selección, filtrado, agrupamiento y combinación de datos mediante operaciones vectorizadas.
- Visualización: Consulte la documentación de Plotly Express. Se utiliza esta API declarativa porque genera figuras interactivas que permiten inspeccionar valores individuales y relaciones multivariables sin código adicional.
Actividad Práctica
- Cree la rama
feat/b01-edadesdemainactualizada. - Añada las entradas
data/ymodels/al archivo.gitignorey confirme este cambio antes de incorporar ningún dato. - Ubique el conjunto de datos proporcionado por su responsable de tutoría en
data/raw/. - Añada las dependencias del bloque con
uv add plotly pyarrowy las dependencias de desarrollo para cuadernos conuv add --dev ipykernel nbformat. - Realice el análisis exploratorio en el cuaderno
B01_Manipulacion_y_EDA/eda.ipynb, que debe documentar como mínimo:- dimensiones del conjunto de datos, tipos de cada variable y conversiones de tipo necesarias;
- porcentaje de valores ausentes por variable y patrón de ausencia;
- número de registros duplicados;
- cardinalidad de las variables categóricas;
- distribución de la variable objetivo: grado de desequilibrio si es categórica; asimetría y valores extremos si es continua;
- relación de las principales variables predictoras con la variable objetivo;
- identificadores y variables candidatas a fuga del objetivo: variables cuyo valor no estaría disponible en el momento de realizar una predicción real.
Todas las visualizaciones se generan con Plotly Express.
- Implemente el script
B01_Manipulacion_y_EDA/limpieza.py, ejecutable conuv run python -m B01_Manipulacion_y_EDA.limpieza, que:- lea los datos de
data/raw/; - aplique exclusivamente transformaciones deterministas: corrección de tipos, normalización de etiquetas categóricas, eliminación de duplicados exactos y conversión de valores centinela (p. ej.,
-999,"N/A") aNaN; - escriba el resultado en
data/processed/dataset_limpio.parquet.
- lea los datos de
- Restricción de vectorización: el código de los pasos 5 y 6 no puede contener bucles
forsobre filas,iterrows(),itertuples()niapply(axis=1)con funciones de Python. Utilice los métodos vectorizados de pandas y NumPy (indexación booleana con.loc, accesores.stry.dt,np.where,.map,groupby). - No impute valores ausentes en este bloque. Documente en el Pull Request la estrategia de imputación propuesta para cada variable.
- Publique la rama y abra un Pull Request hacia
main.
Contenido Obligatorio del Pull Request
- Resumen de los hallazgos principales del análisis exploratorio.
- Tabla con las columnas: variable, porcentaje de ausentes, estrategia de imputación propuesta y justificación estadística (p. ej., mediana frente a media ante distribuciones asimétricas o con valores extremos).
- Lista de variables que se excluirán del modelado (identificadores y candidatas a fuga del objetivo), con el motivo de cada exclusión.
Criterios de Aceptación
- Ejecutar
limpieza.pysobredata/raw/regeneradata/processed/dataset_limpio.parquetde forma determinista. - Ningún archivo de datos está versionado.
- El código cumple la restricción de vectorización.
Transición al Bloque 2
El Bloque 2 parte de data/processed/dataset_limpio.parquet, de la estrategia de imputación y de la lista de exclusiones definidas aquí, y las aplica respetando la regla establecida en este bloque: ningún parámetro se calcula antes de separar el conjunto de prueba.