Herramientas: Python, pandas

Script de ejemplo

Codigo base para leer ventas y clientes, validar columnas, resumir por segmento y exportar el reporte.

Descargar .py

Problema

El reporte se arma todos los meses con copiar, pegar y formulas. Cambia poco, pero consume tiempo y deja espacio para errores.

Estructura esperada

ArchivoColumnas clave
ventas_mes.csvfecha, cliente_id, importe, estado
clientes.csvcliente_id, segmento

Codigo base

reporte_mensual_pandas.py
from pathlib import Path
import pandas as pd

BASE = Path("datos")
SALIDA = Path("salidas")
SALIDA.mkdir(exist_ok=True)

ventas = pd.read_csv(BASE / "ventas_mes.csv", parse_dates=["fecha"])
clientes = pd.read_csv(BASE / "clientes.csv")

requeridas = {"fecha", "cliente_id", "importe", "estado"}
faltantes = requeridas - set(ventas.columns)
if faltantes:
    raise ValueError(f"Columnas faltantes: {sorted(faltantes)}")

ventas_validas = ventas[ventas["estado"].eq("confirmada")].copy()
reporte = (
    ventas_validas
    .merge(clientes, on="cliente_id", how="left")
    .groupby("segmento", dropna=False, as_index=False)
    .agg(ventas=("importe", "sum"), operaciones=("importe", "count"))
    .sort_values("ventas", ascending=False)
)

reporte.to_excel(SALIDA / "reporte_mensual.xlsx", index=False)

Enfoque

  1. Leer fuentes con rutas parametrizadas.
  2. Validar columnas esperadas y tipos de datos.
  3. Calcular metricas en funciones pequenas.
  4. Exportar Excel/CSV y guardar log del proceso.

Validaciones

El script debe fallar temprano si faltan columnas o si los totales no coinciden. Automatizar tambien significa saber cuando detenerse.