Logo Dados do Censo Brasileiro

Tutorial Transformação Digital nº 7

Autores
Afiliações

Fundação João Pinheiro/Cedeplar

Fundação João Pinheiro

Resumo

Neste tutorial exploramos o pacote censobr que permite o acesso a dados do Censo diretamente no R.

Contato: transformacao.digital@fjp.mg.gov.br

1 Introdução

O pacote censobr no R é uma ferramenta para acessar e analisar dados do Censo brasileiro. Este tutorial irá guiá-lo através das funcionalidades básicas de extração dos dados.

1.1 Configuração Inicial

Para começar, instale e carregue os pacotes necessários no RStudio

# install.packages("censobr")
library(tidyverse)
library(censobr)
library(geobr)
library(scales)

1.2 Explorando o Pacote censobr

censobr é um pacote do R para baixar dados do Censo Populacional do Brasil. Ele é construído sobre a plataforma Arrow, permitindo trabalhar com dados do censo maiores que a memória utilizando funções familiares do dplyr.

O pacote atualmente inclui seis funções principais para baixar e ler dados do censo:

  1. read_population()

  2. read_households()

  3. read_mortality()

  4. read_families()

  5. read_emigration()

  6. read_tracts()

Além das funções de auxílio para as bases de dados:

  1. data_dictionary()

  2. questionnaire()

  3. interview_manual()

Obs.: O pacote ainda está em desenvolvimento e foi construído pelo IPEA, dados mais atualizados são adiconados periodicamente ver (Pereira e Barbosa 2023).

1.3 Exemplos Práticos

Vamos explorar um exemplo prático sobre a renda per capita de Uberlândia por setor censitário usando read_tracts() para coletar variáveis específicas:

1.3.1 Criando a layer básica

Carregue e filtre os dados geográficos do município de Uberlândia para o ano de 2010:

muni_bh <- geobr::read_municipality(code_muni = 'MG', 
                                    year = 2010, 
                                    showProgress = FALSE) |>
           filter(name_muni == "Uberlândia")
Using year 2010
  • read_municipality obtém dados geograficos dos municípios de Minas Gerais.

  • O filtro seleciona apenas Uberlândia.

2. Carregamento dos Dados dos Setores Censitários

Agora, carregue os dados detalhados dos setores censitários:

tracts_sf <- geobr::read_census_tract(code_tract = "MG",
                                      simplified = FALSE,
                                      year = 2010,
                                      showProgress = FALSE)
Using year 2010
tracts_sf <- filter(tracts_sf, name_muni == "Uberlândia")
  • simplified = FALSE mantém todos os detalhes geográficos.
  1. Visualização dos Dados: Crie um mapa dos setores censitários:
ggplot() + 
  geom_sf(data=tracts_sf, fill = 'gray90', color='gray60') + 
  theme_void()

  • ggplot() inicia a criação do gráfico.

  • geom_sf adiciona os setores censitários ao gráfico.

  • fill e color definem as cores das áreas e bordas.

  • theme_void() remove elementos desnecessários para focar no mapa.

2 Caculando Renda Per Capta

2.1 Download dos Dados dos Setores Censitários:

Os dados agregados no nível do setor censitário são divididos em diferentes conjuntos de dados, e alguns deles estão espalhados em vários arquivos. Por uma questão de conveniência, reunimos todos os arquivos em 8 conjuntos de dados diferentes:

Basico, Entorno, Domicilio, Pessoa, Responsavel, PessoaRenda, DomicilioRenda, ResponsavelRenda.

  1. Download dos Dados dos Setores Censitários:
tract_basico <- read_tracts(year = 2010,
                            dataset = "Basico", 
                            showProgress = FALSE)
Reading data cached locally.
names(tract_basico)[c(1:20,01:20)]
 [1] "code_tract"        "code_weighting"    "code_muni"        
 [4] "name_muni"         "code_state"        "abbrev_state"     
 [7] "name_state"        "code_region"       "name_region"      
[10] "code_meso"         "name_meso"         "code_micro"       
[13] "name_micro"        "code_metro"        "name_metro"       
[16] "name_neighborhood" "code_neighborhood" "Basico_V1005"     
[19] "Cod_municipio"     "code_district"     "code_tract"       
[22] "code_weighting"    "code_muni"         "name_muni"        
[25] "code_state"        "abbrev_state"      "name_state"       
[28] "code_region"       "name_region"       "code_meso"        
[31] "name_meso"         "code_micro"        "name_micro"       
[34] "code_metro"        "name_metro"        "name_neighborhood"
[37] "code_neighborhood" "Basico_V1005"      "Cod_municipio"    
[40] "code_district"    
  • carrega dados básicos dos setores censitários para 2010 que são informações de codigo e nome do município.

  • read_tracts(year = 2010, dataset = "DomicilioRenda", showProgress = FALSE) por sua vez carrega dados de renda dos domicílios dos setores censitários para 2010.

  • showProgress = FALSE desativa a exibição de progresso.

