Spaces:
Sleeping
Sleeping
File size: 3,729 Bytes
71175ed 4d4aeb8 71175ed 4d4aeb8 71175ed 656c276 71175ed 583fa69 71175ed 52ee224 0cbacac 7c177db 71175ed 5b9fedf | 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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | 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
columnas_disponibles = [col['nombre_columna'] for col in analizador.nulos_por_columna]
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(),
gr.update(choices=columnas_disponibles)
)
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 procesar_nulos(metodo):
global analizador_global
if not analizador_global:
return "Error: No hay datos cargados", None
resultado = analizador_global.procesar_valores_nulos(metodo)
df_actualizado = analizador_global.df.head()
return resultado, df_actualizado
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")
gr.Markdown("### Procesamiento de Valores Nulos")
with gr.Row():
metodo_nulos = gr.Radio(
choices=["media", "mediana", "moda"],
label="Método para llenar valores nulos",
info="Media/Mediana: para columnas numéricas. Moda: para todas las columnas",
value="media"
)
procesar_nulos_btn = gr.Button("Procesar valores nulos")
resultado_nulos = gr.Textbox(label="Resultado del procesamiento", interactive=False)
df_actualizado = gr.Dataframe(label="Vista previa actualizada")
procesar_nulos_btn.click(
fn=procesar_nulos,
inputs=[metodo_nulos],
outputs=[resultado_nulos, df_actualizado]
)
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]
)
gr.Markdown("Gráficos generados")
graficos_output = gr.Group()
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__":
import os
os.environ["MPLCONFIGDIR"] = "/tmp" # Evita warning de permisos
print("✅ Lanzando Gradio...")
demo.launch(server_name="0.0.0.0", server_port=7860) |