Cree aplicaciones web interactivas para proyectos de ciencia de datos y aprendizaje automático utilizando solo Python, ¡todo gracias a Streamlit!

Streamlit es una biblioteca Python de código abierto para crear aplicaciones web para proyectos de ciencia de datos y aprendizaje automático. Está diseñado para ser utilizado por científicos de datos e ingenieros de aprendizaje automático que no tienen amplias habilidades de desarrollo front-end. Tiene una sintaxis simple que le permite crear aplicaciones web interactivas con unas pocas líneas de código.

Al encapsular detalles técnicos complejos detrás de una interfaz fácil de usar, Streamlit permite a los usuarios concentrarse en explorar y presentar sus datos, prototipos o modelos en tiempo real. Esto la convierte en una herramienta valiosa para compartir conocimientos rápidamente.

Instalación de la biblioteca Streamlit

Crear un nuevo entorno virtual. Esto garantizará que no haya conflictos de versiones del paquete después de la instalación. iluminado. Entonces use pip para instalar Streamlit ejecutando el siguiente comando:

instagram viewer
pip install streamlit

Luego, verifique que la instalación esté instalada correctamente.

streamlit --version

Si la instalación se realiza correctamente, se mostrará la versión Streamlit instalada.

Creación de una aplicación sencilla de análisis y limpieza de datos

Crearás una aplicación web sencilla para aprender cómo funciona Streamlit y sus características. Esta aplicación podrá limpiar un conjunto de datos cargado, realizar análisis de datos y finalmente visualizar los datos.

El código fuente completo está disponible en un repositorio de GitHub.

Instalación e importación de las bibliotecas necesarias

Comience instalando Pandas, Matplotlib y Seaborn en el mismo entorno virtual en el que instaló Streamlit usando el siguiente comando:

pip install pandas matplotlib seaborn

Luego cree un nuevo script de Python e importe todas las bibliotecas instaladas.

import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

Esto le permitirá utilizar sus funcionalidades en su código.

Cargar un conjunto de datos y mostrar su contenido

Luego defina una función que leerá un conjunto de datos cargado. Luego devolverá un DataFrame si la operación de lectura se realiza correctamente. De lo contrario, mostrará un mensaje de error en la barra lateral. El error ocurre cuando el archivo no es un archivo CSV válido.

defload_data(uploaded_file):
try:
df = pd.read_csv(uploaded_file)
return df
except Exception as e:
st.sidebar.error('Error occurred while loading the file.'
' Please make sure it is a valid CSV file.')
returnNone

Defina otra función que utilizará Steamlit para mostrar el DataFrame en formato tabular. Sólo hará esto cuando el usuario verifique el Mostrar datos sin procesar caja. Utilizará Streamlit caja, marco de datos, y subtítulo funciones.

defexplore_raw_data(df):
st.subheader('Raw Data')
if st.checkbox('Show Raw Data'):
st.dataframe(df)

Una vez creado el DataFrame y mostrado los datos sin procesar, ahora necesita limpiar los datos, analizarlos y finalmente visualizarlos.

Realizar limpieza de datos

Comience definiendo una función que realizará la limpieza de datos. Esta función manejará los valores faltantes en el DataFrame y las filas duplicadas. El DataFrame limpio se muestra al usuario usando st.marco de datos funcionan si verifican el Mostrar datos limpios caja.

defdata_cleaning(df):
st.header('Data Cleaning')

# Remove Missing Values
st.subheader('Handling Missing Values')
df.dropna(inplace=True)
st.write("Missing values removed from the dataset.")

# Remove Duplicate Rows
st.subheader('Removing Duplicate Rows')
initial_rows = len(df)
df.drop_duplicates(inplace=True)
final_rows = len(df)
st.write(f"Removed {initial_rows - final_rows} duplicate rows.")

if st.checkbox('Show Cleaned Data'):
st.dataframe(df)

La función también muestra el número de filas duplicadas eliminadas.

Realizar análisis de datos

Definir una función de análisis de datos. Esta función mostrará estadísticas descriptivas del DataFrame y mostrará el mapa de calor de la matriz de correlación. Utilizará el st.pyplot función para mostrar el mapa de calor en la interfaz de usuario.

defdata_analysis(df):
st.header('Data Analysis')

# Descriptive Statistics
st.subheader('Descriptive Statistics')
st.write(df.describe())

# Correlation Matrix
st.subheader('Correlation Matrix')
corr_matrix = df.corr()
fig, ax = plt.subplots(figsize=(10, 8))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm',
center=0, ax=ax)
st.pyplot(fig)

Puede modificar la función anterior para realizar más análisis de datos. Esto le ayudará a obtener más información a partir de sus datos.

