En esta página
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:
- Carga referencias — Parsea un CSV con columnas
Categoriasycodigos, construyendo un diccionario que mapea cada código entero a una o más categorías de negocio. - Procesa transacciones — Lee archivos de transacciones y consulta el código de actividad de cada fila contra el mapa de referencia.
- Coincidencia difusa — Usa
difflib.SequenceMatcherpara coincidencias aproximadas cuando fallan las búsquedas exactas por código. - Multiprocesamiento — Distribuye el trabajo entre núcleos de CPU mediante
multiprocessing.Poolpara mayor rendimiento en datasets grandes. - 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 multiprocesamientoverboseOG.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
| Capa | Elección |
|---|---|
| Lenguaje | Python 3 |
| Datos | Pandas |
| Coincidencia | difflib.SequenceMatcher, regex |
| Rendimiento | multiprocessing.Pool, cpu_count() |
| E/S | Lectura/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_csvde pandas y parseo de las columnasCategoriasycodigosen un diccionario de búsqueda. - Lectura de archivos de transacciones fila por fila y matching de cada valor
COD_ACTcontra 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
SequenceMatcherde 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 concpu_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 siendomaster).


Construyendo Galena AI