Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Programación orientada a datos con Python, Unidad 2 — Estructuras de datos orientadas a información, 2.3 — Estructuras compuestas ·

Lectura clara de datos complejos

Lectura clara de datos complejos

Introducción

La lectura y comprensión de datos complejos son fundamentales en la programación orientada a datos con Python. Estos datos pueden ser estructurados, no estructurados o una combinación de ambos, presentando desafíos específicos en su procesamiento. En esta unidad, aprenderemos cómo manejar listas de diccionarios anidados y otros tipos de estructuras compuestas para lograr una lectura clara y eficiente.

Explicación principal

Listas de diccionarios anidados

Las listas de diccionarios anidados son un formato común para representar datos complejos. Cada elemento en la lista es un diccionario que puede contener otros diccionarios, creando una estructura jerárquica.

Ejemplo:

data = [
    {
        "nombre": "Alice",
        "edad": 30,
        "empleados": [
            {"nombre": "Bob", "edad": 25},
            {"nombre": "Charlie", "edad": 28}
        ]
    },
    {
        "nombre": "Bob",
        "edad": 35
    }
]

Normalización básica

La normalización de datos implica descomponer las estructuras anidadas en tablas más simples, reduciendo la redundancia y mejorando la legibilidad. En Python, esto se puede hacer manualmente o utilizando bibliotecas como pandas.

Ejemplo:

import pandas as pd

# Desnormalización a un DataFrame de Pandas
df = pd.DataFrame(data)
df_empleados = pd.json_normalize(data, 'empleados')
df = df.join(df_empleados.set_index('id'), on='id')

print(df)

Errores típicos / trampas

  1. Acceder a campos inexistentes: Acceder a un campo que no existe en un diccionario anidado puede causar un KeyError.
   print(data[0]['no_existe'])
  1. No manejar listas de diferentes longitudes: Si las listas anidadas tienen tamaños diferentes, podrían generar errores o comportamientos inesperados.
   # Ejemplo de lista con diferentes longitudes
   data = [
       {"nombre": "Alice", "edad": 30},
       {"nombre": "Bob", "edad": 25, "empleados": []}
   ]
  1. No manejar tipos incorrectos: Suponer que un campo siempre será del mismo tipo puede llevar a problemas.

Checklist accionable

  1. Revisar la estructura de los datos: Utiliza print(data) para visualizar la estructura y asegurarte de entenderla.
  2. Usar manejo de errores: Asegúrate de manejar posibles errores al acceder a campos que pueden no existir.
  3. Convertir listas anidadas en DataFrame con pandas.json_normalize.
  4. Normalizar listas de diferentes longitudes: Utiliza bucles o funciones como zip() para manejar listas de tamaños diferentes.
  5. Validar tipos de datos: Asegúrate de que los campos sean del tipo esperado antes de realizar operaciones.

Cierre: Siguientes pasos

  • Explorar más sobre pandas.json_normalize y otras funciones similares en pandas.
  • Practicar con conjuntos reales de datos: Trabaja con bases de datos complejas para mejorar tu comprensión.
  • Automatizar la normalización: Considera crear funciones que puedan normalizar cualquier estructura anidada automáticamente.

La lectura y manejo de datos complejos es un pilar fundamental en la programación orientada a datos. Con práctica, podrás abordar estos desafíos con mayor eficiencia y precisión.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).