Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Programación orientada a datos con Python, Unidad 8 — Modelado de datos con clases, 8.3 — Preparación para dataframes ·

Normalización previa

Normalización previa: Preparación para DataFrames

Introducción

La normalización de datos es una etapa crucial antes de cargarlos en un DataFrame. Este proceso consiste en transformar y limpiar los datos para que estén en un formato adecuado y homogéneo, lo cual facilita la manipulación y análisis posterior. Es especialmente importante cuando trabajamos con grandes volúmenes de datos y queremos optimizar el rendimiento y minimizar errores durante el proceso.

Explicación principal

La normalización previa se refiere a las acciones que realizamos en los datos antes de convertirlos en un DataFrame. Estas acciones incluyen la limpieza, transformación, codificación e incluso la eliminación de datos irrelevantes o no válidos.

Ejemplo de Normalización Previa

Supongamos que estamos trabajando con una base de datos de clientes de una empresa. Esta base contiene campos como nombres, direcciones y números de teléfono. Antes de convertir este conjunto de datos en un DataFrame, debemos realizar algunas operaciones para normalizarlo.

import pandas as pd

# Ejemplo de datos desordenados
data = {
    'nombre': ['Juan Pérez', 'María Gómez', 'Sara', None],
    'dirección': ['Calle 123', 'Avenida 456, Ciudad X', 'Sin dirección especificada', 'Calle 789'],
    'teléfono': [None, '555-1234', '555-5678', None]
}

# Crear DataFrame
df = pd.DataFrame(data)

print("DataFrame original:")
print(df)

Normalización del nombre

def normalize_name(name):
    if pd.isna(name):
        return None
    else:
        return name.strip().title()

df['nombre'] = df['nombre'].apply(normalize_name)
print("\nDespués de normalizar el nombre:")
print(df)

Normalización de la dirección

def normalize_address(address):
    if pd.isna(address):
        return None
    else:
        address = address.strip()
        if 'Sin dirección especificada' in address:
            return None
        return address.title()

df['dirección'] = df['dirección'].apply(normalize_address)
print("\nDespués de normalizar la dirección:")
print(df)

Normalización del teléfono

def normalize_phone(phone):
    if pd.isna(phone):
        return None
    else:
        phone = str(phone).strip()
        if '555-1234' in phone or '555-5678' in phone:
            return phone
        return None

df['teléfono'] = df['teléfono'].apply(normalize_phone)
print("\nDespués de normalizar el teléfono:")
print(df)

Errores típicos / trampas

  1. Manejo incorrecto de valores nulos:
  • Tratar los valores None o NaN como una cadena vacía puede llevar a errores en el análisis.
  1. Convertir datos al tipo correcto:
  • Convertir una columna con valores numéricos a texto, o viceversa, sin controlar los tipos de dato adecuadamente puede ocasionar problemas.
  1. Ignorar duplicados:
  • No eliminar duplicados antes de convertir los datos en un DataFrame puede llevar a resultados inexactos y redundantes en el análisis.

Checklist accionable

  1. Revisar y limpiar valores nulos: Verifica que no haya valores None o vacíos innecesarios.
  2. Normalizar formatos de texto: Asegúrate de que los nombres, direcciones, etc., estén en un formato consistente (minúsculas, mayúsculas, espacios).
  3. Convertir tipos de dato adecuadamente: Convierte columnas numéricas a enteros o decimales según corresponda.
  4. Eliminar duplicados: Comprueba que no haya filas repetidas en el conjunto de datos.
  5. Validar rango y formato de datos: Verifica que los valores estén dentro del rango esperado (por ejemplo, rangos de edad).
  6. Normalizar fechas: Asegúrate de que las fechas estén en un formato adecuado.

Cierre con "Siguientes pasos"

La normalización previa es una etapa fundamental para preparar los datos antes de cargarlos en un DataFrame. Al seguir este proceso, puedes asegurarte de que tus análisis sean precisos y eficientes.

  • Próximamente: Analizar y visualizar los datos con Pandas.
  • Recomendación: Aprende a usar las funciones str.strip(), str.title(), y pd.to_numeric() para transformar y limpiar tus datos.
  • Proyecto real: Aplica estos conceptos en un proyecto real, como el análisis de una base de datos de clientes.

Espero que esta guía te sea útil para mejorar la calidad y eficiencia de tu trabajo con DataFrames. ¡Feliz codificación!

Contacto

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