Skip to content

Streamlit DataFrame: Exibindo, Estilizando e Otimizando DataFrames do Pandas

No campo da ciência de dados, a capacidade de visualizar e interagir com seus dados é fundamental. O Streamlit, uma biblioteca em Python, revolucionou a forma como interagimos com dados, tornando mais fácil do que nunca criar aplicativos web interativos e ricos em dados. Uma das funcionalidades mais poderosas do Streamlit é sua capacidade de trabalhar com DataFrames, a estrutura de dados usada pela popular biblioteca de manipulação de dados, Pandas. Neste artigo, exploraremos o mundo do Streamlit DataFrame, explorando como exibir, estilizar e otimizar seus DataFrames do Pandas para uma experiência perfeita de análise de dados.

O que é o Streamlit DataFrame?

O Streamlit DataFrame é uma funcionalidade da biblioteca Streamlit que permite exibir DataFrames do Pandas de forma interativa e visualmente atraente. É como pegar seu DataFrame do Pandas padrão, que geralmente é visualizado em um formato estático em um notebook Jupyter ou em um script Python, e dar vida a ele em um aplicativo web dinâmico.

A funcionalidade de DataFrame do Streamlit é construída sobre o Pandas, que é uma poderosa biblioteca de manipulação de dados em Python. Os DataFrames do Pandas são estruturas de dados tabulares heterogêneas de duas dimensões, com tamanho mutável e eixos etiquetados. Eles são incrivelmente versáteis e são indispensáveis em qualquer kit de ferramentas de cientista de dados. O Streamlit aprimora a funcionalidade dos DataFrames do Pandas fornecendo uma plataforma onde eles podem ser exibidos e manipulados de forma interativa.

Tutorial do Streamlit DataFrame

Já ouviu falar dessa incrível ferramenta de análise de dados e visualização de dados, que pode facilmente transformar seu aplicativo Streamlit em um Tableau?

PyGWalker (opens in a new tab) é uma biblioteca em Python que ajuda você a incorporar facilmente uma interface semelhante ao Tableau em seu próprio aplicativo Streamlit sem esforço. Confira este incrível vídeo produzido por Sven do Coding is Fun (opens in a new tab) demonstrando os passos detalhados para capacitar seu aplicativo Streamlit com esta poderosa biblioteca de visualização de dados em Python!


Agradecimentos especiais a Sven e sua grande contribuição (opens in a new tab) à comunidade do PyGWalker!

Além disso, você também pode conferir a página do GitHub do PyGWalker (opens in a new tab) para mais exemplos do PyGWalker.

Começando com os DataFrames do Streamlit

Para começar a usar o Streamlit DataFrame, você primeiro precisa instalar o Streamlit. Você pode fazer isso executando o comando pip install streamlit no seu terminal. Depois de instalar o Streamlit, você pode importá-lo para o seu script Python juntamente com o Pandas.

import streamlit as st
import pandas as pd

Em seguida, vamos criar um DataFrame simples para exibir. Para este exemplo, usaremos um DataFrame com dados sobre diferentes tipos de frutas.

data = {
    'Fruta': ['Maçã', 'Banana', 'Cereja', 'Tâmara', 'Sabugueiro'],
    'Quantidade': [10, 15, 20, 25, 30],
    'Preço': [0.5, 0.25, 0.75, 1.0, 2.0]
}
df = pd.DataFrame(data)

Para exibir esse DataFrame no Streamlit, tudo que você precisa fazer é usar a função st.dataframe().

st.dataframe(df)

Ao executar seu aplicativo Streamlit, você verá seu DataFrame exibido como uma tabela interativa. Você pode ordenar a tabela clicando nos cabeçalhos das colunas e pode ajustar a largura e altura da tabela arrastando os cantos.

Este é apenas um exemplo básico do que você pode fazer com o Streamlit DataFrame. Conforme exploramos mais a fundo este tópico, você descobrirá uma infinidade de recursos e técnicas que podem ajudá-lo a levar sua visualização de dados para o próximo nível.

