Ir al contenido

Curso · Lección 5 de 6Limpieza de datos

0 de 5 secciones completadas (0 %)

Volver al curso

Sección 1 de 5

Limpiar no es borrar: primero detecta el problema

Detecta y trata nulos, duplicados y tipos de datos incorrectos.

Al terminar podrás

Detectar y tratar valores nulos, filas duplicadas y tipos incorrectos en un DataFrame sencillo de ventas.

Duración
40 min
Nivel
Aplicar
Secciones
5
Reconocimiento
Constancia verificable

Retomemos el archivo ficticio de ventas, pero ahora imagina que llega con problemas: una fila no tiene precio, otra aparece dos veces, una cantidad está escrita como texto y una fecha contiene el valor sin fecha. Si calculas antes de revisar, el resultado puede fallar o responder una pregunta distinta a la que creías.

La limpieza comienza con diagnóstico. ventas.isna().sum() permite contar valores ausentes por columna y ventas.duplicated().sum() ayuda a detectar filas repetidas exactamente. También conviene revisar los tipos con ventas.dtypes. Una columna llamada cantidad puede verse numérica a simple vista y, sin embargo, estar almacenada como texto.

La regla práctica de esta lección es: detectar → decidir → transformar → verificar. No existe un tratamiento automático que sea correcto para todos los casos. La decisión depende de qué significa el dato y de la pregunta que quieres responder.

1. Detectarproblemas 2. Decidirtratamiento 3. Transformarcon pandas 4. Verificarresultado
Limpiar datos implica detectar, decidir, transformar y comprobar; no borrar indiscriminadamente.

Clasifica el problema encontrado

Esta actividad necesita JavaScript.

Sección 2 de 5

Nulos: decidir según la pregunta

Si falta el precio de una venta, no puedes calcular su importe sin inventar información. Para un ejercicio que necesite importes, una opción explícita es trabajar temporalmente solo con filas que sí tienen precio: ventas_con_precio = ventas.dropna(subset=["precio"]). El nombre de la nueva variable deja claro qué se excluyó.

En cambio, si falta la sucursal y deseas conservar la venta para un total general, podrías crear una categoría visible con ventas["sucursal"] = ventas["sucursal"].fillna("Sin identificar"). Esa decisión mantiene el registro sin atribuirlo a una sucursal conocida.

Las dos operaciones son técnicamente sencillas; la dificultad está en justificar cuál responde a la pregunta. Eliminar una fila y reemplazar un valor no significan lo mismo y pueden cambiar los resúmenes posteriores.

Elige un tratamiento razonable

Esta actividad necesita JavaScript.

Sección 3 de 5

Duplicados y tipos: corrige la estructura

Si confirmas que una fila está duplicada exactamente, ventas = ventas.drop_duplicates() conserva una ocurrencia y elimina las repeticiones adicionales. Antes de hacerlo debes estar seguro de que se trata del mismo registro y no de dos ventas legítimas con valores coincidentes.

Para una cantidad almacenada como texto, ventas["cantidad"] = pd.to_numeric(ventas["cantidad"], errors="coerce") intenta convertir los valores a número. Los valores que no puedan convertirse pasan a un valor ausente, lo que los vuelve detectables para una decisión posterior. Para fechas, ventas["fecha"] = pd.to_datetime(ventas["fecha"], errors="coerce") aplica la misma idea: una fecha inválida queda marcada como ausente temporal.

Después de transformar, verifica otra vez: revisa dtypes, cuenta nulos y comprueba duplicados. La limpieza es un ciclo porque una conversión puede revelar nuevos valores problemáticos.

Ordena una limpieza segura

Esta actividad necesita JavaScript.

Sección 4 de 5

Cierre: caza la limpieza automática

Un DataFrame “sin errores” no es necesariamente un DataFrame correcto. Si borras todas las filas con algún nulo, podrías perder ventas que todavía sirven para algunas preguntas. Si rellenas todos los precios faltantes con cero, estarías convirtiendo “precio desconocido” en “precio igual a cero”, que significa otra cosa.

Antes de la visualización final, tu flujo queda así: inspecciona, detecta problemas, decide el tratamiento, transforma y verifica. Solo entonces calcula resúmenes que puedan sostener una interpretación.

Caza las acciones riesgosas

Esta actividad necesita JavaScript.

Sección 5 de 5

Evaluación final