split / app.py
alexacido's picture
Upload 3 files
8cb5f9e verified
import gradio as gr
import pandas as pd
df_global = None
def subir_csv(file):
global df_global
df_global = pd.read_csv(file.name)
return f"Archivo cargado con {len(df_global)} filas y {len(df_global.columns)} columnas."
def responder_pregunta(pregunta):
global df_global
if df_global is None:
return "Primero debes subir un archivo CSV."
pregunta = pregunta.lower()
if "promedio" in pregunta:
numeric_cols = df_global.select_dtypes(include='number')
if numeric_cols.empty:
return "No hay columnas numéricas para calcular el promedio."
return numeric_cols.mean().to_string()
elif "columnas" in pregunta:
return f"Las columnas del archivo son: {', '.join(df_global.columns)}"
elif "filas" in pregunta:
return f"El archivo contiene {len(df_global)} filas."
else:
return "No entendí la pregunta. Prueba con: ¿Cuál es el promedio?, ¿Cuáles son las columnas?, ¿Cuántas filas hay?"
def app_interface(csv_file, pregunta):
mensaje = subir_csv(csv_file)
respuesta = responder_pregunta(pregunta)
return mensaje + "\n\n" + respuesta
iface = gr.Interface(
fn=app_interface,
inputs=[
gr.File(label="Sube tu archivo CSV"),
gr.Textbox(label="Pregunta sobre el archivo")
],
outputs=gr.Textbox(label="Respuesta"),
title="Analizador de CSV",
description="Sube un archivo CSV y haz preguntas como '¿Cuál es el promedio?' o '¿Cuáles son las columnas?'"
)
if __name__ == "__main__":
iface.launch()