Datos Sucios, Modelos Tristes: Guía Práctica de Limpieza de Datos con Python


Datos Sucios, Modelos Tristes: Guía Práctica de Limpieza de Datos con Python.


    

Aprende a limpiar datos del mundo real con Python, Pandas y Scikit-learn. Usamos el dataset del Titanic para dominar la imputación, eliminación y escalado de datos.


Hoy nos enfrentamos a un reto real. Olvídense de los datos perfectos de los tutoriales. Vamos a trabajar con la lista de pasajeros del Titanic, un dataset histórico, desordenado e incompleto. Nuestro objetivo no es predecir quién sobrevive (aún), sino realizar el trabajo más crucial y a menudo subestimado de la ciencia de datos: la limpieza y preprocesamiento.


Se dice que un científico de datos pasa el 80% de su tiempo limpiando datos y el 20% quejándose de ello. Hoy vamos a dominar ese 80% para que nuestros futuros modelos de Machine Learning no sean tristes, sino precisos y robustos.


Paso 1: El Diagnóstico Inicial

Lo primero es cargar los datos y realizar un chequeo médico. Usaremos la librería Seaborn que, convenientemente, nos da acceso directo a datasets clásicos como el del Titanic.




El comando .info() es el primer diagnóstico del médico. Nos da un resumen rápido de las columnas, cuántos valores no nulos hay en cada una y su tipo de dato.

Salida de .info():


La primera revisión ya levanta banderas rojas. La columna age tiene 714 de 891 valores. deck tiene solo 203. embark_town tiene 889. ¡Tenemos trabajo que hacer!


Paso 2: Cirugía de Datos - Tratamiento de Nulos (NaN)

Ahora aplicaremos diferentes estrategias de limpieza según la gravedad y el contexto de cada "herida" en nuestros datos.

Caso 1: La Edad (age) - Imputación con Mediana

Faltan 177 edades. Eliminar esas 177 filas sería como despedir al 20% de nuestra plantilla: perderíamos demasiada información valiosa de otras columnas. La estrategia aquí es la imputación: rellenar los huecos de forma inteligente.

Usaremos la mediana de edad de todos los pasajeros. ¿Por qué la mediana y no la media (el promedio)? Porque la mediana es más robusta a valores atípicos. La presencia de unos pocos bebés o de las personas más ancianas del barco podría desviar la media, pero la mediana (el valor central) no se ve tan afectada.


Caso 2: La Cubierta (deck) - Eliminación de Columna

Aquí el problema es mucho más grave. Faltan 688 de 891 datos, casi el 80% de la información. Intentar adivinar o imputar la cubierta para la gran mayoría de los pasajeros sería, esencialmente, inventar datos. Esto podría introducir un sesgo masivo y llevar a conclusiones erróneas.

En un caso como este, la decisión profesional más sensata es la amputación. Eliminamos la columna por completo.



Caso 3: El Puerto de Embarque (embark_town) - Imputación con Moda

En esta columna faltan solo 2 datos. Eliminar dos filas completas por un solo dato faltante es innecesario. La mejor técnica aquí es imputar con el valor más común: la moda. Simplemente, asumimos que esos dos pasajeros embarcaron en el puerto más popular.


Verificación Final de la Cirugía

Volvemos a realizar un chequeo de salud para ver si hemos curado las infecciones de datos nulos.


El resultado ahora debería mostrar 0 valores nulos para age y embark_town, y la columna deck ya no existirá. ¡El paciente está estabilizado!

Paso 3: El Toque Final - Escalamiento de Características

Ahora que los datos están completos, debemos asegurarnos de que estén en una escala comparable. Observen las columnas age (edades entre 0 y 80) y fare (tarifas que pueden ir de 0 a más de 500). Si alimentamos estos datos directamente a un algoritmo, es probable que le dé mucha más importancia a la tarifa solo porque sus valores son numéricamente más grandes.

Para evitar este sesgo, vamos a estandarizar las características numéricas usando StandardScaler de Scikit-learn. Este proceso reescala los datos para que tengan una media de 0 y una desviación estándar de 1.


Ahora, si miran el head() del DataFrame, verán que las columnas numéricas tienen valores pequeños, positivos y negativos, todos centrados alrededor de cero. Están "normalizados" y listos para ser procesados justamente por cualquier algoritmo.

Conclusión: Del Caos a la Claridad

Hoy hemos realizado el trabajo fundamental de la ciencia de datos. Tomamos un dataset histórico, caótico e incompleto y, aplicando decisiones lógicas y técnicas precisas, lo hemos convertido en un recurso limpio, completo y robusto.

Han aprendido a:
  • Diagnosticar problemas de datos con .info() y .isnull().sum().
  • Tomar decisiones de limpieza: cuándo imputar con la mediana (datos numéricos), cuándo con la moda (datos categóricos) y, lo más importante, cuándo es mejor eliminar una columna.
  • Estandarizar características para asegurar que los modelos traten todas las variables por igual.

Este es el trabajo que marca la diferencia entre un modelo de IA inútil y uno que puede generar predicciones y conocimientos valiosos. ¡Ahora están listos para construir sobre una base sólida!

No hay comentarios.:

Publicar un comentario