🎯 Situación
Cada lunes por la mañana, un analista de operaciones en uno de nuestros clientes abría cuatro archivos Excel — uno por región — copiaba los datos en una hoja maestra, limpiaba los nombres de columnas que nunca coincidían, eliminaba las filas en blanco en la parte superior de cada archivo y formateaba el resultado antes de cargarlo manualmente en Power BI.
Tomaba unos 90 minutos. Cada semana. Durante dos años.
Un script de Python cambió todo eso.
⚠️ El reto
El proceso manual tenía tres problemas reales que se acumulaban con el tiempo.
📷 El proceso manual
- 90 minutos cada lunes antes de cualquier análisis
- Los nombres de columnas variaban por región y por persona
- Filas de encabezado en blanco en dos de los cuatro archivos
- Los ingresos a veces eran texto, a veces número
- Si el analista faltaba — sin reporte
❌ Lo que salía mal
- 2 errores de copiar-pegar encontrados en T1 — detectados solo porque un gerente notó que el total no cuadraba
- Una región cambió su encabezado de columna — el archivo maestro estuvo roto silenciosamente por 3 semanas
- Incorporar un nuevo analista = 3 horas solo para el proceso de consolidación de Excel
- La actualización de Power BI era manual — olvidada dos veces en 6 meses
Ninguno de estos era catastrófico individualmente. Juntos, representaban un proceso frágil y dependiente de una sola persona, sentado en la base del reporte semanal de la empresa.
🔍 El script
Aquí está el código real — ligeramente simplificado, pero cercano a lo que desplegamos. Usa pandas, la biblioteca estándar de manipulación de datos de Python, y glob para encontrar archivos automáticamente:
import pandas as pd
import glob
# Read all 4 Excel files from a folder
files = glob.glob('data/*.xlsx')
df = pd.concat([pd.read_excel(f) for f in files], ignore_index=True)
# Standardize column names
df.columns = df.columns.str.strip().str.lower().str.replace(' ', '_')
# Clean and filter
df['date'] = pd.to_datetime(df['date'], errors='coerce')
df['revenue'] = pd.to_numeric(df['revenue'], errors='coerce').fillna(0)
df = df[df['date'].notna()]
# Aggregate by month and region
summary = df.groupby([df['date'].dt.to_period('M'), 'region'])['revenue'].sum().reset_index()
summary.columns = ['month', 'region', 'total_revenue']
# Export clean file for Power BI
summary.to_csv('output/monthly_revenue.csv', index=False)
print(f"Done. {len(summary)} rows exported.")
Son 28 líneas. Lo que hace:
- Encuentra todos los archivos Excel automáticamente — soltar un nuevo archivo en la carpeta es suficiente para que se procese en la próxima ejecución
- Estandariza los nombres de columnas — minúsculas, sin espacios, sin espacios al final — independientemente de quién creó el archivo
- Maneja datos sucios — los valores de ingresos no numéricos se convierten en 0, las fechas no parseables se eliminan limpiamente
- Agrega y exporta — un CSV limpio que Power BI lee en una actualización programada
✓️ Lo que costó y lo que ganó
Escribir y probar este script tomó unas 3 horas. Es una inversión única.
- Tiempo ahorrado: 90 min/semana × 52 semanas = 78 horas/año devueltas al analista
- Tasa de errores: cayó a cero para errores de consolidación — el script se ejecuta correctamente o falla ruidosamente
- Resiliencia: el analista puede estar de vacaciones. El reporte sigue corriendo.
- Incorporación: un nuevo analista necesita entender un script, no un proceso de Excel de 12 pasos
- Extensibilidad: agregar una 5ta región significa soltar un nuevo archivo en la carpeta — nada más cambia
El único costo continuo: si la estructura del archivo fuente cambia significativamente (nuevas columnas, hojas renombradas), el script necesita una pequeña actualización. En dos años, eso ocurrió una vez.
💡 Síntesis
Python no requiere un trasfondo en ingeniería de datos para ser útil. Para la mayoría de las tareas de consolidación de datos que ocurren según un horario, 20 a 50 líneas de pandas son suficientes para automatizar todo el proceso.
El patrón que funciona:
- Identificar la tarea repetitiva — cualquier cosa que se hace semanal o mensualmente con los mismos archivos y los mismos pasos es candidata
- Escribir el script una vez — enfocarse en leer, limpiar, transformar y exportar. No sobre-ingenierizar.
- Programarlo — Programador de tareas de Windows, cron de macOS, o un trigger en la nube. Ejecutarlo la noche anterior a cuando se necesitan los datos.
- Conectar Power BI al output — un CSV limpio o tabla de base de datos, actualizado automáticamente
- Agregar manejo básico de errores — el script debe enviar una alerta si algo sale mal, no producir silenciosamente un archivo vacío
La pregunta no es si Python vale la pena aprender. Es si 90 minutos de trabajo manual cada semana — durante años — valen más que 3 horas de automatización una sola vez.
👉 La mejor automatización es la que construyes una vez y olvidas.
30 líneas de Python corriendo cada domingo por la noche es exactamente eso.