Construyendo el Activity Code Analyzer

El Activity Code Analyzer (actcod) es un pipeline de datos en Python desarrollado durante la pasantía en Santander para categorizar millones de transacciones bancarias por sus códigos de actividad (COD_ACT). Mapea códigos numéricos crudos a categorías de negocio usando un CSV de referencia, con soporte de multiprocesamiento para procesar archivos grandes de transacciones de forma eficiente.

Qué hace

El pipeline lee datos de transacciones y un archivo de mapeo de referencia (referencias.csv), y luego:

  1. Carga referencias — Parsea un CSV con columnas Categorias y codigos, construyendo un diccionario que mapea cada código entero a una o más categorías de negocio.
  2. Procesa transacciones — Lee archivos de transacciones y consulta el código de actividad de cada fila contra el mapa de referencia.
  3. Coincidencia difusa — Usa difflib.SequenceMatcher para coincidencias aproximadas cuando fallan las búsquedas exactas por código.
  4. Multiprocesamiento — Distribuye el trabajo entre núcleos de CPU mediante multiprocessing.Pool para mayor rendimiento en datasets grandes.
  5. Exporta resultados — Escribe la salida categorizada con marcas de tiempo y registro de progreso.

El repositorio incluye dos versiones del script:

  • Verbose.py — Pipeline completo con logging detallado, estadísticas y multiprocesamiento
  • verboseOG.py — Prototipo anterior monohilo para validación

Contexto

Este proyecto surgió del trabajo exploratorio CodigosActividad archivado en el repositorio de la pasantía en Santander (txtversion), donde se probaron múltiples versiones de algoritmos (simple, avanzado, basado en SQL) antes de converger en el enfoque validado con multiprocesamiento de este repositorio.

La categorización de códigos de actividad respalda detección de fraude, segmentación de clientes e informes regulatorios — convirtiendo códigos numéricos opacos en categorías de negocio accionables.

Stack tecnológico

CapaElección
LenguajePython 3
DatosPandas
Coincidenciadifflib.SequenceMatcher, regex
Rendimientomultiprocessing.Pool, cpu_count()
E/SLectura/escritura CSV, exportación JSON

Proceso de desarrollo

El pipeline se construyó en pasos pequeños y comprobables durante la pasantía en Santander. Cada versión agregó una capacidad — carga de referencias, lógica de matching, procesamiento en paralelo — siguiendo la documentación oficial de Python para APIs y patrones.

Primer script funcional

  • Carga del CSV de referencia con read_csv de pandas y parseo de las columnas Categorias y codigos en un diccionario de búsqueda.
  • Lectura de archivos de transacciones fila por fila y matching de cada valor COD_ACT contra ese diccionario.
  • Escritura de salida categorizada en disco para validar resultados con una muestra pequeña antes de escalar.
  • Entregable: verboseOG.py — prototipo monohilo usado para confirmar mapeos con datos limitados.

Validación de lógica (monohilo)

  • Refinamiento de reglas de categorización en archivos pequeños sin multiprocessing para facilitar la depuración.
  • Uso de SequenceMatcher de difflib para coincidencias aproximadas cuando un código de actividad faltaba en la tabla de referencia.
  • Registro de estadísticas de match (exacto vs. fuzzy) para comparar la salida con las categorías de referencia manualmente.
  • Objetivo: demostrar corrección en un subconjunto conocido antes de distribuir el trabajo entre núcleos de CPU.

Capa de multiprocessing

  • División de lotes de transacciones y procesamiento con multiprocessing.Pool, dimensionado con cpu_count().
  • Diccionario de referencia de solo lectura compartido entre workers para evitar I/O duplicado.
  • Conservación de logging de progreso y exportaciones con timestamp para monitorear corridas largas en producción.
  • Entregable: versión paralela del pipeline para archivos completos de transacciones.

Script de producción validado

  • Ejecución del build con multiprocessing (Verbose.py) contra el dataset de referencia completo y verificación puntual de asignaciones de categoría a escala.
  • Comparación de throughput y consistencia de salida con la línea base monohilo.
  • Marcado de esta rama como script listo para producción en el repositorio.
  • Documentación de setup, entradas y salidas esperadas en el README de la rama main (la rama por defecto del código sigue siendo master).

Blog

recent-work

Construyendo Galena AI

Dashboard de detección de voz sintética — seis detectores ONNX detrás de un servicio FastAPI, confianza del veredicto, historial de llamadas y métricas interactivas del modelo.

Leer más →

Galena AI

Dashboard de detección de voz sintética — seis detectores ONNX vía FastAPI, confianza del veredicto, historial de llamadas y métricas interactivas.

Cómo se construyó →
border-home1