Exibindo DataFrames no Streamlit

Como Exibir um DataFrame como uma Tabela Interativa Usando o Streamlit

Exibir um DataFrame como uma tabela interativa no Streamlit é tão simples quanto usar a função st.dataframe(), como vimos na seção anterior. No entanto, há mais do que apenas exibir o DataFrame. Você também pode personalizar a exibição de acordo com suas necessidades.

Por exemplo, você pode definir o número de linhas a serem exibidas usando o parâmetro height. Isso pode ser especialmente útil ao trabalhar com DataFrames grandes. Veja um exemplo:

st.dataframe(df, height=300)

Neste exemplo, o DataFrame será exibido com uma altura correspondente a 300 pixels, o que corresponde aproximadamente a 10 linhas. Se o DataFrame tiver mais de 10 linhas, uma barra de rolagem aparecerá, permitindo que você navegue pelos dados.

Você também pode destacar células específicas do DataFrame com base em determinadas condições. Por exemplo, você pode querer destacar as células que contêm valores acima de um determinado limite. Para fazer isso, você pode usar o método style do DataFrame, assim:

st.dataframe(df.style.highlight_max(axis=0))

Neste exemplo, as células com os valores máximos em cada coluna são destacadas. Você pode personalizar o destaque de acordo com suas necessidades modificando as condições dentro do método highlight_max().

Lidando com DataFrames Grandes no Streamlit

Trabalhar com DataFrames grandes no Streamlit pode ser um pouco desafiador, especialmente quando se trata de desempenho e usabilidade. No entanto, o Streamlit oferece várias funcionalidades que podem ajudá-lo a lidar com DataFrames grandes de forma eficaz. Um recurso como esse é a paginação. A paginação permite que você exiba um grande DataFrame em partes menores e mais gerenciáveis. Isso pode ser especialmente útil quando você está lidando com um DataFrame que possui centenas ou até mesmo milhares de linhas.

Para implementar a paginação no Streamlit, você pode usar a função st.beta_container() juntamente com um loop for. Aqui está um exemplo:

container = st.beta_container()
for i in range(0, len(df), 50):
    container.dataframe(df[i:i+50])

Neste exemplo, o DataFrame é dividido em partes de 50 linhas cada, e cada parte é exibida em um contêiner separado. Você pode navegar pelas partes usando a barra de rolagem.

Estilizando DataFrames no Streamlit

Posso Estilizar um DataFrame Usando CSS no Streamlit?

Sim, é possível estilizar um DataFrame no Streamlit usando CSS. O Streamlit permite que você aplique estilos CSS ao seu DataFrame usando a função st.markdown(). Essa função permite que você escreva código HTML e CSS diretamente em seu aplicativo Streamlit.

Por exemplo, você pode alterar a cor de fundo do seu DataFrame assim:

st.markdown("""
<style>
table {background-color: #f0f0f0;}
</style>
""", unsafe_allow_html=True)
st.dataframe(df)

Neste exemplo, a função st.markdown() é usada para definir um estilo CSS que altera a cor de fundo da tabela para cinza claro. O parâmetro unsafe_allow_html=True é necessário para permitir o uso de HTML e CSS no markdown.

Estilização de DataFrames no Streamlit

Além do CSS, o Streamlit também oferece várias funções incorporadas para estilizar seu DataFrame. Essas funções permitem que você aplique vários estilos ao seu DataFrame, como realçar células específicas, alterar a cor do texto e muito mais.

Por exemplo, você pode usar a função highlight_max() para realçar as células com os valores máximos em cada coluna, como vimos anteriormente. Você também pode usar a função background_gradient() para aplicar um gradiente de cores ao seu DataFrame, assim:

st.dataframe(df.style.background_gradient(cmap='Blues'))

Neste exemplo, um gradiente de cores é aplicado ao DataFrame, sendo que a intensidade da cor corresponde aos valores no DataFrame. O parâmetro cmap especifica o mapa de cores a ser usado para o gradiente.

