1
resposta

[Projeto] 05 Desafio: adicionando input widgets

Conceito: sera mapeado as colunas que ainda não possuem filtros e aplicar a lógica correta de componentes (widgets) do Streamlit, filtros dinâmicos são pontes entre a interface do usuário e o motor de dados (Pandas). Eles transformam uma interação visual

Implementação do Código

--- Adicionando filtros na Barra Lateral ---

st.sidebar.title('Filtros')

1. Filtro de Texto (Local da Compra)

with st.sidebar.expander('Local da compra'):
local_compra = st.multiselect(
'Selecione o local da compra',
dados['Local da compra'].unique(),
dados['Local da compra'].unique()
)

2. Filtro Numérico (Avaliação da Compra)

with st.sidebar.expander('Avaliação da compra'):
avaliacao = st.slider(
'Selecione a avaliação da compra',
1, 5, value=(1, 5)
)

3. Filtro de Texto (Tipo de Pagamento)

with st.sidebar.expander('Tipo de pagamento'):
tipo_pagamento = st.multiselect(
'Selecione o tipo de pagamento',
dados['Tipo de pagamento'].unique(),
dados['Tipo de pagamento'].unique()
)

4. Filtro Numérico (Quantidade de Parcelas)

with st.sidebar.expander('Quantidade de parcelas'):
qtd_parcelas = st.slider(
'Selecione a quantidade de parcelas',
1, 24, (1, 24)
)

Integração na Query 
query = '''

Produto in @produtos and
Categoria do Produto in @categoria and
@preco[0] <= Preço <= @preco[1] and
@frete[0] <= Frete <= @frete[1] and
@data_compra[0] <= Data da Compra <= @data_compra[1] and
Vendedor in @vendedores and
Local da compra in @local_compra and
@avaliacao[0] <= Avaliação da compra <= @avaliacao[1] and
Tipo de pagamento in @tipo_pagamento and
@qtd_parcelas[0] <= Quantidade de parcelas <= @qtd_parcelas[1]
'''

dados_filtrados = dados.query(query)

1 resposta

Oii Moacir, tudo bem?

Obrigado por compartilhar sua solução no fórum, ela está bem estruturada e o raciocínio está correto!

A escolha dos widgets foi certeira: st.multiselect para colunas categóricas (Local da compra e Tipo de pagamento) e st.slider com intervalo para as numéricas (Avaliação da compra e Quantidade de parcelas). O uso do expander na sidebar também deixa a interface mais organizada.

A integração na query também está correta. Só um ponto que vale conferir: no slider de Avaliação da compra, você passou value=(1, 5) como kwarg nomeado, enquanto no de Quantidade de parcelas passou (1, 24) posicionalmente. Ambos funcionam, mas manter o padrão deixa o código mais legível, considere usar value= nos dois para consistência.

# Consistente:
qtd_parcelas = st.slider(
    'Selecione a quantidade de parcelas',
    1, 24, value=(1, 24)
)

Conte com a Alura para evoluir seus estudos. Em caso de dúvidas, fico à disposição.

Bons estudos!

Sucesso

Imagem da comunidade