Normalización de la hoja de cálculo sin esfuerzo con LLM

Este artículo es parte de una serie de artículos sobre automatización Limpieza de datos Para cualquier conjunto de datos tabulares.

Puede probar la función descrita en este artículo en su propio conjunto de datos utilizando el CleanMyExcel.io servicio, que es gratuito y no requiere registro.

Empiece con el por qué

Una hoja de cálculo que contiene información sobre premios otorgados a películas

Consideremos esta hoja de cálculo de Excel, que contiene información sobre los premios otorgados a las películas. Se obtiene del libro Limpieza de datos para una ciencia de datos efectiva y esta disponible aquí.

Esta es una hoja de cálculo típica y común con la que todos pueden tener y lidiar en sus tareas diarias. Pero, ¿qué tiene de malo?

Para responder a esa pregunta, primero recordemos el objetivo final del uso de datos: para obtener ideas que ayuden a guiar nuestras decisiones en nuestras vidas personales o comerciales. Este proceso requiere al menos dos cosas cruciales:

  • Datos confiables: datos limpios sin problemas, inconsistencias, duplicados, valores faltantes, etc.
  • Datos ordenados: un marco de datos bien normalizado que facilita el procesamiento y la manipulación.

El segundo punto es la base principal de cualquier análisis, incluido el tratamiento de la calidad de los datos.

Volviendo a nuestro ejemplo, imagine que queremos realizar las siguientes acciones:

1. Para cada película involucrada en múltiples premios, enumere el premio y el año con el que se asocia.

2. Para cada actor/actriz que gane múltiples premios, enumere la película y el premio con el que están asociados.

3. Compruebe que todos los nombres de actores/actriz sean correctos y bien estandarizados.

Naturalmente, este conjunto de datos de ejemplo es lo suficientemente pequeño como para derivar esas ideas a los ojos o a mano si lo estructuramos (tan rápido como la codificación). Pero imagine ahora que el conjunto de datos contiene todo el historial de premios; Esto sería lento, doloroso y propenso a errores sin ninguna automatización.

Leer esta hoja de cálculo y comprender directamente su estructura por una máquina es difícil, ya que no sigue buenas prácticas de disposición de datos. Es por eso que ordenar datos es tan importante. Al garantizar que los datos estén estructurados de manera amigable para la máquina, podemos simplificar el análisis, automatizar las verificaciones de calidad y mejorar el análisis comercial, todo sin alterar el contenido real del conjunto de datos.

Ejemplo de una remodelación de estos datos:

Ejemplo de una remodelación de los datos de la hoja de cálculo anterior:

Ahora, cualquiera puede usar herramientas de bajo/sin código o consultas basadas en código (SQL, Python, etc.) para interactuar fácilmente con este conjunto de datos y obtener ideas.

El principal desafío es cómo convertir una hoja de cálculo brillante y de ojo humano en una versión ordenada legible por máquina.

¿Qué son los datos ordenados? ¿Un marco de datos bien formado?

El término Datos ordenados fue descrito en un artículo bien conocido llamado Datos ordenados por Hadley Wickham y publicado en el Journal of Statistical Software en 2014. A continuación se presentan las citas clave requeridas para comprender mejor los conceptos subyacentes.

Ordenar datos

“Estructurar conjuntos de datos para facilitar la manipulación, la visualización y el modelado”.

“Los conjuntos de datos ordenados proporcionan una forma estandarizada de vincular la estructura de un conjunto de datos (su diseño físico) con su semántica (su significado)”.

Estructura de datos

“La mayoría de los conjuntos de datos estadísticos son tablas rectangulares compuestas de filas y columnas. Las columnas casi siempre están etiquetadas, y las filas a veces están etiquetadas “.

Semántica de datos

“Un conjunto de datos es una colección de valores, generalmente números (si cuantitativos) o cadenas (si cualitativas). Los valores se organizan de dos maneras. Cada valor pertenece tanto a una variable como a una observación. Una variable contiene todos los valores que miden el mismo atributo subyacente (como altura, temperatura o duración) entre las unidades. Una observación contiene todos los valores medidos en la misma unidad (por ejemplo, una persona, un día o una carrera) a través de los atributos “.

“En un análisis dado, puede haber múltiples niveles de observación. Por ejemplo, en un ensayo de un nuevo medicamento para la alergia, podríamos tener tres tipos de observaciones:

  • Datos demográficos recolectado de cada persona (edad, sexo, raza),
  • Datos médicos recolectado de cada persona en cada día (número de estornudos, enrojecimiento de los ojos) y
  • Datos meteorológicos recogido en cada día (temperatura, recuento de polen) “.

