Skip to content

Crie painéis interativos de dados com Streamlit: Um tutorial completo

Updated on

No campo da ciência de dados, a capacidade de visualizar e interagir com seus dados é fundamental. É aí que entra o Streamlit. O Streamlit é uma biblioteca Python de código aberto que permite criar aplicativos da web personalizados para exploração e visualização de dados. Neste tutorial, vamos mergulhar no mundo do Streamlit e aprender como construir painéis interativos, implantar modelos de aprendizado de máquina e muito mais.

Você já ouviu falar dessa incrível ferramenta de Análise de Dados e Visualização de Dados que transforma o seu aplicativo Streamlit em um Tableau?

PyGWalker (opens in a new tab) é uma biblioteca Python que ajuda você a incorporar facilmente uma interface semelhante ao Tableau em seu próprio aplicativo Streamlit.

PyGWalker para visualização de dados no Streamlit (opens in a new tab)

Introdução ao Streamlit

O que é o Streamlit?

O Streamlit é uma biblioteca Python de código aberto que facilita a criação de aplicativos da web personalizados para aprendizado de máquina e ciência de dados. Em um mundo onde os dados são reis, o Streamlit é a rainha, fornecendo as ferramentas necessárias para dar vida aos seus dados.

A interface intuitiva e amigável do Streamlit permite transformar scripts de dados em aplicativos da web compartilháveis rapidamente e facilmente. Com apenas algumas linhas de código, você pode criar painéis e visualizações de dados bonitos e interativos. Se você é um cientista de dados experiente ou um iniciante dando os primeiros passos no mundo dos dados, o Streamlit oferece uma plataforma versátil para ajudá-lo a entender e apresentar seus dados.

Os benefícios de usar o Streamlit para visualização de dados

A visualização de dados é um aspecto fundamental da análise de dados. Ela nos permite entender conjuntos de dados complexos representando-os em um formato gráfico e fácil de entender. O Streamlit se destaca nessa área, oferecendo uma série de benefícios:

  • Visualização em tempo real: As capacidades em tempo real do Streamlit significam que seus painéis serão atualizados instantaneamente conforme seus dados mudam. Isso é especialmente útil para monitorar feeds de dados ao vivo ou acompanhar KPIs.

  • Painéis interativos: Com o Streamlit, seus painéis não são apenas imagens estáticas, mas aplicativos da web interativos. Isso permite que os usuários manipulem os dados, ampliem áreas específicas e realmente aprofundem nos detalhes.

  • Facilidade de uso: O Streamlit foi projetado para ser fácil de usar. Você não precisa ser um desenvolvedor web para criar painéis impressionantes. Se você sabe escrever código Python, você pode usar o Streamlit.

  • Integração com pilha de ciência de dados em Python: O Streamlit se integra perfeitamente com bibliotecas populares em Python, como Pandas, NumPy e Plotly, tornando-se uma ferramenta poderosa para qualquer cientista de dados.

O papel do Streamlit em modelos de aprendizado de máquina

O Streamlit não é apenas para visualização de dados. Também é uma ferramenta poderosa para aprendizado de máquina. Com o Streamlit, você pode criar rapidamente aplicativos da web interativos para mostrar seus modelos de aprendizado de máquina. Isso pode ser particularmente útil para demonstrar as capacidades do seu modelo para partes interessadas ou para depurar e ajustar o modelo.

Por exemplo, você pode construir um aplicativo Streamlit que recebe a entrada do usuário, a passa para o seu modelo de aprendizado de máquina e exibe a previsão em tempo real. Ou você pode criar um aplicativo que permite ajustar os parâmetros do seu modelo e ver como isso afeta a saída. As possibilidades são infinitas.

Construindo um painel com Streamlit

Como construir um painel com Streamlit

Construir um painel com o Streamlit é um processo simples. Aqui está um exemplo básico para ajudá-lo a começar:

import streamlit as st
import pandas as pd
 
# Carregar dados
data = pd.read_csv('data.csv')
 
# Criar um título
st.title('Meu primeiro painel Streamlit')
 
# Exibir dados em uma tabela
st.table(data)

Neste exemplo, primeiro importamos as bibliotecas necessárias. Em seguida, carregamos nossos dados usando o Pandas. Em seguida, criamos um título para nosso painel usando a função st.title(). Por fim, exibimos nossos dados em uma tabela usando a função st.table().

