Volver al curso

Data Science con Python: Análisis de Datos para Tu Carrera

leccion
22 / 23
intermediate
8 horas
Proyecto Final: Analisis de Datos Real

Reporte Ejecutivo: Comunicar Resultados

Lectura
50 min~5 min lectura

Reporte Ejecutivo: Comunicar Resultados

De Analisis a Accion

El 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:

  1. Resumen ejecutivo de 1 parrafo
  2. Dashboard de 4 KPIs con deltas
  3. Al menos 3 hallazgos, cada uno con su grafico
  4. Tabla resumen de datos clave
  5. Recomendaciones basadas en los datos
  6. 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.