act1ex / app.py
Jonaachar's picture
Create app.py
b02cacc verified
raw
history blame contribute delete
No virus
1.88 kB
import pandas as pd
# Definir los flujos de efectivo de cada proyecto
data = {
'Proyecto 1': [100, 110, 120, 130, 140],
'Proyecto 2': [100, 100, 100, 100, 200],
'Proyecto 3': [110, 120, 110, 120, 110],
'Proyecto 4': [150, 140, 130, 120, 110]
}
# Crear DataFrame con los flujos de efectivo
df = pd.DataFrame(data)
# Calcular el flujo de efectivo neto (FEN) para cada proyecto
def calcular_fen(flujos, tasa_descuento):
fen = 0
for i, flujo in enumerate(flujos):
fen += flujo / ((1 + tasa_descuento) ** (i + 1))
return fen
tasas_descuento = [0.1, 0.1, 0.1, 0.1, 0.1] # Suponiendo una tasa de descuento del 10% para todos los proyectos
df['FEN'] = df.apply(lambda row: calcular_fen(row.values, tasas_descuento), axis=1)
# Calcular la inversi贸n inicial para cada proyecto
inversiones_iniciales = {
'Proyecto 1': 0,
'Proyecto 2': 0,
'Proyecto 3': 0,
'Proyecto 4': 0
}
# Elegir los proyectos 贸ptimos para diferentes budgets
def elegir_proyectos_optimos(budget):
proyectos_optimos = []
df_temp = df.copy()
df_temp['Ranking'] = df_temp['FEN'] / df_temp.sum(axis=1)
df_temp = df_temp.sort_values(by='Ranking', ascending=False)
acumulado = 0
for index, row in df_temp.iterrows():
if acumulado + row[index] <= budget:
proyectos_optimos.append(index)
acumulado += row[index]
return proyectos_optimos
# a) Budget = 800
budget_a = 800
proyectos_a = elegir_proyectos_optimos(budget_a)
print(f"Proyectos 贸ptimos para un budget de {budget_a}: {proyectos_a}")
# b) Budget = 1200
budget_b = 1200
proyectos_b = elegir_proyectos_optimos(budget_b)
print(f"Proyectos 贸ptimos para un budget de {budget_b}: {proyectos_b}")
# c) Budget = 2400
budget_c = 2400
proyectos_c = elegir_proyectos_optimos(budget_c)
print(f"Proyectos 贸ptimos para un budget de {budget_c}: {proyectos_c}")