Crie aplicativos web interativos para projetos de ciência de dados e aprendizado de máquina usando apenas Python, tudo graças ao Streamlit!

Streamlit é uma biblioteca Python de código aberto para a criação de aplicativos da web para projetos de ciência de dados e aprendizado de máquina. Ele foi projetado para ser usado por cientistas de dados e engenheiros de aprendizado de máquina que não possuem amplas habilidades de desenvolvimento front-end. Possui uma sintaxe simples que permite criar aplicativos da web interativos com algumas linhas de código.

Ao encapsular detalhes técnicos complexos por trás de uma interface amigável, o Streamlit permite que os usuários se concentrem na exploração e apresentação de seus dados, protótipos ou modelos em tempo real. Isso o torna uma ferramenta valiosa para compartilhar insights rapidamente.

Instalando a biblioteca Streamlit

Crie um novo ambiente virtual. Isso garantirá que não haja conflito de versão do pacote após a instalação Streamlit. Então use pip para instalar Streamlit executando o seguinte comando:

instagram viewer
pip install streamlit

Em seguida, verifique se a instalação está instalada corretamente.

streamlit --version

Se a instalação for bem-sucedida, a versão instalada do Streamlit será exibida.

Construindo um aplicativo simples de limpeza e análise de dados

Você criará um aplicativo da web simples para aprender como o Streamlit funciona e seus recursos. Este aplicativo será capaz de limpar um conjunto de dados carregado, realizar análise de dados e, finalmente, visualizá-los.

O código-fonte completo está disponível em um Repositório GitHub.

Instalando e importando as bibliotecas necessárias

Comece instalando Pandas, Matplotlib e Seaborn no mesmo ambiente virtual em que você instalou o Streamlit usando o seguinte comando:

pip install pandas matplotlib seaborn

Em seguida, crie um novo script Python e importe todas as bibliotecas instaladas.

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

Isso permitirá que você use suas funcionalidades em seu código.

Fazendo upload de um conjunto de dados e exibindo seu conteúdo

Em seguida, defina uma função que lerá um conjunto de dados carregado. Em seguida, ele retornará um DataFrame se a operação de leitura for bem-sucedida. Caso contrário, será exibida uma mensagem de erro na barra lateral. O erro ocorre quando o arquivo não é um arquivo 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 outra função que usará o Steamlit para exibir o DataFrame em formato tabular. Isso só acontecerá quando o usuário verificar o Mostrar dados brutos caixa de seleção. Ele utilizará o Streamlit caixa de seleção, quadro de dados, e subcabeçalho funções.

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

Depois de criar o DataFrame e mostrar os dados brutos, agora você precisa limpar os dados, analisá-los e, finalmente, visualizá-los.

Executando limpeza de dados

Comece definindo uma função que realizará a limpeza dos dados. Esta função irá lidar com valores ausentes no DataFrame e linhas duplicadas. O DataFrame limpo é então mostrado ao usuário usando st.dataframe funcionar se eles verificarem o Mostrar dados limpos caixa de seleção.

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)

A função também mostra o número de linhas duplicadas removidas.

Executando análise de dados

Defina uma função de análise de dados. Esta função mostrará estatísticas descritivas do DataFrame e exibirá o mapa de calor da matriz de correlação. Ele utilizará o st.pyplot função para exibir o mapa de calor na interface do usuário.

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)

Você pode modificar a função acima para realizar mais análises de dados. Isso o ajudará a obter mais insights de seus dados.

Executando visualização de dados

A visualização de dados é uma das funcionalidades cruciais do aplicativo. Isso ocorre porque ele fornece uma visão visual dos dados de uma maneira amigável. Esta funcionalidade deve, portanto, permitir que os usuários alterem a aparência das parcelas.

Para fazer isso, crie uma função que permitirá aos usuários selecionar uma coluna, definir o número de compartimentos e escolher uma cor para o histograma. Em seguida, ele gerará um histograma e um box plot e os exibirá usando st.pyplot função.

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)

Agora você tem todas as funcionalidades principais do aplicativo.

Coletando o feedback dos usuários

Às vezes, uma funcionalidade pode não funcionar conforme o esperado. Em seguida, você precisa de uma maneira para os usuários enviarem seus comentários. Uma maneira é os usuários entrarem em contato com você por e-mail. Streamlit fornece a interface para coletar feedback do usuário, mas não fornece funcionalidade integrada para enviar e-mails diretamente. No entanto, você pode integrar bibliotecas ou serviços externos para enviar e-mails do seu aplicativo.

Para coletar o feedback do usuário, defina uma função para apresentar um formulário ao usuário.

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 formulário coletará o e-mail e feedback do usuário e os enviará a você por e-mail.

Controlando o fluxo do seu programa e executando o aplicativo

Por último, você precisa de uma função principal que reúna todas essas funções e controle o fluxo do programa. Esta função também garantirá que os usuários concordem com os termos de privacidade de seus dados antes que o aplicativo processe o conjunto de dados carregado.

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()

Você pode executar seu programa de forma independente ou importá-lo como um módulo usando a construção if __name__ == '__main__':.

if __name__ == '__main__':
main()

Vá para o terminal e navegue até o caminho onde reside o seu projeto. Em seguida, execute o seguinte comando para iniciar o aplicativo:

streamlit run main.py

Substituir principal.py com o nome real do seu script. Após executar o comando, o Streamlit irá gerar um URL local e um URL de rede. Você pode usar qualquer um desses URLs para interagir com seu aplicativo.

A saída do programa é a seguinte:

Criar aplicativos web interativos para ciência de dados nunca foi tão fácil. Você não precisa de conhecimentos avançados de desenvolvimento web para criar uma interface de usuário para seu aplicativo.

Você ainda deve aprender desenvolvimento web?

Depende de seus objetivos específicos. Se você prevê a construção de aplicativos da Web complexos e ricos em recursos que exigem amplo conhecimento do usuário design de interface e funcionalidades avançadas, então aprender tecnologias de desenvolvimento web poderia ser benéfico. Isso ocorre porque no Streamlit você tem controle limitado sobre a personalização refinada da aparência e do comportamento do seu aplicativo.