File size: 1,564 Bytes
bde820e
 
 
 
 
 
 
 
 
 
 
8cb5f9e
bde820e
 
 
 
8cb5f9e
 
 
bde820e
 
 
 
 
8cb5f9e
 
bde820e
8cb5f9e
 
bde820e
8cb5f9e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bde820e
 
8cb5f9e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

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()