OctaMonroy/2demo
1
1import streamlit as st2import pandas as pd3import numpy as np4 5st.title("App con pandas")6 7st.write("Esta app es de prueba solo para subir archivos y utilizar :red[pandas] en streamlit y huggingface.")8 9uploaded_file = st.file_uploader("Descarga tu archivo de excel en este espacio: ")10 11if uploaded_file:12 st.write(":green[Bien hecho, se ha subido tu archivo correctamente!!]")13 14 df = pd.read_csv(uploaded_file)15 16 st.write("Esto es un :blue[write] de *df.mean()*.")17 st.write(df.mean())18 19 st.write("Esto es un :blue[dataframe] de *df*.")20 st.dataframe(df)21 22 st.write("Esto es un :blue[data_editor] de *df* y se está guardando como *df_edit*")23 df_edit = st.data_editor(df)24 25 st.write("Esto es un :blue[write] de *df_edit.mean()*.")26 st.write(df_edit.mean())27 28 st.write("Esto es un :blue[write] de *df.std() ")29 st.write(df.std())30 31else:32 st.write(":red[No has subido tu archivo.]")33 34 35import gradio as gr36import pandas as pd37import matplotlib.pyplot as plt38 39# Función para generar el histograma40def generar_histograma(archivo, columna, bins=10):41 # Leer el archivo en un DataFrame de pandas42 df = pd.read_csv(archivo.name)43 44 # Comprobar si la columna seleccionada existe en el DataFrame45 if columna not in df.columns:46 return "La columna seleccionada no existe en el archivo."47 48 # Generar el histograma49 plt.figure(figsize=(10, 6))50 plt.hist(df[columna], bins=bins, color='skyblue', edgecolor='black')51 plt.title(f'Histograma de {columna}')52 plt.xlabel(columna)53 plt.ylabel('Frecuencia')54 55 # Guardar el histograma en un archivo temporal56 plt.savefig('histograma.png')57 plt.close()58 59 return 'histograma.png'60 61# Crear la interfaz con Gradio62def interfaz():63 # Obtener las columnas disponibles del archivo para selección64 def obtener_columnas(archivo):65 df = pd.read_csv(archivo.name)66 return gr.Dropdown.update(choices=list(df.columns))67 68 with gr.Blocks() as demo:69 # Cargar archivo CSV70 archivo = gr.File(label="Sube un archivo CSV")71 # Seleccionar columna72 columna = gr.Dropdown(label="Selecciona la columna para el histograma")73 # Seleccionar número de bins74 bins = gr.Slider(1, 100, value=10, label="Número de bins")75 # Botón para generar el histograma76 boton = gr.Button("Generar histograma")77 # Imagen para mostrar el histograma78 imagen = gr.Image(label="Histograma")79 80 archivo.change(obtener_columnas, inputs=archivo, outputs=columna)81 boton.click(generar_histograma, inputs=[archivo, columna, bins], outputs=imagen)82 83 return demo84 85# Ejecutar la interfaz86if __name__ == "__main__":87 demo = interfaz()88 demo.launch()89 90#No enseñó esto profeee :(91 92 93 94 95 96 