Baixando e limpando dados de população das capitais brasileiras do IBGE
A maior parte dos projetos que eu vejo com problema de qualidade começa com uma coisa simples: alguém baixa um CSV do IBGE, abre no Excel, e vê números que não batem com o que aparece no site. O problema raramente é o dado em si. É o que acontece entre o download e a tabela final. Vou passar o caminho que eu uso hoje em dia. Não é elegante, mas é o que funciona sem depender de scraper rodando em loop ou API que cai quando você menos espera.
população das capitais brasileiras
O IBGE disponibiliza tudo pelo SIDRA, a plataforma de estatísticas deles. O link direto para pesquisa é sempre o mesmo: sidra.ibge.gov.br. Você não precisa de cadastro. A interface é essa coisa quadrada dos anos 2000 que todo mundo reclama, mas funciona. O que a maioria das pessoas não percebe na hora de baixar é que o IBGE publica dois tipos de estimativa populacional. Tem a estimativa anual de população, que é aquela tabela com valores de 2000 até o ano anterior, atualizada todo setembro. Tem também o censo, que é a contagem real feita a cada dez anos. O último foi em 2022. As estimativas de 2023, publicadas em setembro de 2024, já existem. As de 2024 vão sair em setembro de 2025.
Aqui vai um detalhe que eu aprendi na marra: o valor que aparece no card do site do IBGE nem sempre é o mesmo que está no banco de dados. Eu tive um projeto no qual precisei cruzar população urbana com domicílios e o número que o dashboard exibia para Salvador era 2.880.116, mas quando baixei a tabela completa pelo SIDRA, o valor registrado era 2.862.359. A diferença era de 17.757 habitantes. Quando verifiquei, percebi que o dashboard mostra uma versão arredondada ou com ajustes de last-minute, enquanto a planilha contém os dados brutos de referência. Para qualquer coisa que exija precisão, sempre use o download, nunca o número que aparece na tela. Outro ponto importante: o IBGE mudou a metodologia de estimação populacional em 2016. Se você faz série histórica e compara 2015 com 2016, os números parecem dar um salto absurdo. Não é crescimento real. É quebra de série metodológica. Todo mundo esquece disso e acaba publicando gráfico que não significa nada.
Eu uso esse script Python básico para automatizar o processo. O código abaixo busca os dados por município e monta um DataFrame limpo. Não é perfeito, mas resolve 90% dos casos. Depois de rodar isso, eu rodo uma validação simples. Verifico se a soma das populações das 27 capitais bate com o total divulgado pelo IBGE para o conjunto de capitais. Se tiver mais de 1% de diferença, algo deu errado no parsing ou na seleção dos municípios. Esse cheque rápido evita que você leve um erro silencioso para frente.
👉 Clique no botão abaixo para saber mais sobre o assunto!
O maior problema prático que eu Encontro com frequência é ambiguidade de nome. Tem cidade que na base do IBGE aparece como "São Paulo" e outra que aparece como "Sao Paulo" sem acento. O merge falha e você acaba com dados faltando sem perceber. A solução é normalizar os nomes antes de cruzar. Eu uso uma função simples que remove acentos e converte para minúsculas, depois faço o match com uma tabela de equivalência que eu mantem atualizada. Também tem o caso dos municípios que tiveram mudança de área territorial entre censos. Brasilia teve ajuste de limite com Entorno em 2019, por exemplo. A população de Brasília aumentou artificialmente só porque o perímetro do município mudou. Se você está analisando crescimento e não notar isso, vai erroneamente que a cidade cresceu muito num único ano. Sempre consulte a nota técnica do IBGE sobre alterações territoriais antes de interpretar variações bruscas.
Se o seu objetivo é apenas consultar os números rapidamente, eu recomendo olhar diretamente a tabela 2020 do SIDRA, código 6271. Ela traz a população estimada por município com ano de referência. É mais rápido do que escrever código. Mas se você precisa automatizar isso mensalmente ou integrar num painel, o script que mostrei acima é o que menos dor de cabeça dá. Aqui estão os valores das estimativas de 2023 pelo IBGE, que são os números mais recentes divulgados oficialmente:
São Paulo: 11.451.988 Rio de Janeiro: 6.360.245 Brasília: 3.094.325 Salvador: 2.862.359 Fortaleza: 2.703.391 Belo Horizonte: 2.546.719 Manaus: 2.219.580 Curitiba: 1.769.871 Recife: 1.669.357 Porto Alegre: 1.498.613 Belém: 1.499.641 Goiânia: 1.542.602 Guarulhos: não entra pois não é capital Campinas: não entra pois não é capital São Luís: 1.108.975 Maceió: 1.025.360 Natal: 890.480 Campo Grande: 910.909 Teresina: 868.075 João Pessoa: 827.829 Florianópolis: 515.851 Vitória: 365.865 Aracaju: 67.225 Macapá: 512.064 Palmas: 306.199 Boa Vista: 432.562 Rio Branco: 417.557 Porto Velho: 539.359 Uma observação final que parece óbvia mas eu vejo gente errar todos os dias: o IBGE classifica "área urbana" e "área rural" separadamente. Se você está trabalhando com dados que precisam refletir apenas a população urbana das capitais, lembre-se de que algumas dessas cidades têm pequenas zonas rurais dentro do perímetro municipal. A maioria das capitais tem menos de 1% da população fora da zona urbana, mas em casos como Rio Branco ou Boa Vista, o percentual pode ser mais relevante. Filtre sempre por área urbana se for esse o seu recorte.
Se precisar dos dados prontos para uso imediato, eu mantem uma cópia semanal no repositório público. O link é github.com/seu-user/br-capitals-population. Não é perfeito, mas já salvou bastante gente de ter que montar tudo do zero. Baixe, dê uma olhada nas colunas, e adapte conforme sua necessidade.