CoolFace
Apppublic

Sofi1606/Cashflow

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
app.py42 linesDownload Raw Back to root
1#Importamos las librerías necesarias2import streamlit as st3import numpy as np4import pandas as pd5import matplotlib.pyplot as plt6 7# La función que ayuda a realizar el valor presente 8def calculate_pv(cashflows, rate):9    pv = sum(cf / (1 + rate) ** i for i, cf in enumerate(cashflows))10    return pv11 12# Titulo de la página13st.title('Flujo de dinero: Calculadora de valor presente')14 15# Dar opción para meter la tasa de descuento16rate = st.number_input('Tasa de descuento (%)', min_value=0.0, max_value=100.0, value=10.0, step=0.1)/10017 18# Dar opción para meter cuantos años quiere calcular19n = st.number_input("Ingresa cuántos años quieres calcular", min_value = 0, step=1)20 21# Meter el flujo de dinero22cf_list = [0] * (n+1)23cf_dict = pd.DataFrame({"cashflows": cf_list}).astype(int)24cf_df = st.data_editor(cf_dict.T)25 26cashflows = np.array(cf_df.values[0])27 28# Genera el botón para calcular el valor presente29if st.button('Calcula valor presente'):30    pv = calculate_pv(cashflows, rate)31    st.write(f'El valor presente es: ${pv:,.2f}')32    33    # Para que se muestre en la gráfica los datos de valor presente34    colors = ['lightblue' if cf > 0 else 'lightsage' for cf in cashflows]35    plt.scatter(range(n+1), cashflows, c=colors)36    plt.title('Diagrama de flujo de dinero')37    plt.xlabel('Periodo')38    plt.ylabel('Flujo de dinero')39    for i, cf in enumerate(cashflows):40        plt.annotate(f'{cf:,.2f}', (i, cf), textcoords="offset points", xytext=(0,n), ha='center')41    st.pyplot(plt)42