Painel de dados em tempo real com Streamlit

Uma das principais características do Streamlit é sua capacidade de criar painéis em tempo real. Isso é particularmente útil ao trabalhar com feeds de dados em tempo real ou quando você precisa monitorar alterações em seus dados ao longo do tempo.

Para criar um painel em tempo real, você pode usar a função st.write() do Streamlit em um loop. Aqui está um exemplo:

import streamlit as st
import pandas as pd
import time
 
# Criar um título
st.title('Painel de dados em tempo real')
 
# Inicializar um DataFrame vazio
data = pd.DataFrame()
 
# Atualizar dados a cada segundo
for i in range(100):
    # Simular novos dados
    new_data = pd.DataFrame({'valor': [i]}, index=[time.time()])
    
    # Anexar novos dados aos dados existentes
    data = data.append(new_data)
    
    # Exibir dados
    st.write(data)
    
    # Esperar 1 segundo antes de atualizar
    time.sleep(1)

Neste exemplo, primeiro criamos um título para nosso painel. Em seguida, inicializamos um DataFrame vazio para armazenar nossos dados. Em seguida, entramos em um loop que simula a chegada de novos dados a cada segundo. Nós anexamos esses novos dados aos nossos dados existentes e exibimos usando a função st.write(). Por fim, esperamos um segundo antes de atualizar os dados novamente.

Visualização interativa de dados com Streamlit

O Streamlit também permite criar visualizações interativas de dados. Isso pode ser feito usando a função st.plotly_chart(), que integra o Streamlit com a biblioteca Plotly.

Aqui está um exemplo de como você pode criar um gráfico de dispersão interativo:

import streamlit as st
import pandas as pd

importar plotly.express como px

Carregar dados

dados = pd.read_csv('data.csv')

Criar um gráfico de dispersão

fig = px.scatter(data=dados, x='x', y='y')

Exibir o gráfico

st.plotly_chart(fig)


Neste exemplo, primeiro carregamos nossos dados. Em seguida, criamos um gráfico de dispersão usando o Plotly Express. Por fim, exibimos o gráfico usando a função `st.plotly_chart()`.

Este é apenas a ponta do iceberg quando se trata do que você pode fazer com o Streamlit. Com um pouco de criatividade e conhecimento em Python, você pode criar painéis interativos deslumbrantes que dão vida aos seus dados.

## Visualização de Dados em Tempo Real com o Streamlit

A capacidade do Streamlit de lidar com dados em tempo real é uma de suas características mais poderosas. Isso é particularmente útil para aplicativos que requerem monitoramento constante ou atualizações em tempo real. Por exemplo, você pode criar um painel do Streamlit para monitorar dados de sensores IoT em tempo real. Aqui está um exemplo simples:

