Skip to content
View lesyan1995's full-sized avatar

Block or report lesyan1995

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
lesyan1995/README.md
  • 👋 Hi, I’m @lesyan1995
  • 👀 I’m interested in ...
  • 🌱 I’m currently learning ...
  • 💞️ I’m looking to collaborate on ...
  • 📫 How to reach me ...
  • 😄 Pronouns: ...
  • ⚡ Fun fact: ...

import streamlit as st import pandas as pd import numpy as np from io import BytesIO import matplotlib.pyplot as plt from fpdf import FPDF

Función para cargar estados financieros

def cargar_datos(): archivo = st.file_uploader("Sube un archivo de estados financieros (CSV o Excel)", type=["csv", "xlsx"]) if archivo is not None: try: df = pd.read_csv(archivo) if archivo.name.endswith(".csv") else pd.read_excel(archivo) st.session_state["datos"] = df st.success("Archivo cargado con éxito!") except Exception as e: st.error(f"Error al cargar archivo: {e}")

Función para calcular ratios financieros

def calcular_ratios(df): try: df["Liquidez"] = df["Activo Corriente"] / df["Pasivo Corriente"] df["Endeudamiento"] = df["Pasivo Total"] / df["Activo Total"] df["Rentabilidad"] = df["Utilidad Neta"] / df["Activo Total"] df["ROE"] = df["Utilidad Neta"] / df["Patrimonio"] df["ROA"] = df["Utilidad Neta"] / df["Activo Total"] return df except Exception as e: st.error(f"Error en el cálculo de ratios: {e}") return df

Función para evaluar eficiencia, eficacia y economía

def evaluar_eficiencia_economia_eficacia(df): try: df["Eficiencia"] = np.where(df["Gastos Administrativos"] / df["Ingresos Totales"] < 0.2, "Alta", "Baja") df["Eficacia"] = np.where(df["Cumplimiento Objetivos"] >= 80, "Alta", "Baja") df["Economía"] = np.where(df["Costo de Insumos"] / df["Producción"] < 1.5, "Buena", "Deficiente") return df except Exception as e: st.error(f"Error en la evaluación de eficiencia, eficacia y economía: {e}") return df

Función para evaluar riesgos

def evaluar_riesgos(df): try: df["Riesgo Financiero"] = np.where(df["Endeudamiento"] > 0.6, "Alto", "Bajo") df["Riesgo de Liquidez"] = np.where(df["Liquidez"] < 1, "Alto", "Bajo") df["Riesgo de Rentabilidad"] = np.where(df["ROE"] < 0.1, "Alto", "Bajo") return df except Exception as e: st.error(f"Error en la evaluación de riesgos: {e}") return df

Función para generar gráficos

def generar_graficos(df): fig, ax = plt.subplots(1, 4, figsize=(20, 5)) df[["Liquidez", "Endeudamiento", "Rentabilidad", "ROE", "ROA"]].plot(kind='bar', ax=ax[0]) df["Riesgo Financiero"].value_counts().plot(kind='pie', autopct='%1.1f%%', ax=ax[1], title="Riesgo Financiero") df["Eficiencia"].value_counts().plot(kind='pie', autopct='%1.1f%%', ax=ax[2], title="Eficiencia") df["Eficacia"].value_counts().plot(kind='pie', autopct='%1.1f%%', ax=ax[3], title="Eficacia") st.pyplot(fig)

Función para generar informe en PDF

def generar_informe_pdf(df): pdf = FPDF() pdf.add_page() pdf.set_font("Arial", size=12) pdf.cell(200, 10, txt="Informe de Auditoría Financiera", ln=True, align='C') pdf.ln(10) for col in df.columns: pdf.cell(40, 10, col, 1) pdf.ln() for i in range(len(df)): for col in df.columns: pdf.cell(40, 10, str(df.iloc[i][col]), 1) pdf.ln() pdf_output = BytesIO() pdf.output(pdf_output) return pdf_output

Interfaz de usuario

st.title("Prototipo de Auditoría Virtual") cargar_datos()

if "datos" in st.session_state: df = st.session_state["datos"] st.subheader("Vista previa de los datos cargados") st.write(df.head())

if st.button("Calcular Ratios Financieros y Evaluaciones"):
    df = calcular_ratios(df)
    df = evaluar_riesgos(df)
    df = evaluar_eficiencia_economia_eficacia(df)
    st.session_state["resultados"] = df

if "resultados" in st.session_state:
    st.subheader("Ratios Financieros, Evaluaciones y Riesgos")
    st.write(st.session_state["resultados"])  
    
    generar_graficos(st.session_state["resultados"])  
    
    pdf_output = generar_informe_pdf(st.session_state["resultados"])
    st.download_button(
        label="Descargar Informe en PDF",
        data=pdf_output.getvalue(),
        file_name="Informe_Auditoria.pdf",
        mime="application/pdf"
    )

Popular repositories Loading

  1. lesyan1995 lesyan1995 Public

    Config files for my GitHub profile.

  2. devdocs devdocs Public

    Forked from moodle/devdocs

    Source of the Moodle Developer Resources and Documentation

    TypeScript