tract_income <- read_tracts(year = 2010,
                            dataset = "DomicilioRenda", 
                            showProgress = FALSE)
Reading data cached locally.
names(tract_income)[c(1:15,301:302)]
 [1] "code_tract"     "code_weighting" "code_muni"      "code_state"    
 [5] "abbrev_state"   "name_state"     "code_region"    "name_region"   
 [9] "V1005"          "V001"           "V002"           "V003"          
[13] "V004"           "V005"           "V006"           NA              
[17] NA              
  1. Seleção das variáveis :
    • tract_basico %>% select('code_tract','V002') seleciona as colunas code_tract (código do setor censitário) e V002 (população do setor) do dataset básico.
    • tract_income %>% select('code_tract','V003') seleciona as colunas code_tract e V003 (renda total do setor) do dataset de renda.
# selecionar variáveis
tract_basico <- tract_basico %>%  select('code_tract','V002') # V002: população do setor
tract_income <- tract_income %>%  select('code_tract','V003') # V003: renda total do setor
  1. Junção dos Dados:
    • left_join(tract_basico, tract_income) combina os dois datasets baseando-se no code_tract.
    • |> collect() é utilizado para coletar e consolidar os resultados da junção.
tracts_df <- left_join(tract_basico, tract_income) %>%  collect()
  1. Cálculo da Renda Per Capita:

    • mutate(renda_pc = V003 / V002) adiciona uma nova coluna renda_pc, calculando a renda per capita do setor (renda total dividida pela população).
    tracts_df <- tracts_df |> mutate(renda_pc = V003 / V002)
  2. Junção com Dados Geográficos:

bh_tracts <- left_join(tracts_sf, tracts_df, by = 'code_tract')
  • left_join(tracts_sf, tracts_df, by = 'code_tract') junta o dataframe tracts_sf (dados geográficos dos setores censitários de Uberlândia) com tracts_df (dados socioeconômicos), baseando-se no código do setor censitário.

2.2 Criando um gráfico

Criando um mapa para visualizar a renda per capita por setor censitário em Uberlândia no ano de 2010. O código usa ggplot2 para criar o gráfico.

-   `ggplot()` inicializa o gráfico.
-   `geom_sf(data = bh_tracts, aes(fill = renda_pc), color=NA)` adiciona os setores censitários de Uberlândia ao gráfico, com a cor das áreas determinada pela renda per capita (`renda_pc`).
-   `geom_sf(data = muni_bh, color='gray10', fill=NA)` desenha as fronteiras do município em uma cor escura (`gray10`) sem preenchimento interno.
# gráfico 
p <- ggplot() +
  geom_sf(data = bh_tracts, aes(fill = renda_pc), color=NA) +
  geom_sf(data = muni_bh, color='gray10', fill=NA) +
  labs(subtitle = 'Renda per capita.\nUberlândia, 2010') +
  scale_fill_viridis_c(
    name = "Renda per\ncapita (R$)",
    labels = label_number(big.mark = ".", decimal.mark = ",", accuracy = 0.01),
    option = 'turbo',
    breaks = c(0, 200, 400, 600, 800, 1000, 1500, 2000, 3000, 5000, 10000),
    trans = "pseudo_log",
    na.value = "gray90"
  ) +
  theme_void()

p

  1. Adição de Rótulos e Ajustes Visuais:
    • labs(subtitle = 'Renda per capita.\nUberlândia, 2010') adiciona um subtítulo ao gráfico.
    • scale_fill_viridis_c(...):
      • Aplica uma escala de cores ‘viridis’ (aqui, opção ‘turbo’) para representar a renda per capita.
      • labels = scales::number_format() formata os números para melhor legibilidade.
      • breaks = c(0, 500, 1e3, 5e3, 1e4, 2e4) define os pontos em que as cores mudarão no mapa.
      • trans = "pseudo_log" aplica uma transformação logarítmica para escalonar os dados de renda.
      • na.value = "gray90" define a cor para valores ausentes como um cinza claro.
    • theme_void() remove elementos desnecessários do gráfico, focando nos dados.

2.3 Conclusão

Neste tutorial, você aprendeu a acessar, combinar e visualizar dados socioeconômicos e geográficos usando o pacote censobr no R. Este exemplo demonstrou como calcular e visualizar a renda per capita em Uberlândia usando dados do censo de 2010.

3 Referências

Pereira, Rafael H. M., e Rogério J. Barbosa. 2023. «censobr: Download Data from Brazil’s Population Census». https://CRAN.R-project.org/package=censobr.