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