Skip to content

Subir archivo en Streamlit: dominando la carga y visualización de archivos con Python

Bienvenido al mundo de Streamlit, un framework de Python que hace que la creación de aplicaciones web sea tan fácil como una brisa suave. Una función importante que ofrece Streamlit es su eficiente sistema de carga de archivos, que desglosaremos en esta guía de manera integral.

La funcionalidad de carga de archivos en cualquier aplicación web es una característica crítica que permite la interacción del usuario. Permite a los usuarios ingresar sus datos por diversas razones, como análisis de datos, procesamiento de imágenes o conversión de archivos. En el contexto de Streamlit, la función de carga de archivos adquiere una mayor importancia. Permite a científicos de datos y entusiastas del aprendizaje automático manipular, visualizar e interactuar con sus conjuntos de datos de manera directa. Profundicemos en el funcionamiento interno de la función de carga de archivos de Streamlit y exploremos todo su potencial.

¿Quieres crear una aplicación de análisis de datos y visualización de datos de forma gratuita en Streamlit?

PyGWalker (opens in a new tab) es una biblioteca de Python que te ayuda a incrustar fácilmente una interfaz similar a Tableau en tu propia aplicación de Streamlit sin esfuerzo. Mira este increíble video producido por Cómo explorar datos con PyGWalker en Python (opens in a new tab) que muestra los pasos detallados para potenciar tu aplicación de Streamlit con esta poderosa biblioteca de Python para visualización de datos!


Agradecimientos especiales a Sven y su gran contribución (opens in a new tab) a la comunidad de PyGWalker!

Además, también puedes consultar la página de GitHub de PyGWalker (opens in a new tab) para obtener más ejemplos de PyGWalker.

Widget de carga de archivos de Streamlit: tu puerta de entrada para la carga de archivos

¿Qué es un widget de carga de archivos de Streamlit, preguntas? Es un componente único que Streamlit ofrece para facilitar el proceso de carga de archivos. El widget de carga de archivos proporciona una interface interactiva donde los usuarios pueden cargar sus archivos con solo hacer clic en un botón.

En una aplicación de Streamlit, implementar un widget de carga de archivos es pan comido. La función streamlit.file_uploader es la encargada de hacer todo el trabajo pesado. Solo necesitas proporcionar un argumento de tipo string que será el título del widget de carga de archivos.

Aquí tienes un ejemplo rápido:

import streamlit as st
 
uploaded_file = st.file_uploader("Elige un archivo CSV", type='csv')

En el código anterior, "Elige un archivo CSV" es el título del widget de carga de archivos y type='csv' restringe el tipo de archivo a archivos CSV.

Cómo subir un archivo en Streamlit: descubriendo el proceso

Subir un archivo en Streamlit es muy fácil gracias a la simplicidad y facilidad de uso de la biblioteca. El archivo subido se almacena en memoria como un archivo temporal y puedes manipularlo como cualquier otro objeto de archivo.

Streamlit admite una multitud de tipos de archivos, incluyendo, pero no limitado a, imágenes, audio, video, CSV y PDF. Veamos el proceso de carga de archivos con un ejemplo más comprensivo.

import streamlit as st
 
uploaded_file = st.file_uploader("Elige tu archivo", type=['csv', 'png', 'jpg'])
if uploaded_file is not None:
    # Para leer el archivo como bytes:
    bytes_data = uploaded_file.getvalue()
    st.write(bytes_data)
    
    # Para convertirlo en un objeto de IO basado en string:
    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))
    st.write(stringio)
    
    # Para leer el archivo como string:
    string_data = stringio.read()
    st.write(string_data)

En este ejemplo, hemos ampliado los tipos de archivos a CSV, PNG y JPG. Una vez que se ha cargado el archivo, puedes leerlo como bytes, convertirlo en un objeto de IO basado en string o leerlo directamente como string.

Mostrando el archivo cargado: de los datos a la visualización

La verdadera alegría de cargar un archivo llega cuando puedes usar ese archivo para su procesamiento y visualización. Entonces, ¿cómo se muestra el archivo cargado en Streamlit? La respuesta es más simple de lo que crees.

Supongamos que has cargado un archivo CSV y quieres visualizarlo como un marco de datos utilizando Pandas. Aquí te mostramos cómo hacerlo:

import streamlit as st
import pandas as pd
 
uploaded_file = st.file_uploader("Carga un archivo CSV", type='csv')
if uploaded_file is not None:
    data = pd.read_csv(uploaded_file)
    st.write(data)

Este código mostrará el marco de datos directamente en tu aplicación de Streamlit, lo que te permitirá continuar con la manipulación o visualización de datos.

Manejando la carga de múltiples archivos: el poder de los datos en masa

Ahora que hemos conquistado la carga de archivos individuales, vayamos al siguiente nivel. ¿Puedes cargar múltiples archivos en Streamlit? ¡Absolutamente! Esta función puede ser particularmente útil cuando estás lidiando con múltiples conjuntos de datos o archivos masivos de imágenes, audio y más.

Para cargar múltiples archivos, simplemente establece el parámetro accept_multiple_files en True en la función st.file_uploader.

import streamlit as st
 
uploaded_files = st.file_uploader("Elige tus archivos", accept_multiple_files=True)
for uploaded_file in uploaded_files:
    st.write(uploaded_file.name)

