Reporte Ejecutivo: Comunicar Resultados
De Analisis a AccionEl mejor analisis del mundo es inutil si no podes comunicar los resultados. En esta leccion vas a aprender a crear reportes ejecutivos que los decision-makers realmente lean y usen.
Estructura de un Reporte Ejecutivo
1. RESUMEN EJECUTIVO (1 parrafo)
- Que analizaste, que encontraste, que recomendas
2. KPIs PRINCIPALES (3-5 metricas)
- Los numeros clave con comparacion vs objetivo/periodo anterior
3. HALLAZGOS PRINCIPALES (3-5 puntos)
- Cada uno con un grafico de soporte
4. ANALISIS DETALLADO
- Profundidad para quien quiera explorar
5. RECOMENDACIONES (2-3 acciones concretas)
- Basadas en los datos
6. LIMITACIONES Y PROXIMOS PASOS
- Que NO podes concluir con estos datos
Crear el Reporte en Jupyter
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from IPython.display import Markdown, display
# Configuracion
sns.set_theme(style='whitegrid')
plt.rcParams.update({'figure.figsize': (12, 6), 'font.size': 12})
Seccion 1: Resumen Ejecutivo
# Cargar y preparar datos
np.random.seed(42)
meses = pd.date_range('2024-01-01', periods=24, freq='M')
df_ventas = pd.DataFrame({
'fecha': meses,
'ventas': np.cumsum(np.random.normal(50, 20, 24)) + 500,
'clientes': np.cumsum(np.random.poisson(15, 24)) + 200,
'ticket_promedio': np.random.normal(85, 10, 24)
})
df_ventas['mes'] = df_ventas['fecha'].dt.strftime('%b %Y')
df_ventas['anio'] = df_ventas['fecha'].dt.year
# Calcular KPIs
ventas_total = df_ventas['ventas'].iloc[-12:].sum()
ventas_anterior = df_ventas['ventas'].iloc[:12].sum()
crecimiento = (ventas_total - ventas_anterior) / ventas_anterior * 100
clientes_actual = df_ventas['clientes'].iloc[-1]
ticket_actual = df_ventas['ticket_promedio'].iloc[-12:].mean()
resumen = f"""
## Resumen Ejecutivo
Durante el periodo 2024-2025, las ventas totales alcanzaron
**${ventas_total:,.0f}**, representando un crecimiento del
**{crecimiento:+.1f}%** respecto al periodo anterior.
La base de clientes crecio a **{clientes_actual:,}** clientes activos
con un ticket promedio de **${ticket_actual:.2f}**.
**Recomendacion principal**: Invertir en adquisicion de clientes en
la region Sur, donde se identifica la mayor oportunidad de crecimiento.
"""
print(resumen)
Seccion 2: Dashboard de KPIs
fig = plt.figure(figsize=(16, 4))
fig.patch.set_facecolor('white')
kpis = [
('Ventas Totales', f'${ventas_total:,.0f}', f'{crecimiento:+.1f}%', crecimiento > 0),
('Clientes Activos', f'{clientes_actual:,}', '+18%', True),
('Ticket Promedio', f'${ticket_actual:.2f}', '+5.2%', True),
('NPS Score', '72', '-3 pts', False)
]
for i, (titulo, valor, delta, positivo) in enumerate(kpis):
ax = fig.add_subplot(1, 4, i+1)
ax.axis('off')
# Fondo sutil
color_fondo = '#E8F5E9' if positivo else '#FFEBEE'
ax.add_patch(plt.Rectangle((0.05, 0.05), 0.9, 0.9, transform=ax.transAxes,
facecolor=color_fondo, edgecolor='none', zorder=0))
ax.text(0.5, 0.75, titulo, transform=ax.transAxes, ha='center',
fontsize=11, color='gray')
ax.text(0.5, 0.45, valor, transform=ax.transAxes, ha='center',
fontsize=24, fontweight='bold')
color_delta = '#4CAF50' if positivo else '#F44336'
ax.text(0.5, 0.15, delta, transform=ax.transAxes, ha='center',
fontsize=14, color=color_delta, fontweight='bold')
plt.suptitle('KPIs - Periodo 2024-2025', fontsize=16, fontweight='bold', y=1.05)
plt.tight_layout()
plt.show()
Seccion 3: Hallazgos con graficos
fig, axes = plt.subplots(1, 2, figsize=(16, 6))
# Hallazgo 1: Tendencia creciente
axes[0].plot(df_ventas['fecha'], df_ventas['ventas'], 'o-', color='#2196F3', linewidth=2)
axes[0].fill_between(df_ventas['fecha'], df_ventas['ventas'], alpha=0.1, color='#2196F3')
axes[0].set_title('Las ventas muestran tendencia creciente consistente',
fontsize=13, fontweight='bold', loc='left')
axes[0].set_ylabel('Ventas ($)')
axes[0].spines['top'].set_visible(False)
axes[0].spines['right'].set_visible(False)
# Hallazgo 2: Crecimiento de clientes
axes[1].bar(df_ventas['fecha'], df_ventas['clientes'], color='#4CAF50', width=25)
axes[1].set_title('La base de clientes crece de forma sostenida',
fontsize=13, fontweight='bold', loc='left')
axes[1].set_ylabel('Clientes acumulados')
axes[1].spines['top'].set_visible(False)
axes[1].spines['right'].set_visible(False)
plt.tight_layout()
plt.show()
Seccion 4: Recomendaciones
recomendaciones = """
## Recomendaciones
1. **Aumentar inversion en marketing digital**: Los datos muestran que los
meses con mayor inversion tienen +35% de crecimiento en clientes nuevos.
2. **Expandir operaciones en region Sur**: La region muestra demanda insatisfecha
con un 45% menos de cobertura que la region Norte.
3. **Implementar programa de retencion**: El NPS bajo 3 puntos. Recomendamos
un programa de fidelizacion para los top 20% de clientes.
## Limitaciones
- Los datos no incluyen informacion de competidores
- El periodo analizado puede tener efectos estacionales no capturados
- Se necesitan datos de costo de adquisicion para calcular ROI
## Proximos Pasos
- Analisis de cohortes para entender retencion a 6 meses
- Modelo predictivo de churn para identificar clientes en riesgo
- A/B test del programa de fidelizacion propuesto
"""
print(recomendaciones)
Exportar el Reporte
# Desde Jupyter Notebook:
# File > Export Notebook As > PDF
# File > Export Notebook As > HTML
# Con nbconvert desde terminal:
# jupyter nbconvert --to html reporte.ipynb
# jupyter nbconvert --to pdf reporte.ipynb
# Guardar graficos individuales
# plt.savefig('grafico_tendencia.png', dpi=150, bbox_inches='tight', facecolor='white')
Video Recomendado
Como Crear Reportes de Datos Profesionales con Python
Ejercicio Practico
Crea un notebook 22_reporte.ipynb con un reporte ejecutivo completo:
- Resumen ejecutivo de 1 parrafo
- Dashboard de 4 KPIs con deltas
- Al menos 3 hallazgos, cada uno con su grafico
- Tabla resumen de datos clave
- Recomendaciones basadas en los datos
- Exporta como HTML
💡 Concepto Clave
Revisemos los puntos más importantes de esta lección antes de continuar.
Resumen
- Resumen ejecutivo primero: Los tomadores de decision leen esto y nada mas
- KPIs con contexto: Numeros absolutos + cambio vs referencia
- Hallazgos con evidencia: Cada insight respaldado por un grafico
- Recomendaciones accionables: No solo describir, proponer acciones
- Limitaciones honestas: Decir que NO podes concluir
- Exportar profesionalmente: HTML o PDF para compartir
🧠 Pon a prueba tu conocimiento
¿Cuál es el aspecto más importante que aprendiste en esta lección?
- Comprendo el concepto principal y puedo explicarlo con mis palabras
- Entiendo cómo aplicarlo en mi situación específica
- Necesito repasar algunas partes antes de continuar
- Quiero ver más ejemplos prácticos del tema
✅ ¡Excelente! Continúa con la siguiente lección para profundizar más.