7153067333_a3c13c9214_zFoto: Earth Day Pictures

Este post fue publicado originalmente en inglés por Noah Veltman en School of Data, y traducido al español por SocialTIC.

Escuela de Datos está volviendo a publicar lo que Noah Veltman escribió para Learning Lunches, una serie de tutoriales que desmitifican la complejidad de las herramientas que son relevantes para los periodistas. Este tutorial de Learning Lunches trata acerca de la limpieza de datos: qué hacer, y lo más importante: qué no hacer.

Uno de los pasos más importantes en cualquier proyecto de periodismo de datos es precisamente limpiarlos. Generalmente cuando obtienes datos directamente de una base de datos, no están listos para ser publicados. Están llenos de inconsistencias y no expresan las relaciones que quieres analizar. Antes de que se vuelvan interesantes, necesitas limpiarlos y ponerlos en orden.

Este proceso también es muy peligroso, ya que puedes cometer bastantes errores sin siquiera darte cuenta. Y es que, cuando arruinas tus datos después de un proceso de limpieza, en el mejor de los casos sólo perdiste muchísimo tiempo. Pero en el peor de los casos tu análisis no será correcto por que, sin saber, cambiaste los datos.

Aquí te damos algunos consejos para empezar a limpiar tus datos, reorganizarlos, y, por último, analizarlos.

No cambies las tablas ni los archivos originales

Si tienes un documento en Excel o una tabla en MySQL que necesita cambios, no comiences de inmediato. Primero haz una copia del documento. Si te equivocas, así será mucho más fácil volver a empezar… y lo más importante: podrás comparar con el original a lo largo de las etapas de limpieza.

Como corolario de esto, no se debe borrar datos sólo porque piensas que no los necesitas. Ten un archivo de todas las cosas; también etiqueta todo para que no te confundas con un archivo o con otro.

Revisa una muestra de la base

Cuando el conjunto de datos sea lo suficientemente grande como para que no lo puedas leer línea por línea (es decir: no puedes revisar casi todos los datos), tendrás que comenzar con la verificación aleatoria. Cualquier hipótesis que tengas acerca de la naturaleza y la consistencia de los datos es mera suposición, y probablemente estás equivocado. SELECT * FROM TABLE FROM TABLE ORDER BY 1 LIMIT 5 es una de mis declaraciones más frecuentes en SQL (para personas que no usan SQL: “Muéstrame 5 filas aleatorias de la tabla”). Utiliza esta función; te encantará. Pide unos registros aleatorios y léelos detenidamente. A ver si aparece algo fuera de lo normal. Haz esto desde el inicio y con frecuencia, y así evitarás errores tontos… además de que conocerás mejor tus datos.

Revisa si hay valores extraños

Busca celdas que no tengan un valor asignado, pero sobre todo busca celdas con pseudo-valores. Las hojas de cálculo de cualquier oficina de gobierno están llenas de caracteres muy bizarros que sólo entorpecen el análisis. Por ejemplo: seguro podrás encontrar caracteres como , * o ~ en espacios blancos. Para ganar puntos extra, revisa las longitudes de los valores. Si la mayoría de las direcciones físicas en tus datos son de 75 caracteres y hay una de 450 caracteres, algo extraño ha pasado.

Para cada columna categórica, revisa la lista de valores que existen en los datos. Asegúrate de que está todo lo que debería estar ahí, y que no esté lo que no debería estar. GROUP BY (o su gemela SELECT DISTINCT) debería convertirse en tu nueva mejor amiga. Para toda columna numérica, al menos revisa los mínimos y máximos. Revisa los rangos de cada tipo especial de datos (por ejemplo, códigos postales: revisa que todos los valores sean de 5 caracteres, y no haya alguno de 20). No asumas que todas las fechas tendrán el mismo formato, o que inclusive serán fechas…

Cuando estés agrupando, usa COUNT() para ver cuántos objetos tiene cada categoría. Si todos los números pasan la prueba, felicidades: lo hiciste bien. Pero si no, algo hiciste mal… o no hiciste algo mal, y sí tienes suerte y hay una historia ahí. De cualquier manera, querrás saber de cuál de las dos posibilidades se trata.

Los datos en texto son una pesadilla. Sé cuidadoso con los espacios en blanco, las mayúsculas y los caracteres que se “cuelan” en el texto. Puede haber un espacio entre tus celdas que ya no te permite comparar o agrupar. Tú sabes que “París” y “París “ son lo mismo, pero la base de datos no lo sabe. Usa el comando TRIM() cuando lo consideres necesario.

Siempre, siempre acuérdate de la “Ley de caracteres de Veltman”: Siempre habrá una é en algún lugar de tus datos que arruinará todo.

Preocúpate por el tipo de columnas

Siempre que uses Excel, una base de datos relacional o cualquier otra cosa, asegúrate de que tus columnas sean las que tú quieres y que todos los datos se acomoden. Si no lo haces, tus datos se volverán un revoltijo cuando los importes y ni siquiera sabrás qué está pasando. Esto es especialmente importante si los datos serán utilizados para alimentar algún tipo de aplicación.

Hora del quiz: ¿Cuál de los siguientes enunciados se evalúa como falso en lenguaje de programadores?
0, “0”, 0.0, “0.0”, [], {}, [{}], null, undefined
Respuesta: No permitas que se vuelva necesario responder a esta pregunta.

Practica antes de cambiar las cosas

¿Estás intentando cambiar 50,000 columnas en una tabla con la complicada declaración UPDATE? Intenta mejor actualizar unos pocos primero, e inspecciona los resultados. Asegúrate de que tu operación ingeniosa con cinco REPLACE()s anidados y una cláusula WHERE impenetrable haga lo que piensas que hará. O tal vez estás auto-generando mil queries con un lindo script que hiciste. Corre una versión que imprime esos queries sin ejecutarlos primero, y revisa los resultados. Usa SELECT a tu gusto; sé modesto con tu uso de INSERT y UPDATE.

Limpio es mejor que ingenioso

No hay premio por escribir el JOIN más bello del mundo o la fórmula más anidada en Excel, así que no vale la pena que lo intentes. Si eres periodista que está tratando de darle algún formato a los datos, no importa si debes usar más ciclos de computación de lo estrictamente necesario. No estás trabajando con Big Data. El poder de procesamiento es barato, el almacenamiento es barato… pero tu tiempo no lo es. Si tratas de hacer las cosas muy complicadas, todo será difícil de entender para ti y para los demás, y aumentarás las posibilidades de cometer un error. Cuando las cosas inteligentes fallan, tienden a fallar insidiosamente. Mantén tus operaciones simples, trabajar por etapas. Rompe operaciones complicadas, convirtiéndolas en varias ideas simples; esto logrará que el camino para entender qué pasó cuando tengas un error sea más fácil de recorrer.

Deja rastro de lo que haces

Éste es el error que comento con más frecuencia; no seas como yo. Mantén un registro de lo que le haces a los datos. Puede ser un papel, una nota, archivos, un perico parlante… ¡No importa, sólo hazlo! Saber lo que le hiciste a tus datos es de suma importancia para resolver problemas y corregir los errores; pero, esencialmente, es para hacer periodismo de calidad.