Al cargar múltiples archivos, debes tener en cuenta el límite de tamaño de carga de archivos de Streamlit. Por defecto, Streamlit permite una carga máxima de 200MB. Sin embargo, puedes modificar este límite en el archivo de configuración de Streamlit. ¡Ya hemos cubierto las primeras cuatro partes de nuestra guía! Hemos visto cómo Streamlit nos permite realizar procesos de carga de archivos fácilmente, desde archivos únicos hasta archivos múltiples. ¡Pero no nos detendremos aquí! Mantente atento mientras nos adentramos en temas avanzados como validación, seguridad y más, en las siguientes partes de nuestra guía.

Barra de progreso de carga de archivos de Streamlit: Sigue el progreso de tus cargas

Ahora que hemos abordado la carga de archivos múltiples, es posible que te preguntes si hay alguna forma de seguir el proceso de carga. Streamlit también tiene esto cubierto con la barra de progreso de carga de archivos de Streamlit. Aparece automáticamente durante la carga de archivos, brindando a los usuarios una retroalimentación en tiempo real sobre el proceso de carga. Todo esto es manejado internamente por Streamlit, ¡por lo que no se requiere código adicional de tu parte!

Temas avanzados en la carga de archivos

A continuación, vamos a sumergirnos en algunos temas avanzados relacionados con la carga de archivos en Streamlit, comenzando con la validación de la carga de archivos.

Validación de carga de archivos de Streamlit

Es posible que necesites verificar el tipo o el tamaño del archivo cargado para asegurarte de que sea adecuado para tu aplicación. Este proceso se conoce como validación de carga de archivos. En Streamlit, puedes establecer el parámetro type en la función st.file_uploader para restringir los tipos de archivos que se pueden cargar.

Además, puedes implementar verificaciones de validación personalizadas después de que se haya cargado el archivo. Por ejemplo, puedes verificar el contenido de un archivo CSV para asegurarte de que tenga las columnas requeridas.

Seguridad de la carga de archivos de Streamlit

La seguridad es una preocupación fundamental al manejar la carga de archivos. La buena noticia es que Streamlit se toma la seguridad en serio. Todos los archivos cargados se almacenan en memoria, no en el disco. Cuando se vuelve a ejecutar el script, Streamlit elimina los archivos cargados anteriormente. Sin embargo, siempre es recomendable implementar medidas de seguridad adicionales según tu caso de uso específico.

Carga de archivos de Streamlit en S3

Si deseas almacenar los archivos cargados para su uso posterior, es posible que desees considerar cargarlos en un servicio de almacenamiento como AWS S3. Si bien Streamlit no proporciona una función incorporada para esto, es sencillo con la biblioteca boto3. Una vez que tienes el objeto de archivo de st.file_uploader, puedes cargarlo en S3.

Carga de archivos de Streamlit en base de datos

De manera similar, es posible que desees almacenar archivos cargados o sus datos directamente en una base de datos. Una vez que se carga el archivo en Streamlit, puedes procesarlo y guardar los datos en tu base de datos utilizando la biblioteca de Python adecuada para tu base de datos.

Carga de archivos de Streamlit en aprendizaje automático

En el contexto de proyectos de aprendizaje automático, la funcionalidad de carga de archivos de Streamlit brilla intensamente. Permite a los usuarios cargar conjuntos de datos directamente en la aplicación. Luego puedes procesar los datos, construir modelos, hacer predicciones e incluso mostrar los resultados, ¡todo dentro de la aplicación!

Por ejemplo, un usuario puede cargar una imagen que un modelo de aprendizaje automático procesa para identificar objetos o clasificar la imagen. ¡Las posibilidades son vastas y emocionantes!

Conclusión

En esta guía completa, hemos descubierto el potencial de la función de carga de archivos de Streamlit. Desde los conceptos básicos de carga de archivos únicos, hasta el manejo de archivos múltiples y la discusión de temas avanzados como la validación y la seguridad, lo hemos cubierto todo. También hemos abordado cómo integrar la carga de archivos de Streamlit con AWS S3 y bases de datos. Con estas herramientas en tu arsenal, estás bien equipado para crear aplicaciones web atractivas e interactivas utilizando Streamlit.

¿Has oído hablar de esta increíble herramienta de análisis y visualización de datos, que convierte tu aplicación de Streamlit en Tableau?

PyGWalker (opens in a new tab) es una biblioteca de Python que te ayuda a integrar fácilmente una interfaz similar a Tableau en tu propia aplicación de Streamlit sin esfuerzo.

PyGWalker para visualización de datos en Streamlit (opens in a new tab)

Preguntas frecuentes

1. ¿Cómo puedo cargar archivos en Streamlit?

Puedes cargar archivos en Streamlit utilizando la función st.file_uploader. Esta función proporciona un widget en tu aplicación de Streamlit a través del cual los usuarios pueden cargar sus archivos.

2. ¿Dónde almacena Streamlit los archivos cargados?

Streamlit almacena los archivos cargados en memoria, no en el disco. Estos archivos se tratan como archivos temporales y se eliminan cuando se vuelve a ejecutar el script.

3. ¿Cómo puedo cargar un archivo de API?

El st.file_uploader de Streamlit puede manejar cualquier tipo de archivo, incluidos los archivos de API. Una vez cargado el archivo, puedes procesarlo según tus necesidades.

4. ¿Cuál es el tamaño de carga para Streamlit?

De forma predeterminada, Streamlit permite un tamaño máximo de carga de 200 MB. Sin embargo, este límite se puede modificar en el archivo de configuración de Streamlit.