Datos ordenados

“Tidy Data es una forma estándar de mapear el significado de un conjunto de datos a su estructura. Un conjunto de datos se considera desordenado o ordenado dependiendo de cómo sus filas, columnas y tablas correspondan a observaciones, variables y tipos. En datos ordenados:

  • Cada variable forma una columna.
  • Cada observación forma una fila.
  • Cada tipo de unidad de observación forma una tabla.

Problemas comunes con conjuntos de datos desordenados

Los encabezados de columna pueden ser valores en lugar de nombres variables.

  • Ejemplo desordenado: Una tabla donde los encabezados de la columna son años (2019, 2020, 2021) en lugar de una columna de “año”.
  • Versión ordenada: Una tabla con una columna de “año” y cada fila que representa una observación para un año determinado.

Se pueden almacenar múltiples variables en una columna.

  • Ejemplo desordenado: Una columna llamada “Age_Gender” que contiene valores como 28_Female
  • Versión ordenada: Columnas separadas para “edad” y “género”

Las variables pueden almacenarse tanto en filas como en columnas.

  • Ejemplo desordenado: Un conjunto de datos de seguimiento de los puntajes de las pruebas de estudiantes donde las asignaturas (matemáticas, ciencias, inglés) se almacenan como encabezados de columna y se repiten en filas en lugar de usar una sola columna “asignal”.
  • Versión ordenada: Una tabla con columnas para “ID de estudiante”, “asignatura” y “puntaje”, donde cada fila representa el puntaje de un estudiante para una materia.

Se pueden almacenar múltiples tipos de unidades de observación en la misma tabla.

  • Ejemplo desordenado: Un conjunto de datos de ventas que contiene información del cliente y inventario de almacenamiento en la misma tabla.
  • Versión ordenada: Tablas separadas para “clientes” y “inventario”.

Una sola unidad de observación podría almacenarse en múltiples tablas.

  • Ejemplo desordenado: Los registros médicos de un paciente se dividen en múltiples tablas (tabla de diagnóstico, tabla de medicamentos) sin una identificación de paciente común que las vincule.
  • Versión ordenada: Una sola tabla o tablas correctamente vinculadas utilizando una “ID de paciente” única.

Ahora que tenemos una mejor comprensión de qué son los datos ordenados, veamos cómo transformar un conjunto de datos desordenado en uno ordenado.

Pensando en el cómo

“Los conjuntos de datos ordenados son todos iguales, pero cada conjunto de datos desordenado es desordenado a su manera”. Hadley Wickham (cf. Leo Tolstoi)

Aunque estas pautas suenan claras en teoría, siguen siendo difíciles de generalizar fácilmente en la práctica para cualquier tipo de conjunto de datos. En otras palabras, comenzando con los datos desordenados, no existe ningún proceso o algoritmo simple o determinista para remodelar los datos. Esto se explica principalmente por la singularidad de cada conjunto de datos. De hecho, es sorprendentemente difícil definir con precisión variables y observaciones en general y luego transformar los datos automáticamente sin perder contenido. Es por eso que, a pesar de las mejoras masivas en el procesamiento de datos durante la última década, la limpieza y el formato de datos todavía se realizan “manualmente” la mayor parte del tiempo.

Por lo tanto, cuando los sistemas basados ​​en reglas complejos y apenas mantenibles no son adecuados (es decir, para tratar con precisión todos los contextos describiendo las decisiones por adelantado), los modelos de aprendizaje automático pueden ofrecer algunos beneficios. Esto otorga al sistema más libertad para adaptarse a cualquier datos generalizando lo que ha aprendido durante la capacitación. Muchos modelos de lenguaje grande (LLM) se han expuesto a numerosos ejemplos de procesamiento de datos, lo que los hace capaces de analizar los datos de entrada y realizar tareas como el análisis de la estructura de la hoja de cálculo, la estimación del esquema de la tabla y la generación de códigos.

Luego, describamos un flujo de trabajo hecho de módulos basados ​​en código y LLM, junto con la lógica de negocios, para remodelar cualquier hoja de cálculo.

Diagrama de un flujo de trabajo hecho de módulos basados ​​en código y LLM junto con la lógica de negocios para remodelar una hoja de cálculo

Codificador de hoja de cálculo

