1
resposta

[Dúvida] Problemas com erro no dashboard

Estou tendo esse erro desde o começo do projeto até o fim, se atualizo a página funciona, porém trocando as páginas ele aparece esse erro novamente.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Ei! Tudo bem, Victor?

Entendo que deve ser frustrante lidar com esse erro recorrente, mas vamos encontrar uma solução. Para começar, o erro é sobre problemas ao tentar acessar os dados da API, que pode ser por vários motivos. Sendo o mais comum a conexão instável ou formato inválido.

Separei alguns pontos para você verificar, como:

  1. A URL: https://labdados.com/produtos. Teste ela direto no navegador para checar se está funcionando certinho, até o momento por aqui está.

  2. Recomendo verificar a resposta da API (linha 45 do código) para garantir que os dados estejam no formato esperado, adicione um print para inspecionar os dados antes de convertê-los para JSON:

print(response.text)
  1. Segue o código usado para teste por aqui, você pode experimentar testar ele também:
import streamlit as st
import requests
import pandas as pd
import plotly.express as px

st.set_page_config(layout= 'wide')

def formata_numero(valor, prefixo = ''):
    for unidade in ['', 'mil']:
        if valor <1000:
            return f'{prefixo} {valor:.2f} {unidade}'
        valor /= 1000
    return f'{prefixo} {valor:.2f} milhões'

st.title('DASHBOARD DE VENDAS :shopping_trolley:')

url = 'https://labdados.com/produtos'
regioes = ['Brasil', 'Centro-Oeste', 'Nordeste', 'Norte', 'Sudeste', 'Sul']

st.sidebar.title('Filtros')
regiao = st.sidebar.selectbox('Região', regioes)

if regiao == 'Brasil':
    regiao = ''

todos_anos = st.sidebar.checkbox('Dados de todo o período', value = True)
if todos_anos:
    ano = ''
else:
    ano = st.sidebar.slider('Ano', 2020, 2023)

query_string = {'regiao':regiao.lower(), 'ano':ano}
response = requests.get(url, params= query_string)
dados = pd.DataFrame.from_dict(response.json())
dados['Data da Compra'] = pd.to_datetime(dados['Data da Compra'], format = '%d/%m/%Y')

filtro_vendedores = st.sidebar.multiselect('Vendedores', dados['Vendedor'].unique())
if filtro_vendedores:
    dados = dados[dados['Vendedor'].isin(filtro_vendedores)]

Espero que uma dessas sugestões te ajude a reparar o erro.

Até mais, Victor!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado!