Limpieza de datos
# Limpieza de datos

La limpieza de datos (en inglés data cleansing o data scrubbing) es el acto de descubrimiento y corrección o eliminación de registros de datos erróneos de una tabla o base de datos. El proceso de limpieza de datos permite identificar datos incompletos, incorrectos, inexactos, no pertinentes, etc. y luego substituir, modificar o eliminar estos datos sucios ("data duty"). Después de la limpieza, la base de datos podrá ser compatible con otras bases de datos similares en el sistema.

Las inconsistencias descubiertas, modificadas o eliminadas en un conjunto de datos pueden haber sido causado por: las definiciones de diccionario de datos diferentes de entidades similares, errores de entrada del usuario y corrupción en la transmisión o el almacenaje.

La limpieza de datos se diferencia de la validación de datos, que casi siempre cumple la función de rechazar los registros erróneos durante la entrada al sistema y no en lotes de data. El proceso de limpieza de datos incluye la validación y además la corrección de datos, para alcanzar datos de calidad.

## Motivación

Datos que son falsos o incorrectos pueden crear conclusiones falsas y dirigir a inversiones. Si un gobierno quiere analizar datos de un censo de población será muy importante que los datos sean fiables para evitar tomar decisiones fiscales erróneas. En ámbitos laborales de forenses, contabilidad e investigación de fraudes usan la limpieza de datos para preparar los datos y se hace antes de mandarlos a un almacén de datos. Hay paquetes disponibles para poder limpiar o lavar datos de direcciones, típicamente hecho por una interfaz de programación de aplicaciones (API del inglés).

## Calidad de datos

La calidad de datos debe cumplir con los siguientes requisitos:

* Exactitud: Los datos deben cumplir los requisitos de integridad, consistencia y densidad.
* Integridad: Los datos deben cumplir los requisitos de Entereza y validez.
   * Entereza: Alcanzado por la corrección de datos que contienen anomalías.
   * Validez: Alcanzado por la cantidad de datos que satisfacen las restricciones de integridad.
* Consistencia: Alcanzado por la corrección de contradicciones y anomalías sintácticas.
* Uniformidad: Relacionado con irregularidades.
* Densidad: Conocer el cociente de valores omitidos sobre el número de valores totales.
* Unicidad: Relacionado con datos duplicados.

## Proceso de limpieza de datos

* Auditoría de Datos: Los datos son revisados con el empleo de métodos estadísticos de descubrir anomalías y contradicciones. Esto tarde o temprano da una indicación de las características de las anomalías y sus posiciones.
* Definición de Workflow (Flujo de Trabajo): La detección y el retiro de anomalías son realizados por una secuencia de operaciones sobre los datos sabidos como el workflow. Para alcanzar un workflow apropiado, se debe identificar las causas de las anomalías y errores. Si por ejemplo encontramos que una anomalía es un resultado de errores de máquina en etapas de entrada de datos, la disposición del teclado puede ayudar en la solución de posibles problemas.
* Ejecución de Workflow: En esta etapa, el workflow es ejecutado después de que su especificación es completa y su corrección es verificada. La implementación del workflow debería ser eficiente aún sobre los juegos grandes de los datos que inevitablemente plantean una compensación, porque la ejecución de la operación limpiadora puede ser cara.
* Post-Proceso y Control: Los datos que no podían ser corregidos durante la ejecución del workflow deberán ser corregidos manualmente, de ser posible. El resultado es un nuevo ciclo en el proceso de limpieza de datos donde los datos son revisados nuevamente para ajustarse a las especificaciones de un workflow adicional y realizar un tratamiento automático.

## Métodos más usados

* Análisis: El análisis en la limpieza de datos, es realizado para la detección de errores de sintaxis. Un analizador gramatical decide si una cuerda de datos es aceptable dentro de la especificación de datos permitida. Esto es similar al modo que un analizador gramatical trabaja con gramáticas y lenguas.
* Transformación de datos: La Transformación de Datos permite al trazar un mapa de datos, en el formato esperado. Esto incluye conversiones de valor o funciones de traducción así como normalización de valores numéricos para conformarse a valores mínimos y máximos.
* Eliminación de duplicados: La detección de duplicados requiere un algoritmo para determinar si los datos contienen representaciones dobles de la misma entidad. Por lo general, los datos son ordenados por un dato "llave" o "pivote" que permite la identificación más rápida.
* Método estadístico: Incluye analizar los datos usando promedios, desviación estándar, rangos, o algoritmos de cluster, este análisis se realiza por expertos que identifican errores. Aunque la corrección de datos sea difícil ya que no saben el valor verdadero, pueden ser resueltos poniendo los valores a un promedio u otro valor estadístico. Los métodos estadísticos también pueden ser usados para manejar los valores que fallan, que pueden ser substituidos por uno o varios valores posibles que por lo general son obtenidos por algoritmos de aumento de datos extensos...

## Herramientas de limpieza de datos

Hay muchas herramientas de limpieza de datos como y otros. También es común el uso de bibliotecas como Pandas (software) para Python (lenguaje de programación), o Dplyr para R (lenguaje de programación).

En este momento la única herramienta que permite la limpieza de datos de forma distribuida con la tecnología y robustez de Apache Spark es Optimus.

Optimus es el framework faltante para la limpieza, el pre-procesamiento y el análisis exploratorio de datos de una manera distribuida con Apache Spark. Implementa varias herramientas útiles para el manejo y manipulación de datos que hacen la vida del Científico de Datos mucho más fácil. La primera ventaja obvia sobre cualquier otra biblioteca o framework de limpieza de datos públicos es que funcionará en una computadora portátil o un gran cluster, y segundo, es increíblemente fácil de instalar, usar y entender.

Optimus es OpenSource y aquí encontrará la documentación y los ejemplos.

## Desafíos y problemas

* Corrección de error y pérdida de información: El mayor desafío dentro de la limpieza de datos es la corrección de valores, pues incluye el quitar duplicados y entradas inválidas. En muchos casos, la información disponible sobre tales anomalías es limitada e insuficiente de determinar las transformaciones necesarias o correcciones abandonando la tachadura de tales entradas como la única solución. La eliminación de datos aunque, conduce a la pérdida de información que puede ser en particular costosa si hay una cantidad grande de datos suprimidos.
* Mantenimiento de datos Limpiados: La limpieza de datos es cara y el tiempo consumido es grande. Después de haber realizado la limpieza de datos y el alcanzar una colección de datos sin errores, uno querría evitar la relimpieza de datos íntegramente después de que se realizan algunos cambios en la base de datos. El proceso sólo debería ser repetido sobre los valores que se han cambiado, esto significa, que debemos guardar un linaje limpiador que requiere una eficiente colección de datos y técnicas de administración de datos.
* Limpieza de datos en entornos virtualmente integrados: En Fuentes prácticamente integradas como DiscoveryLink de la IBM, la limpieza de datos tiene que ser realizada siempre con acceso de datos de diferentes fuentes, con una considerable disminución el tiempo de respuesta y la eficacia.
* Limpieza de datos en el Framework: En muchos casos no será posible llegar a un completo mapa de limpieza de datos, que guíe el proceso por adelantado. Esto hace que la limpieza de datos sea un proceso iterativo que implica la exploración significativa y la interacción que puede requerir un framework, es decir, un marco que incluya una colección de métodos para la detección de errores y la eliminación además de la revisión de datos. Esto puede ser integrado con otras etapas informáticas como la integración y el mantenimiento
