🎯🎯Desafío IA: Visualiza tu Futuro
Buenos días a todos desde Chile
El ejercicio lo enfoque a un problema real, si continuo trabajando desde casa o arriendo una oficina
El prompt quedo asi:
Actúa como un analista de datos experto. Quiero tomar una decisión entre [Opción A: (Trabajar desde casa Home Office Búnker)] y
[Opción B: (Arrendar una Oficina Tradicional): ].
Escribe un script de Python que calcule los costos acumulados de ambas opciones a lo largo de [1 ] año y genere una gráfica comparativa visual.
Datos de la Opción A: [Requiere una inversión de capital única (CAPEX) de $550.000 (ventana + aire acondicionado) y un costo operativo anual de $300.000 ($25.000/mes en luz e internet).].
Datos de la Opción B: [Asumiendo tu tope de arriendo/gastos comunes ($450.000) más el traslado en auto ($100.000 al mes), te genera un costo operativo fijo de $550.000 mensuales.]
El script quedo asi:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from matplotlib.ticker import FuncFormatter
def formatear_pesos(x, pos):
"""Formatea números como pesos chilenos"""
return f'${x:,.0f}'.replace(',', '.')
def calcular_costos_opcion_a(meses=12):
"""
Calcula costos acumulados para Opción A (Home Office)
CAPEX inicial + costos operativos mensuales
"""
capex_inicial = 550000 # Inversión única (ventana + aire acondicionado)
costo_mensual = 25000 # Luz e internet
costos_acumulados = []
for mes in range(meses + 1): # +1 para incluir mes 0
if mes == 0:
costo_total = capex_inicial
else:
costo_total = capex_inicial + (costo_mensual * mes)
costos_acumulados.append(costo_total)
return costos_acumulados
def calcular_costos_opcion_b(meses=12):
"""
Calcula costos acumulados para Opción B (Oficina Tradicional)
Costo mensual fijo (arriendo + gastos comunes + traslado)
"""
costo_mensual = 550000 # Arriendo/gastos comunes + traslado
costos_acumulados = []
for mes in range(meses + 1):
costo_total = costo_mensual * mes
costos_acumulados.append(costo_total)
return costos_acumulados
def crear_tabla_comparativa(meses, costos_a, costos_b):
"""Crea una tabla comparativa de costos"""
data = {
'Mes': list(range(meses + 1)),
'Opción A (Home Office)': costos_a,
'Opción B (Oficina)': costos_b,
'Diferencia (B - A)': [b - a for a, b in zip(costos_a, costos_b)]
}
df = pd.DataFrame(data)
# Formatear números para mejor visualización
for col in ['Opción A (Home Office)', 'Opción B (Oficina)', 'Diferencia (B - A)']:
df[col] = df[col].apply(lambda x: f'${x:,.0f}'.replace(',', '.'))
return df
def generar_grafica_comparativa(meses, costos_a, costos_b):
"""Genera gráfica comparativa de costos"""
# Configurar el estilo de la gráfica
plt.style.use('seaborn-v0_8-darkgrid')
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 10))
# Gráfica 1: Costos acumulados
ax1.plot(range(meses + 1), costos_a, 'b-o', linewidth=2.5, markersize=8,
label='Opción A: Home Office', markevery=1)
ax1.plot(range(meses + 1), costos_b, 'r-s', linewidth=2.5, markersize=8,
label='Opción B: Oficina Tradicional', markevery=1)
# Resaltar punto de equilibrio
punto_equilibrio = None
for i in range(len(costos_a)):
if costos_b[i] >= costos_a[i] and i > 0:
punto_equilibrio = i
ax1.axvline(x=punto_equilibrio, color='green', linestyle='--',
alpha=0.7, label=f'Punto de equilibrio (mes {punto_equilibrio})')
break
ax1.set_xlabel('Meses', fontsize=12, fontweight='bold')
ax1.set_ylabel('Costo Acumulado', fontsize=12, fontweight='bold')
ax1.set_title('Comparación de Costos Acumulados: Home Office vs Oficina',
fontsize=14, fontweight='bold', pad=20)
ax1.legend(loc='upper left', fontsize=10)
ax1.grid(True, alpha=0.3)
# Formatear eje Y como pesos
ax1.yaxis.set_major_formatter(FuncFormatter(formatear_pesos))
# Gráfica 2: Diferencia de costos (B - A)
diferencias = [b - a for a, b in zip(costos_a, costos_b)]
colors = ['green' if d < 0 else 'red' for d in diferencias]
ax2.bar(range(meses + 1), diferencias, color=colors, alpha=0.7,
edgecolor='black', linewidth=1)
ax2.axhline(y=0, color='black', linestyle='-', linewidth=1)
ax2.set_xlabel('Meses', fontsize=12, fontweight='bold')
ax2.set_ylabel('Diferencia (Oficina - Home Office)', fontsize=12, fontweight='bold')
ax2.set_title('Diferencia de Costos: Oficina vs Home Office',
fontsize=14, fontweight='bold', pad=20)
# Formatear eje Y como pesos
ax2.yaxis.set_major_formatter(FuncFormatter(formatear_pesos))
# Agregar etiquetas de valor en las barras
for i, (d, color) in enumerate(zip(diferencias, colors)):
if i % 2 == 0: # Mostrar cada 2 meses para no saturar
ax2.text(i, d + (50000 if d >= 0 else -150000),
f'${abs(d):,.0f}'.replace(',', '.'),
ha='center', va='bottom' if d >= 0 else 'top',
fontsize=9, rotation=45, color=color)
plt.tight_layout()
return fig
def calcular_recomendacion(meses, costos_a, costos_b):
"""Calcula recomendación basada en los costos"""
costo_total_a = costos_a[-1]
costo_total_b = costos_b[-1]
ahorro = abs(costo_total_b - costo_total_a)
print("\n" + "="*60)
print("RESUMEN COMPARATIVO - 1 AÑO")
print("="*60)
print(f"Opción A (Home Office): ${costo_total_a:,.0f}".replace(',', '.'))
print(f"Opción B (Oficina): ${costo_total_b:,.0f}".replace(',', '.'))
print("-"*60)
if costo_total_a < costo_total_b:
print(f"✅ RECOMENDACIÓN: Opción A (Home Office)")
print(f" Ahorro anual: ${ahorro:,.0f}".replace(',', '.'))
print(f" Ahorro mensual promedio: ${ahorro/meses:,.0f}".replace(',', '.'))
else:
print(f"✅ RECOMENDACIÓN: Opción B (Oficina)")
print(f" Ahorro anual: ${ahorro:,.0f}".replace(',', '.'))
print(f" Ahorro mensual promedio: ${ahorro/meses:,.0f}".replace(',', '.'))
print("="*60)
# Configuración principal
meses = 12
# Calcular costos
costos_a = calcular_costos_opcion_a(meses)
costos_b = calcular_costos_opcion_b(meses)
# Crear tabla comparativa
tabla = crear_tabla_comparativa(meses, costos_a, costos_b)
print("\n📊 TABLA COMPARATIVA DE COSTOS:")
print("="*80)
print(tabla.to_string(index=False))
print("="*80)
# Calcular recomendación
calcular_recomendacion(meses, costos_a, costos_b)
# Generar y mostrar gráfica
fig = generar_grafica_comparativa(meses, costos_a, costos_b)
# Análisis adicional
print("\n📈 ANÁLISIS ADICIONAL:")
print("-"*60)
# Calcular punto de equilibrio exacto
for mes in range(1, meses + 1):
costo_mes_a = 550000 + (25000 * mes)
costo_mes_b = 550000 * mes
if costo_mes_b > costo_mes_a:
print(f"✓ A partir del mes {mes}, la Opción A es más económica")
break
# Calcular ROI de la inversión inicial
inversion_inicial = 550000
ahorro_mensual = 550000 - 25000 # Diferencia de costo mensual
meses_recuperar = inversion_inicial / ahorro_mensual
print(f"✓ ROI inversión inicial: {meses_recuperar:.1f} meses para recuperar la inversión")
print(f"✓ Ahorro mensual (después del punto de equilibrio): ${ahorro_mensual:,.0f}".replace(',', '.'))
El script se ejecuto en Visual Studio Code
Adjunto el grafico y las conclusiones.
Saludos
15
5 comments
Juan Rodríguez
3
🎯🎯Desafío IA: Visualiza tu Futuro
Comunidad Fundamentos IA
skool.com/fundamentos
🔥 Comunidad Fundamentos IA
Actualmente GRATIS. Aprende a usar IA para automatizar tu negocio, conseguir más clientes y ahorrar horas de tu vida!
Leaderboard (30-day)
Powered by