Normalización de números y fechas
Introducción
El procesamiento de texto es una parte crucial en cualquier proyecto de análisis de datos o inteligencia artificial. La normalización de números y fechas es un paso fundamental para convertir estos elementos a formas uniformes que puedan ser procesados y analizados más fácilmente. Los números y las fechas pueden presentarse de maneras variadas, lo que puede crear problemas al trabajar con el texto en conjunto.
En este artículo, aprenderás sobre diferentes métodos para normalizar números y fechas en Python, junto con ejemplos prácticos y una guía detallada para evitar errores comunes. Además, obtendrás un checklist accionable para asegurarte de que tu proceso esté libre de problemas.
Explicación principal
Normalización de Números
Los números pueden aparecer en diferentes formatos, como enteros, decimales, con o sin ceros a la izquierda, y más. La normalización implica convertir todos estos números a un formato estándar para su uso uniforme.
Ejemplo 1: Normalización de Números Enteros
def normalize_numbers(text):
import re
# Encontrar todos los números enteros en el texto
numbers = re.findall(r'\b\d+\b', text)
for num in numbers:
# Convertir a formato estándar (sin ceros a la izquierda)
normalized_num = int(num.lstrip('0'))
# Sustituir el número original por su versión normalizada
text = re.sub(r'\b' + num + r'\b', str(normalized_num), text)
return text
# Ejemplo de uso
text = "Hay 0123 personas y 4567 en la sala."
print(normalize_numbers(text)) # Salida: "Hay 123 personas y 4567 en la sala."
Normalización de Fechas
Las fechas pueden aparecer en diferentes formatos, como dd/mm/yyyy, mm/dd/yyyy, o incluso en lenguaje natural. La normalización implica convertir todas estas fechas a un formato estándar.
Ejemplo 2: Normalización de Fechas en Formato ISO 8601
from dateutil.parser import parse
import re
def normalize_dates(text):
# Encontrar todos los patrones de fecha en el texto
dates = re.findall(r'\b\d{1,2}/\d{1,2}/\d{4}\b', text)
for date in dates:
try:
parsed_date = parse(date).isoformat()
# Sustituir la fecha original por su versión normalizada
text = re.sub(r'\b' + date + r'\b', parsed_date, text)
except ValueError:
pass # Ignorar formatos no válidos
return text
# Ejemplo de uso
text = "La conferencia se celebró el 10/05/2023 y terminará en 6/7/2024."
print(normalize_dates(text)) # Salida: "La conferencia se celebró el 2023-05-10T00:00:00.000Z y terminará en 2024-07-06T00:00:00.000Z."
Errores Típicos / Trampas
Error 1: Formatos no estándar
Asegúrate de cubrir todos los formatos posibles, ya que un formato no soportado puede causar errores.
def normalize_dates(text):
# Ejemplo de formato no soportado (mm/dd/yyyy) que podría generar un error
date = "01/02/2023"
try:
parsed_date = parse(date).isoformat()
except ValueError:
print(f"Formato no válido: {date}")
Error 2: Ambigüedades en fechas
Las fechas ambiguas, como 05/10, pueden interpretarse de diferentes maneras. Asegúrate de definir claramente el formato esperado.
def normalize_dates(text):
# Ejemplo ambiguo (mes/día vs día/mes)
date = "05/10"
try:
parsed_date = parse(date).isoformat()
except ValueError:
print(f"Ambigüedad en la fecha: {date}")
Error 3: Faltas de datos
Asegúrate de manejar los casos donde faltan datos, como 2023-13-01.
def normalize_dates(text):
# Ejemplo de falta de datos (mes 13)
date = "2023-13-01"
try:
parsed_date = parse(date).isoformat()
except ValueError:
print(f"Falta de datos: {date}")
Checklist Accionable
- Definir el formato estándar: Asegúrate de definir claramente el formato esperado para los números y fechas.
- Usar expresiones regulares: Utiliza expresiones regulares para identificar y normalizar las entradas.
- Manejar ambigüedades: Identifica y maneja casos ambiguos, como formatos de fecha que pueden interpretarse de diferentes maneras.
- Pruebas exhaustivas: Prueba tu función con una variedad de entradas para asegurarte de que cubre todos los casos posibles.
- Manejo de errores: Captura y maneja excepciones para evitar interrupciones no programadas.
Cierre
Siguientes pasos
- Aprender más sobre expresiones regulares: Las expresiones regulares son una herramienta esencial en el procesamiento de texto. Asegúrate de entender cómo funcionan y cómo usarlas efectivamente.
- Explorar normalización avanzada: Una vez que tengas la base, considera normalizar otros elementos del texto, como monedas o unidades de medida.
- Implementación en proyectos reales: Aplica tus habilidades a proyectos reales para mejorar tu flujo de trabajo y resultados.
¡Ahora estás listo para normalizar números y fechas con confianza!