Introducción

Cuando se inicia un nuevo proyecto de data science, lo común es comenzar a discutir qué algoritmos y/o técnicas serían buenos utilizar. Nombres o conceptos como Deep Learning, CatBoost, XGBoost, K-Means, Algoritmos de Recomendación empiezan a ser utilizados como posibles soluciones al problema que se tiene al frente.

Sin embargo, lo que no siempre se sabe, es que esto es solo la parte final del proyecto, y el que, en promedio, menos tiempo toma. Hay un paso que es muy relevante, que más tiempo toma y el que muchos Data Scientists no disfrutan: la limpieza de datos.

Realizar una inspección y una limpieza de datos puede marcar la diferencia entre el éxito o fracaso de un proyecto. Es muy conocido el dicho “basura entra, basura sale” (“garbage in, garbage out”) en el mundo de data science: un algoritmo, por muy bueno que sea, se entrena con los datos que entran, y no va a poder entregar buenos resultados si los datos no están bien.

Se estima que limpiar los datos toma entre un 60% a un 70% del tiempo total de un proyecto.[1] Y es entendible que tome tanto tiempo: hay que estar seguros que la limpieza que se hace a los datos esté bien hecha, pues ello alimentará los algoritmos que usemos para resolver el problema que tenemos.

¿En qué consiste “limpiar los datos”? En palabras simples, significa revisar y verificar que todos los datos que tenemos  (ya sean números, texto o imágenes) hagan sentido. Si los datos involucran estatura, ¿Los números son coherentes? ¿Están dentro de un rango aceptable? ¿Aparece alguien de 5mts de estatura? Si estoy analizando reclamos para tiendas de habla hispana, ¿es normal que aparezcan textos en otro idioma? Si estoy estudiando gestos en imágenes de personas, ¿pueden aparecer fotos de animales?

Es importante que los datos con los cuales se va a trabajar sean precisos, estén completos, sean de buena calidad, confiables, imparciales y sean válidos.

Proceso de limpieza de datos

Dado que cada proyecto es diferente, es difícil tener una lista que nos diga qué hacer paso a paso. Sin embargo, existen revisiones básicas que son transversales a todo proyecto (nota: de ahora en adelante, se asumen datos numéricos y variables que contengan nombres).

  • Remover duplicados o datos irrelevantes: Tener datos duplicados es más común de lo que se cree. Esto usualmente sucede en la etapa de recolección de datos. Al tener diversas fuentes, se busca juntar los datos, lo que puede resultar en tener duplicados. Por esto, es importante que después de juntar datos, se revise la tabla con la que se va a trabajar para descartar filas repetidas. Los datos irrelevantes son aquellos que no influyen o no impactan al problema que se está intentando solucionar. Por ejemplo, si se están analizando ingresos promedio en países de Asia, y se tienen datos de países de Europa, lo mejor es eliminar estos últimos. Esto hará que el análisis sea más rápido y se reduzcan las posibilidades de errores.
  • Corregir errores estructurales: Esto sucede cuando se transfieren datos o se juntan diferentes bases de datos, y se observan nomenclaturas extrañas, errores tipográficos o gramaticales. Por ejemplo, pueden aparecer “N/A” o “Not applicable”, y habría que estandarizarlo. O tal vez para una persona, “Brain Food”, Brainfood”, y “Brain-Food” sean lo mismo, pero el computador ve 3 nombres diferentes. Todo esto hay que analizarlo minuciosamente para no tener errores.
  • Corregir outliers: Esta es tal vez una de las situaciones más comunes con las que se encuentra un Data Scientist. Un outlier o valor atípico es aquel que se “escapa” del rango normal de valores de la variable que se está estudiando. En el ejemplo que se dio anteriormente de la estatura, una persona que mida 5mts es claramente un valor atípico. Aquí se nos presentan 2 opciones: podemos eliminar este número (esto implicaría eliminar el registro completo), o cambiarlo por, por ejemplo, el promedio de las estaturas. Lo que se haga con el valor atípico dependerá del problema que se está trabajando. Una cosa importante: no todos los valores atípicos son, efectivamente, valores atípicos. Uno puede estar revisando ventas en supermercado, y vemos una venta que se escapa de la media. De inmediato, se podría pensar en eliminar el registro, pero tal vez lo correcto sea ver el contexto: ¿se produjo la venta en un período especial (Navidad, Año Nuevo)? ¿El supermercado vende a mayoristas también? Es muy importante, antes de tomar cualquier decisión, analizar bien el problema y el contexto de los datos.
  • Manejo de datos faltantes: Otra de las situaciones comunes con las que se encuentra un Data Scientist. Datos faltantes son aquellos que no están en las tablas con las que trabajamos. Existen algunas opciones para tratar los datos faltantes, como, por ejemplo:
    • Eliminar todos los registros que contengan datos faltantes en algún campo: Esta es una buena opción siempre y cuando los registros a eliminar sean mínimos. Si son un porcentaje importante de los datos (más del 15%, por ejemplo), es mejor considerar otra alternativa.
    • Reemplazar los datos faltantes por valores basados en otras observaciones: Existen varias técnicas para esto (utilizar knn o algoritmo de vecinos cercanos, predecir los datos faltantes, etc.), lo más común es reemplazar por el promedio (e.g., si falta la estatura de alguien, se puede reemplazar por el promedio de estaturas presentes en los datos), o por la mediana (en el caso que el promedio esté sesgado por algunos valores dentro de los datos).
  • Validación: Una vez que se terminó con los pasos anteriores (y cualquier otro paso específico del proyecto), es importante darse el tiempo, mirar los datos, y responder preguntas del tipo:
    • ¿Hacen sentido los datos?
    • ¿Me permiten los datos encontrar relaciones que ayuden a resolver el problema?
    • ¿Los datos ayudan a confirmar o desmentir las diferentes hipótesis que se plantean?

Si los datos no son analizados y limpiados correctamente, se puede llegar a conclusiones falsas o erróneas del problema, lo que a su vez, puede llevar a tomar decisiones de negocio incorrecta.

Cierre

En Brain Food sabemos de la importancia que tienen los datos, y por eso, para cada proyecto, hacemos un análisis riguroso para verificar su calidad y la posibilidad que nos entregan para poder encontrar una solución al problema. Estos análisis los hacemos utilizando algoritmos en Python o en R, apoyándonos con Power Bi para lograr una buena visualización. Python tiene librerías que automatizan ciertas tareas y ayudan a visualizar los datos, tales como pandas-profiling, Sweetviz, D-Tale y Autoviz , mientras que en R encontramos summarytools, explore y dataMaid, entre otras. Estas herramientas nos ayudan para poder sumergirnos en los datos y lograr encontrar relaciones que nos permitan encontrar la mejor solución al problema.

Bibliografía