Spaces:
Build error
Build error
File size: 2,478 Bytes
b5ce52a | 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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | import gradio as gr
from analisis import AnalizadorDatos
analizador_global = None
def cargar_y_mostrar(file):
global analizador_global
analizador = AnalizadorDatos(file.name)
if not analizador.cargar_datos():
return "Error al cargar archivo", None, None
analizador_global = analizador
return (
f"Archivo cargado correctamente: {analizador.metadata['nombre']}\n"
f"- Tamaño: {analizador.metadata['tamaño_mb']} MB\n"
f"- Filas: {len(analizador.df)}\n"
f"- Columnas: {len(analizador.df.columns)}\n",
analizador.df.head(),
[col['nombre_columna'] for col in analizador.nulos_por_columna]
)
def generar_graficos(columnas):
global analizador_global
if not analizador_global:
return None
graficos = analizador_global.generar_graficos(columnas)
return [gr.Image(value=v['path'], label=k) for k, v in graficos.items()]
def generar_reporte():
global analizador_global
if not analizador_global:
return None, None
reporte_path = analizador_global.generar_reporte()
reporte_nulos = analizador_global.generar_reporte_nulos()
return reporte_path, reporte_nulos
with gr.Blocks(title="Análisis exploratorio avanzado con R y Python") as demo:
gr.Markdown("## Exploración de datos con R, Python y Gradio")
with gr.Row():
archivo_input = gr.File(label="Sube un archivo", file_types=[".csv", ".xlsx", ".json", ".parquet"])
cargar_btn = gr.Button("Cargar archivo")
estado_carga = gr.Textbox(label="Estado de carga", interactive=False)
df_preview = gr.Dataframe(label="Vista previa")
columnas_selector = gr.CheckboxGroup(label="Selecciona columnas para análisis", choices=[])
cargar_btn.click(
fn=cargar_y_mostrar,
inputs=[archivo_input],
outputs=[estado_carga, df_preview, columnas_selector]
)
graficos_output = gr.Group(label="Gráficos generados")
graficar_btn = gr.Button("Generar gráficos")
graficar_btn.click(fn=generar_graficos, inputs=[columnas_selector], outputs=[graficos_output])
with gr.Row():
generar_reporte_btn = gr.Button("Generar reporte")
reporte_html = gr.File(label="Descargar reporte")
reporte_nulos = gr.Textbox(label="Análisis de nulos")
generar_reporte_btn.click(
fn=generar_reporte,
inputs=[],
outputs=[reporte_html, reporte_nulos]
)
if __name__ == "__main__":
demo.launch() |