Sobre
Como fiz isto, e onde pode errar
De onde vêm os dados, como limpo os números, o que é aproximação e quem sou eu.
1. De onde vêm os dados
Os preços vêm do site do iFood, sem login, pela mesma API que o site usa para mostrar as lojas. Um Chrome de verdade obtém os cookies da sessão; o resto são pedidos HTTP simples, cerca de 1 por segundo. Se aparece um desafio de verificação, o coletor para e espera uma pessoa resolver. Nada é burlado.
Para cada capital, listo os supermercados que entregam num ponto central e leio o catálogo de cada loja: produto, corredor e preço. Cada coleta fica inteira no Postgres, e coletar de novo gera uma série no tempo sem apagar a anterior.
2. Como limpo os números
Preço errado estraga média, então limpo antes de analisar:
- Preço zero ou negativo sai.
- Em cada produto com amostra suficiente, acho o preço típico (a mediana) e o quanto os preços costumam se afastar dele, pelo MAD (desvio absoluto mediano). Preço longe demais sai.
- Produto com poucos preços só perde os preços zero.
O quadro abaixo mostra quantos preços saíram neste export e a regra exata. As imagens do notebook podem usar um corte diferente.
3. O que é aproximação
- Casamento por nome. Ligo cada item da cesta do DIEESE a um produto do iFood pelo nome e uso o mais barato por quilo ou litro. Serve de ordem de grandeza, e estados com poucos itens ligados ficam de fora.
- Itens por peso. Produto vendido por peso mostra o preço de uma quantidade mínima, não de 1 kg. As tabelas mostram o preço de tabela, sem converter.
- Mix de produtos. A média de um estado, rede ou corredor depende do que se vende ali. Por isso comparo lugares com um índice dos mesmos produtos, mostrado como % acima ou abaixo da mediana.
- Faixa típica. Nos itens do dia a dia, “normalmente entre” vai do 10º ao 90º percentil dos preços entre lojas, sem os extremos.
- Um dia, só capitais. Cada coleta é a foto de um dia, só das capitais. Preço de aplicativo pode ter margem e promoção e diferir do da prateleira.
- Redes. A API quase não informa a rede, então a deduzo do nome da loja.
- Séries. A cesta do DIEESE cobre as capitais que ele pesquisa (inclui Macaé, que não é capital). O IPCA é o do Brasil.
4. Sobre mim
Theylor Machado, Cientista de Dados | Previsão de Demanda e Séries Temporais. Este projeto é divulgação e experimento meu: não é produto e não tem vínculo com o iFood. Este repositório tem só o site; o pipeline de coleta fica à parte.
Fontes
- IBGE SIDRA: população (Censo 2022), IPCA, PIB dos municípios e rendimento.
- DIEESE: Pesquisa Nacional da Cesta Básica de Alimentos.
- kelvins/municipios-brasileiros: código IBGE, nome, UF e coordenadas dos municípios.
- Malha das UFs: IBGE (simplificada para o mapa).
Estrutura do repositório
*.html as oito páginas do site
css/ estilos
js/ scripts de cada página (JS puro, sem módulos)
vendor/ Chart.js (local)
fonts/ Space Grotesk e Inter (local)
geo/ malha simplificada das UFs (SVG)
data/ JSON exportados do pipeline
img/ foto do autor e gráficos do notebook
docs/ capturas de tela
O site é estático: lê os JSON de data/, gerados por um pipeline à parte a partir de um Postgres, e não faz nenhuma requisição a servidores externos. Os links para portfólio, GitHub e LinkedIn só abrem se você clicar.