Otimizando DataFrames no Streamlit

Como Otimizar um DataFrame Pandas Usando o Streamlit

Otimizar um DataFrame Pandas no Streamlit envolve melhorar seu desempenho e eficiência, especialmente ao lidar com conjuntos de dados grandes. O Streamlit oferece várias funcionalidades que podem ajudar a otimizar seu DataFrame, como o armazenamento em cache e a otimização de memória.

O armazenamento em cache no Streamlit pode melhorar significativamente o desempenho do seu aplicativo ao trabalhar com DataFrames grandes. Ao usar o decorador @st.cache, você pode garantir que seu DataFrame seja calculado apenas uma vez e que o resultado seja armazenado em cache para execuções subsequentes. Aqui está um exemplo:

@st.cache
def load_data():
    # Carregue seu DataFrame aqui
    df = pd.read_csv('large_dataset.csv')
    return df
 
df = load_data()
st.dataframe(df)

Neste exemplo, a função load_data(), que carrega um grande DataFrame de um arquivo CSV, é decorada com @st.cache. Isso significa que o DataFrame só é carregado uma vez e o resultado é armazenado em cache. Quando você executa seu aplicativo Streamlit novamente, o DataFrame é carregado do cache em vez de ser calculado novamente, o que pode economizar muito tempo.

Armazenamento em Cache do DataFrame Streamlit e Dicas de Desempenho

Aproveitar o poder do armazenamento em cache no Streamlit pode melhorar significativamente o desempenho do seu aplicativo. No entanto, é crucial usá-lo com cautela para evitar comportamentos inesperados. Aqui estão alguns pontos-chave a serem lembrados:

  • Parâmetros de entrada da função: O decorador @st.cache armazena em cache os resultados com base nos parâmetros de entrada da função. Se esses parâmetros mudarem, a função será recalculada. Esse recurso pode ser especialmente útil quando você deseja atualizar seu DataFrame com base na entrada do usuário.
@st.cache
def load_data(file_name):
    # Carregue seu DataFrame aqui
    df = pd.read_csv(file_name)
    return df
 
# Entrada do usuário para nome do arquivo
file_name = st.text_input('Informe o nome do arquivo')
df = load_data(file_name)
st.dataframe(df)
  • Mutação de Saída: O Streamlit permite que você armazene em cache funções que mutam sua saída usando o parâmetro allow_output_mutation=True no decorador @st.cache. No entanto, use com cautela, pois isso pode levar a comportamentos inesperados se não for usado corretamente.
@st.cache(allow_output_mutation=True)
def load_and_process_data(file_name):
    # Carregue e processe seu DataFrame aqui
    df = pd.read_csv(file_name)
    df['nova_coluna'] = df['coluna_antiga'].apply(alguma_funcao)
    return df
  • Limite de Exibição do DataFrame: Ao lidar com DataFrames grandes, é aconselhável limitar a quantidade de dados exibidos de uma vez. Você pode fazer isso usando o parâmetro height na função st.dataframe(). Isso pode melhorar significativamente o desempenho do seu aplicativo e melhorar a experiência do usuário.
# Exibir apenas uma parte do DataFrame
st.dataframe(df, height=300)

Streamlit DataFrame: Casos de Uso Avançados

Filtragem de DataFrames no Streamlit

A filtragem é uma operação comum na análise de dados que permite selecionar um subconjunto dos dados com base em certas condições. No Streamlit, você pode implementar facilmente a filtragem de um DataFrame usando os widgets interativos fornecidos pela biblioteca.

Por exemplo, você pode usar um seletor para permitir que o usuário selecione uma coluna para filtrar e um controle deslizante para selecionar o intervalo de valores a serem incluídos. Aqui está um exemplo:

