fvl / app.py
felipeocampo's picture
Update app.py
1f90eaa verified
import gradio as gr
import pandas as pd
import joblib
import io
def predecir_excel(file):
try:
# Cargar el modelo cada vez para capturar errores si falta o está dañado
model = joblib.load("modelo_noshows.pkl")
if file is None:
return None, "⚠️ No se recibió ningún archivo."
# Obtener la ruta o el nombre temporal del archivo
file_path = file.name if hasattr(file, "name") else file
# Leer Excel
df = pd.read_excel(file_path)
# Predecir
pred = model.predict(df)
df["predicción"] = ["inasistencia" if p == 0 else "asistencia" for p in pred]
# Guardar Excel en memoria
output = io.BytesIO()
with pd.ExcelWriter(output, engine="openpyxl") as writer:
df.to_excel(writer, index=False)
output.seek(0)
return output, "✅ Predicción completada correctamente"
except Exception as e:
return None, f"❌ Error: {e}"
# Crear interfaz Gradio
iface = gr.Interface(
fn=predecir_excel,
inputs=gr.File(label="Sube un archivo Excel (.xlsx)", file_types=[".xlsx"]),
outputs=[
gr.File(label="📥 Descargar predicciones"),
gr.Textbox(label="Estado de la ejecución")
],
title="Predicción de inasistencias",
description="Sube un archivo Excel con tus datos y descarga el resultado con la predicción."
)
if __name__ == "__main__":
iface.launch()