Tutorial: Limpieza y visualizaciones para encontrar patrones con Python
sebastianoliva - el agosto 31, 2017 en Tutoriales
sebastianoliva - el agosto 31, 2017 en Tutoriales
Omar Luna - el septiembre 13, 2016 en Expediciones de Datos, Experiencias, Fuentes de datos, Uncategorized
Amo el trabajo de datos. Pero hay una cosa que no me gusta: la limpieza. ¿No te ha pasado alguna vez? ¡A mí sí y sigo contando! Por eso, quiero enseñarte cómo utilizar una herramienta para hacer al mal tiempo buena y cara: Wrangler. Esta es una herramienta interactiva GRATUITA, desarrollada por el proyecto de investigación Stanford/Berkeley, que sirve para la limpieza y transformación de datos.
Con ella, te lo prometo, pasarás menos tiempo limpiando y más tiempo analizando tus datos a la hora de elaborar bases de datos. ¿Te animas a probarla? Bueno, pues, lee y te cuento cómo la probé con una tabla de datos, sobre las primeras tres jornadas de CONCACAF 2016-2017, que extraje de Mismarcadores.com.
¡Menor tiempo, mejor limpieza!
Un profesor en la «U» solía decirme que, lo bueno si breve, dos veces bueno. Y eso es lo que evoca Wrangler al momento de utilizarlo. Para comenzar, ingresa a http://vis.stanford.edu/wrangler/, donde encontrarás un botón al que hasta el más curioso y entusiasta datero dará clic con su provocativo Try It Now (¡Pruébala ahora!).
Como verás a continuación, la interfaz de Wrangler es sencilla. Un poco primaria para algunos, pero los resultados son prometedores para quienes deseamos limpiar datos rápido y bien. ¿Ves cómo está la tabla? Fea, ¿verdad?
Para mejorarla, lo primero que hice fue seleccionar la primera fila de la tabla y acudí al auxilio de la opción Promote para que la primera fila sea el encabezado de cada una de nuestras columnas. Así, ya tenemos un encabezado con el cual la carpintería datera puede comenzar. ¡Eso sí! Para cambiar cada uno de sus nombres puedes dar doble clic y ¡listo! ¡Ya tienes categorías!
Ahora, rellenemos los espacios en blanco de cada jornada. Para eso, sombreé la columna JORNADA. Y me fui a la opción Fill, con la cual puedes reemplazar las columnas/filas en blanco por insumos de valor. Para este caso, le indiqué que debía rellenar todo espacio debajo de JORNADA que estuviera en blanco.
¿Cómo? Colocando lo siguiente en su barra de opciones:
Column JORNADA
Direction: above
Row: JORNADA is null
Finalizado esto, aparecerá una opción con nuestros comandos en el menú SUGGESTIONS. Dale clic al signo de «más» y verás cómo empieza a tomar forma la cosa.
Sí, yo también vi esas filas en blanco que no aportan nada en cada JORNADA. Para eliminarlas, selecciona cada una de las columnas e ingresa a la opción DELETE, donde podrás prescindir de cada una de ellas en el menú de la izquierda, dando clic al signo más en el menú SUGGESTIONS.
Mejor, ¿no? Ahora, tenemos otra piedrita en el camino: ¡Fecha y hora están unidas! Pero, que no panda el cúnico. Para separarlas, me di a la tarea de hacer lo siguiente:
1) Seleccioné la columna FECHA
2) Fui a la opción SPLIT y coloca WHITESPACE en la variable after.
3) Y voilá…
¡Eso sí! No pases por alto cambiar las columnas SPLIT a FECHA y HORA respectivamente. Ahora, veo que el MARCADOR está igual de sucio. Por tanto, tendremos que separar cada uno de esas ÊÊ que les mantienen unidos. ¡Empecemos entonces! Yo comencé por el marcador del equipo 2 e hice esto:
1) Sombreé la columna MARCADOR
2) Fui a la opción SPLIT y coloca ÊÊ en la variable after.
3) ¡Listo! ¡Ya me lo separó!
Ahora, viene lo mejor: ¿cómo quitamos esas ÊÊ del marcador del equipo 1? Antes de separar, sombreemos las ÊÊ y sígueme con lo siguiente:
1) Vamos a la opción SPLIT
2) Coloquemos ÊÊ en la opción on
3) ¡Mira qué padre! ¡Nos separó las ÊÊ del marcador!
4) ¡No olvides renombrar la columna separada como MARCADOR EQUIPO 1!
¡Solo nos queda prescindir de la columna en blanco del anterior SPLIT! Y, para eso, ve a la opción DROP y dale clic a la primera opción que te presenta el menú SUGGESTIONS.
¿Qué hacemos ahora? Ve a la opción EXPORT que se encuentra debajo de SUGGESTIONS y haz clic. Te saldrá una pantalla con la tabla de datos limpia. Copíala y llévala a tu Text Edit (Mac) o Bloc de Notas (Windows). Pega el archivo y guárdalo como un texto sin formato con extensión .csv.
Ahora, si la curiosidad te mata como a mí me pasó, abrí el .csv en Excel… ¡Y este fue el resultado!
¡Justo algo con lo cual podemos trabajar! ¡Gracias por oír mis plegarias dateras, Wrangler!
¿Por qué confiar en Wrangler?
«¿Para qué tanto problema?», dijo sabiamente Juan Gabriel. Y yo le creo… yo te invito a darle un voto de confianza a Wrangler. ¿Por qué? Porque me ha pasado que se me va el tiempo (¡y la vida!) manipulando datos exclusivamente para que las herramientas de visualización y análisis las leen. Pero, ¡oh, sorpresa! Muchas veces, el resultado no es el esperado porque la limpieza no fue lo que yo deseaba.
Y, en esos deseos de cosas imposibles, Wrangler está diseñadas para acelerar esos procesos; más, si tienes a un editor o a tu jefe exigiendo bases de datos y visualizaciones rápidas y bien ejecutadas. Con este insumo, pasarás menos tiempo lidiando con tus datos y mucho más aprendiendo de ellos al tener las preguntas correctas que te ayuden a sustentar/refutar hipótesis de periodismo de datos.
También, te permite la transformación interactiva de información sucia que puedes encontrar a diario en insumos de análisis para cualquier proyecto en el cual te encuentres trabajando. Y, lo que más me encanta, te ayuda a exportar datos para su utilización en mis dos inseparables amigos: Excel o Tableau. ¡Yeeeeeeeeeeeeeey!
Por los registros, ¡no te preocupes! Una vez exportes la data trabajada, la herramienta volverá a su fase original con las bases precargadas (¡otra razón para amarte, Wrangler!). Ya si esto no te convence, anímate a probarla y compartirnos qué te parece y que no. ¡No te quedes con las ganas y comparte con nosotros tus impresiones acá o en nuestro Twitter (@EscueladeDatos)! ¡Cambio y fuera!
faeriedevilish - el febrero 3, 2014 en Tutoriales
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.
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.
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.
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.
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.
¿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.
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.
É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.