¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Cómo limpiar datos con errores

Después de esta lección: Puedo encontrar y corregir los datos malos de una tabla.

Lección de 50 min2 comandosLaboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

Un año con 367 días

Limpiar datos es encontrar los errores de una tabla y corregirlos antes de sacar ninguna cuenta. Si no lo haces, las medias y los gráficos mienten sin avisar.

Una tienda de alquiler de bicis exporta sus datos de un año. Salen 367 filas, y un año tiene 365 días. Algo ha entrado dos veces.

Al terminar esta lección

Nota

Puedo encontrar y corregir los datos malos de una tabla.

Palabras clave

PalabraQué significaEjemplo
Dato ausenteuna celda que debería tener valor y está vacía
Duplicadouna fila que aparece dos veces
Valor imposibleun dato que no puede ser verdad99.9 grados
Limpiarcorregir o quitar los datos malos
Medianael valor que queda en medio al ordenar los datos
CSVun archivo de texto con una fila por línea

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Cinco fallos típicos de los datos

Los datos reales llegan sucios. Casi siempre fallan de cinco maneras, y cada una tiene una prueba.

Hoy usarás un archivo del laboratorio con los alquileres de bicis de un año. Una copia suya tiene los fallos puestos a propósito, siempre en las mismas filas.

Ejemplo resuelto: cada fallo y su prueba

FalloCómo se veLa prueba
Dato ausenteuna celda vacíacontar las celdas vacías de la columna
Tipo equivocadotexto donde esperas númerosmirar el tipo de cada columna
Duplicadomás filas que díascontar las filas repetidas
Valor imposibleun máximo que no puede darsemirar el valor más alto
Palabras distintasSunny y sunny contadas apartecontar cuántas veces sale cada palabra

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Crear la copia sucia y revisarla

Comando
docker exec jupyter python3 steps/messy.py

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Arregla palabras y números uno a uno

Una palabra con espacios o mayúsculas distintas se arregla en dos pasos. strip() quita los espacios de los lados. lower() pasa todo a minúsculas.

Un número escrito como texto se comprueba con isdigit(). Si el texto son solo cifras, lo conviertes con int(). Si no, no es un recuento válido.

Pruébalo: palabras con espacios

Código: python
# Tres maneras de escribir el mismo tiempo.
words = ["rainy", " Rainy", "RAINY "]
for word in words:
    print(repr(word), "pasa a", repr(word.strip().lower()))
# Añade "SUNNY" a la lista y vuelve a ejecutarlo.

Pruébalo: números escritos como texto

Código: python
# ¿Es un recuento de alquileres un número entero?
for text in ["290", "-12", "unknown"]:
    print(text, text.isdigit())
# Añade "45" a la lista. ¿Qué dice isdigit?

Quitar o rellenar un dato ausente

Para un dato ausente tienes dos caminos. Quitas la fila, si el dato era imprescindible. O rellenas la celda con un valor razonable, como la mediana de la columna.

Un valor imposible, como 99.9 grados, se trata igual: primero lo marcas como ausente y luego decides.

Un error frecuente

Advertencia

Mucha gente cree que un dato ausente se arregla escribiendo 0. Pero 0 grados es una temperatura real y baja la media. Rellena con la mediana, o quita la fila, y apunta siempre lo que hiciste.

Ejecutar los pasos de limpieza

Comando
docker exec jupyter python3 steps/clean.py

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejemplo resuelto: las filas tras cada paso

PasoFilas que quedanQué se hizo
Al empezar367La copia sucia, tal como llegó
Quitar las filas repetidas365Se fue una fila de más por cada duplicado
Quitar los recuentos que no son números363Se fueron dos filas: un -5 y un unknown
Arreglar las palabras del tiempo363No cambia el número de filas, solo el texto

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Apunta cada cambio que haces

Limpiar cambia los datos, y alguien puede preguntarte por qué. Apunta cada paso: qué fallo era, cuántas filas tocaste y qué hiciste.

Una línea por paso basta. Así otra persona puede repetir tu limpieza y llegar al mismo resultado.

Para ir más lejos

La tabla limpia tiene 363 filas, no 365. Explica en dos frases qué puede salir mal si alguien calcula el total del año con ellas sin saberlo.

Después apunta en una línea cada paso que hizo clean.py, como si se lo dejaras escrito a un compañero.

Sobre este laboratorio y su código: Laboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.