Realizar visualización de datos

La visualización de datos es una de las funcionalidades cruciales de la aplicación. Esto se debe a que brinda una visión de los datos visualmente de una manera amigable para los humanos. Por lo tanto, esta funcionalidad debería permitir a los usuarios cambiar el aspecto de los gráficos.

Para lograr esto, cree una función que permita a los usuarios seleccionar una columna, establecer el número de contenedores y elegir un color para el histograma. Luego generará un histograma y un diagrama de caja y los mostrará usando st.pyplot función.

defdata_visualization(df):
st.header('Data Visualization')

# Histogram
st.subheader('Histogram')
selected_column = st.selectbox("Select a column to visualize:",
df.columns)
num_bins = st.slider("Select number of bins:",
min_value=5, max_value=50, value=20)
plot_color = st.color_picker("Select histogram color", "#1f77b4")
plt.figure(figsize=(8, 6))
plt.hist(df[selected_column], bins=num_bins, edgecolor='black',
color=plot_color, alpha=0.7)
plt.xlabel(selected_column)
plt.ylabel('Frequency')
st.pyplot(plt)

# Box Plot
st.subheader('Box Plot')
selected_column = st.selectbox("Select a column for box plot:",
df.columns)
plot_color = st.color_picker("Select box plot color", "#1f77b4")
plt.figure(figsize=(8, 6))
sns.boxplot(x=df[selected_column], color=plot_color)
plt.xlabel(selected_column)
plt.ylabel('Value')
st.pyplot(plt)

Ahora tienes todas las funcionalidades principales de la aplicación.

Recopilar los comentarios de los usuarios

A veces, es posible que una funcionalidad no funcione como se esperaba. Luego necesita una forma para que los usuarios envíen sus comentarios. Una forma es que los usuarios se comuniquen con usted a través de un correo electrónico. Streamlit proporciona la interfaz para recopilar los comentarios del usuario, pero no proporciona una funcionalidad integrada para enviar correos electrónicos directamente. Sin embargo, puede integrar bibliotecas o servicios externos para enviar correos electrónicos desde su aplicación.

Para recopilar los comentarios del usuario, defina una función para presentarle un formulario.

deffeedback_form():
st.header('Feedback')
with st.form('Feedback Form'):
email = st.text_input("Your Email")
feedback = st.text_area("Feedback")
submitted = st.form_submit_button("Submit Feedback")
if submitted:
# Here, you can send the feedback to the developer's
# email using external services/APIs
st.success("Thank you for your feedback!")

Este formulario recopilará el correo electrónico y los comentarios del usuario y se los enviará a través de un correo electrónico.

Controlar el flujo de su programa y ejecutar la aplicación

Por último, necesita una función principal que junte todas estas funciones y controle el flujo del programa. Esta función también garantizará que los usuarios acepten sus términos de privacidad de datos antes de que la aplicación procese el conjunto de datos cargado.

defmain():
st.title('Data Cleaning, Analysis, and Visualization App')

st.sidebar.header('Upload Dataset')
uploaded_file = st.sidebar.file_uploader('Upload a CSV file', type=['csv'])

agree_terms = st.sidebar.checkbox("I agree to the terms")

if uploaded_file isnotNoneand agree_terms:
df = load_data(uploaded_file)

if df isnotNone:
explore_raw_data(df)
data_cleaning(df)
data_analysis(df)
data_visualization(df)

feedback_form()

Puede ejecutar su programa de forma independiente o importarlo como un módulo usando la construcción if __name__ == '__main__':.

if __name__ == '__main__':
main()

Continúe hasta la terminal y navegue hasta la ruta en la que reside su proyecto. Luego ejecute el siguiente comando para iniciar la aplicación:

streamlit run main.py

Reemplazar principal.py con el nombre real de su script. Después de ejecutar el comando Streamlit generará una URL local y una URL de red. Puede utilizar cualquiera de estas URL para interactuar con su aplicación.

La salida del programa es la siguiente:

Crear aplicaciones web interactivas para la ciencia de datos nunca ha sido tan fácil. No necesita habilidades avanzadas de desarrollo web para crear una interfaz de usuario para su aplicación.

¿Deberías seguir aprendiendo sobre desarrollo web?

Depende de tus objetivos específicos. Si prevé crear aplicaciones web complejas y ricas en funciones que requieran una gran cantidad de usuarios diseño de interfaz y funcionalidades avanzadas, entonces aprender tecnologías de desarrollo web podría ser beneficioso. Esto se debe a que en Streamlit tienes un control limitado sobre la personalización detallada de la apariencia y el comportamiento de tu aplicación.