Este módulo está diseñado para serializar en el texto de la información principal necesaria de los datos de la hoja de cálculo. Solo se retiene el subconjunto necesario de las células que contribuyen al diseño de la tabla, eliminando información de formato no esencial o demasiado repetitiva. Al conservar solo la información necesaria, este paso minimiza el uso del token, reduce los costos y mejora el rendimiento del modelo. La versión actual es un algoritmo determinista inspirado en el documento Hojas de cálculo: codificación de hojas de cálculo para modelos de idiomas grandesque depende de la heurística. Más detalles al respecto serán el tema de un próximo artículo.

Análisis de la estructura de tabla

Antes de seguir adelante, pedirle a un LLM que extraiga la estructura de la hoja de cálculo es un paso crucial para construir las siguientes acciones. Aquí hay ejemplos de preguntas abordadas:

  • ¿Cuántas tablas están presentes y cuáles son sus ubicaciones (regiones) en la hoja de cálculo?
  • ¿Qué define los límites de cada tabla (por ejemplo, filas/columnas vacías, marcadores específicos)?
  • ¿Qué filas/columnas sirven como encabezados, y cualquier tablas tiene encabezados de nivel múltiple?
  • ¿Hay secciones de metadatos, estadísticas agregadas o notas que deben filtrarse o procesarse por separado?
  • ¿Hay alguna celda fusionada y, de ser así, cómo deben manejarse?

Estimación de esquema de tabla

Una vez que se ha completado el análisis de la estructura de la hoja de cálculo, ahora es el momento de comenzar a pensar en el esquema de tabla objetivo ideal. Esto implica dejar que el LLM procese de forma iterativa por:

  • Identificación de todas las columnas potenciales (encabezados de múltiples filas, metadatos, etc.)
  • Comparación de columnas para similitudes de dominio basadas en nombres de columnas y semántica de datos
  • Agrupación de columnas relacionadas

El módulo genera un esquema final con nombres y una breve descripción para cada columna retenida.

Generación de código para formatear la hoja de cálculo

Teniendo en cuenta el análisis de la estructura anterior y el esquema de la tabla, este último módulo basado en LLM debería redactar un código que transforma la hoja de cálculo en un marco de datos adecuado que cumple con el esquema de la tabla. Además, no se debe omitir contenido útil (por ejemplo, los valores agregados o calculados aún pueden derivarse de otras variables).

Como la generación del código que funciona bien desde cero en la primera iteración es un desafío, se agregan dos procesos iterativos internos para revisar el código si es necesario:

  • Comprobación de código: Cada vez que el código no se puede compilar o ejecutar, el error de rastreo se proporciona al modelo para actualizar su código.
  • Validación del marco de datos: Los metadatos del marco de datos creado, como nombres de columnas, primera y última fila, y estadísticas sobre cada columna, se verifican para validar si la tabla se ajusta a las expectativas. De lo contrario, el código se revisa en consecuencia.

Convertir el marco de datos en un archivo de Excel

Finalmente, si todos los datos se ajustan correctamente a una sola tabla, se crea una hoja de trabajo de este marco de datos para respetar el formato tabular. El activo final devuelto es un archivo de Excel cuya hoja activa contiene los datos de la hoja de cálculo ordenado.

Et voilà! El cielo es el límite para aprovechar al máximo su conjunto de datos recién ordenado.

No dude en probarlo con su propio conjunto de datos utilizando el CleanMyExcel.io servicio, que es gratuito y no requiere registro.

Nota final sobre el flujo de trabajo

¿Por qué se propone un flujo de trabajo en lugar de un agente para ese propósito?

Al momento de escribir, consideramos que un flujo de trabajo basado en LLM para subasinas precisas es más robusto, estable, iterable y mantenible que un agente más autónomo. Un agente puede ofrecer ventajas: más libertad y libertad en acciones para realizar tareas. No obstante, pueden ser difíciles de tratar en la práctica; Por ejemplo, pueden divergir rápidamente si el objetivo no es lo suficientemente claro. Creo que este es nuestro caso, pero eso no significa que este modelo no sea aplicable en el futuro de la misma manera que Agente de swe La codificación está funcionando, por ejemplo.

Siguientes artículos de la serie

En los próximos artículos, planeamos explorar temas relacionados, que incluyen:

  • Una descripción detallada del codificador de hoja de cálculo mencionado anteriormente.
  • Validez de datos: garantizar que cada columna cumpla con las expectativas.
  • Unicidad de datos: prevención de entidades duplicadas dentro del conjunto de datos.
  • Completa de datos: manejo de valores faltantes de manera efectiva.
  • Evaluación de la remodelación de datos, validez y otros aspectos clave de la calidad de los datos.

¡Manténganse al tanto!

Gracias a Marc Hobballah por revisar este artículo y proporcionar comentarios.

Todas las imágenes, a menos que se indique lo contrario, son del autor.