```python
import streamlit as st
import random
import time

st.title('Dados de Sensor IoT em Tempo Real')

dados = []

for _ in range(100):
    dados.append(random.randint(0, 100))
    st.line_chart(dados)
    time.sleep(0.1)

Neste exemplo, estamos simulando dados de sensores IoT em tempo real gerando números aleatórios e atualizando o gráfico de linha a cada 0,1 segundos.

Modelos Interativos de Machine Learning com o Streamlit

A capacidade de interatividade do Streamlit também se estende a modelos de aprendizado de máquina. Você pode criar painéis que permitem aos usuários ajustar parâmetros do modelo e ver os efeitos em tempo real. Isso pode ser uma ferramenta poderosa para entender como diferentes parâmetros influenciam as previsões de um modelo.

Por exemplo, vamos supor que você tenha um modelo de aprendizado de máquina que prevê a perda de clientes com base em características como idade do cliente, tempo de permanência e cobranças mensais. Você pode criar um aplicativo do Streamlit que permita aos usuários ajustar esses parâmetros e ver a probabilidade de perda de clientes prevista em tempo real. Aqui está um exemplo básico:

import streamlit as st
from sklearn.ensemble import RandomForestClassifier
import numpy as np
 
st.title('Previsão de Perda de Clientes')
 
# Carregar modelo treinado
modelo = RandomForestClassifier()
modelo.load('meu_modelo.pkl')
 
# Obter entrada do usuário
idade = st.slider('Idade', 18, 100)
tempo_permanencia = st.slider('Tempo de Permanência (meses)', 1, 72)
cobrancas_mensais = st.slider('Cobranças Mensais', 20.0, 100.0)
 
# Fazer previsão
dados_entrada = np.array([[idade, tempo_permanencia, cobrancas_mensais]])
previsao = modelo.predict_proba(dados_entrada)
 
# Exibir previsão
st.write(f'Probabilidade de Perda: {previsao[0][1]}')

Neste exemplo, primeiro carregamos nosso modelo treinado. Em seguida, usamos a função slider do Streamlit para obter a entrada do usuário para a idade, tempo de permanência e cobranças mensais. Passamos essa entrada para nosso modelo para fazer uma previsão e, finalmente, exibimos a probabilidade prevista de perda.

Visualização de Dados IoT com o Streamlit

Com o aumento da Internet das Coisas (IoT), há uma demanda crescente por ferramentas que possam visualizar dados de IoT. O Streamlit é adequado para essa tarefa, graças às suas capacidades em tempo real e facilidade de uso.

Para este exemplo, vamos supor que temos um arquivo CSV chamado dados_sensor.csv que contém dados de sensores IoT em tempo real. Veja como você pode exibir esses dados no Streamlit:

import streamlit as st
import pandas as pd
import time
 
st.title('Dados de Sensor IoT em Tempo Real')
 
# Carregar os dados
dados = pd.read_csv('dados_sensor.csv')
 
# Exibir os dados em tempo real
for i in range(len(dados)):
    # Exibir o ponto de dados atual
    st.line_chart(dados[:i+1])
    
    # Aguardar um curto período de tempo antes de exibir o próximo ponto de dados
    time.sleep(0.1)

Neste exemplo, primeiro carregamos os dados do sensor do arquivo CSV. Em seguida, exibimos os dados em tempo real adicionando gradualmente um ponto de dados de cada vez ao gráfico de linha. Após cada ponto de dados ser adicionado, aguardamos um curto período de tempo antes de adicionar o próximo. Isso cria o efeito de os dados serem exibidos em tempo real.

Conclusão

O Streamlit é uma ferramenta poderosa para criar painéis interativos de dados. Seja visualizando dados IoT em tempo real, mostrando um modelo de aprendizado de máquina ou explorando um conjunto de dados, o Streamlit oferece uma plataforma fácil de usar e flexível para fazer isso. Com sua sintaxe baseada em Python e ampla gama de recursos, não é de surpreender que o Streamlit esteja se tornando uma escolha popular para cientistas de dados e analistas. Esses exemplos apenas arranham a superfície do que é possível com o Streamlit, e eu encorajo você a explorar ainda mais suas capacidades.

Você já ouviu falar desta incrível ferramenta de Análise de Dados e Visualização de Dados, que transforma seu aplicativo Streamlit em um Tableau?

PyGWalker (opens in a new tab) é uma biblioteca Python que ajuda você a incorporar facilmente uma interface semelhante ao Tableau em seu próprio aplicativo Streamlit.

PyGWalker para visualização de dados no Streamlit (opens in a new tab)

Perguntas Frequentes

O Streamlit é bom para painéis de controle?

Sim, o Streamlit é uma excelente ferramenta para criar painéis de dados interativos. É baseado em Python, o que o torna acessível para muitos cientistas de dados, e oferece uma ampla gama de recursos para visualização de dados e interatividade.

O Streamlit é melhor que o Flask?

O Streamlit e o Flask têm propósitos diferentes. O Flask é um framework web de propósito geral, enquanto o Streamlit foi especificamente projetado para criar painéis de dados. Se você está procurando criar um painel de dados de forma rápida e fácil, o Streamlit provavelmente é a melhor escolha.

Quais são as desvantagens do Streamlit?

Embora o Streamlit seja uma ferramenta poderosa, ele também tem suas desvantagens. Por exemplo, ele não é tão personalizável quanto algumas outras ferramentas de painel. Além disso, enquanto é ótimo para criar aplicativos simples e independentes, pode não ser a melhor escolha para aplicativos web mais complexos.

Por que o Dash é melhor que o Streamlit? Se Dash é melhor que Streamlit depende das suas necessidades específicas. Dash, que também é uma biblioteca Python para criar aplicações web interativas, oferece mais opções de personalização do que o Streamlit. No entanto, o Streamlit é frequentemente elogiado por sua simplicidade e facilidade de uso, o que pode torná-lo uma escolha melhor para prototipagem rápida e painéis simples.