coluna = st.selectbox('Selecione a coluna para filtrar', df.columns)
valor_min, valor_max = st.slider('Selecione o intervalo de valores', min(df[coluna]), max(df[coluna]), (min(df[coluna]), max(df[coluna])))
df_filtrado = df[(df[coluna] >= valor_min) & (df[coluna] <= valor_max)]
st.dataframe(df_filtrado)

Neste exemplo, o usuário pode selecionar uma coluna para filtrar em uma caixa de seleção e um intervalo de valores em um slider. O DataFrame é então filtrado com base nessas seleções, e o DataFrame filtrado é exibido.

DataFrames no Streamlit em Aprendizado de Máquina

O Streamlit não é apenas para visualização de dados; também é uma ferramenta poderosa para aprendizado de máquina. Você pode usar o Streamlit para criar aplicativos interativos de aprendizado de máquina, onde você pode exibir seus dados, treinar seus modelos e visualizar seus resultados, tudo em um só lugar.

Por exemplo, você pode usar um aplicativo do Streamlit para exibir um DataFrame de seus dados de treinamento, com opções para filtrar e ordenar os dados. Em seguida, você pode usar um botão para treinar um modelo de aprendizado de máquina com esses dados e exibir os resultados em um gráfico interativo.

Aqui está um exemplo simples:

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
 
# Exibir o DataFrame
st.dataframe(df)
 
# Botão para treinar o modelo
if st.button('Treinar Modelo'):
    # Dividir os dados em conjuntos de treinamento e teste
    X_train, X_test, y_train, y_test = train_test_split(df.drop('target', axis=1), df['target'], test_size=0.2, random_state=42)
 
    # Treinar o modelo
    modelo = RandomForestClassifier(n_estimators=100, random_state=42)
    modelo.fit(X_train, y_train)
 
    # Fazer previsões e calcular a precisão
    y_pred = modelo.predict(X_test)
    precisao = accuracy_score(y_test, y_pred)
 
    # Exibir a precisão
    st.write(f'Precisão: {precisao*100:.2f}%')

Neste exemplo, um RandomForestClassifier é treinado em um DataFrame df, sendo 'target' a variável alvo. A precisão do modelo é então exibida no aplicativo Streamlit.

Este é apenas um exemplo simples do que você pode fazer com o Streamlit no campo do aprendizado de máquina. As possibilidades são infinitas e, com a natureza interativa do Streamlit, você pode criar aplicativos de aprendizado de máquina poderosos e amigáveis ​​ao usuário.

Conclusão

O Streamlit revolucionou a forma como interagimos com dados, tornando mais fácil do que nunca criar aplicativos da web interativos e ricos em dados. Sua capacidade de trabalhar perfeitamente com Pandas DataFrames abriu um mundo de possibilidades para visualização e análise de dados. Seja você um cientista de dados experiente ou um iniciante começando, o Streamlit oferece uma plataforma poderosa e fácil de usar para exibir, estilizar e otimizar seus DataFrames.

Então por que esperar? Explore e comece a explorar o mundo do Streamlit DataFrame hoje mesmo!

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

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

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

Perguntas Frequentes

  1. Como posso estilizar um DataFrame no Streamlit? Você pode estilizar um DataFrame no Streamlit usando tanto CSS quanto funções de estilização incorporadas. Por exemplo, você pode alterar a cor de fundo do seu DataFrame usando CSS ou aplicar um gradiente de cores usando a função background_gradient().

  2. Como posso filtrar um DataFrame no Streamlit? O Streamlit fornece widgets interativos que você pode usar para filtrar seu DataFrame. Por exemplo, você pode usar uma caixa de seleção para permitir que o usuário selecione uma coluna para filtrar e um slider para selecionar o intervalo de valores a serem incluídos.

  3. Posso exibir imagens em um DataFrame no Streamlit? Sim, você pode exibir imagens em um DataFrame no Streamlit. Você pode usar a função st.image() para exibir imagens armazenadas em um DataFrame. No entanto, as imagens devem ser armazenadas como URLs ou dados binários para isso funcionar.