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

Foto de Theylor Machado

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.