A cidade do Recife, capital de Pernambuco, possui um dos mercados imobiliários mais dinâmicos do Brasil. O IPTU (Imposto Predial e Territorial Urbano) é uma das principais fontes de receita da cidade, e sua análise permite compreender diversos aspectos, desde o desenvolvimento urbano até a justiça fiscal. Por isso, vamos explorar os dados coletados do IPTU do ano de 2023 para obter insights sobre a capital pernambucana.
A análise do dataset de IPTU tem como objetivo identificar padrões de tributação, avaliar a equidade na cobrança do imposto e entender o impacto de diferentes características dos imóveis sobre o valor do imposto nos diferentes bairros do Recife. Também buscamos explorar a relação entre os valores de mercado dos imóveis e as diferentes características construtivas, geográficas e de uso.
| Pacote | Motivo |
|---|---|
| tidyverse | Manipulação e visualização de dados |
| DT & reactable | Visualização interativa dos dados |
| knitr | Criação e exibição de tabelas |
| kableExtra | Criar tabelas em conjunto com o knitr |
| dplyr | Manipulação e criação de novas variáveis |
| tidyr | Manipulação de dataframes |
| ggplot | Plot de diferentes gráficos para visualizar os dados tratados |
Primeiramente, é necessário importar o dataset. Para isso, foi preciso compreender a estrutura do conjunto de dados, como a maneira com que são delimitadas as células, números decimais e caracteres especiais. Isso evitará futuros problemas, durante a manipulação e exibição.
Vide uma sample da base de dados carregada:
# Exibindo uma amostra dos dados
reactable(iptu_dataset[5:25, ],
defaultColDef = colDef(
header = function(value) gsub(".", " ", value, fixed = TRUE),
cell = function(value) format(value, nsmall = 1),
align = "left",
minWidth = 130,),
searchable=T,
sortable=T,
striped=T,
bordered=T,
defaultPageSize=7)Veja que existem poucas colunas com valores vazios. As colunas tipo
de contribuinte e complemento possuem muitos
valores vazios e não serão necessárias.
| Coluna | Contagem_de_NAs |
|---|---|
| numero do contribuinte | 0 |
| ano do exercicio | 0 |
| data do cadastramento | 0 |
| tipo de contribuinte | 37053 |
| CPF/CNPJ mascarado do contribuinte | 0 |
| logradouro | 0 |
| numero | 0 |
| complemento | 145315 |
| bairro | 0 |
| cidade | 0 |
| estado | 0 |
| fracao ideal | 0 |
| AREA TERRENO | 0 |
| AREA CONSTRUIDA | 0 |
| area ocupada | 0 |
| valor do m2 do terreno | 0 |
| valor do m2 de construcao | 1 |
| ano da construcao corrigido | 0 |
| quantidade de pavimentos | 0 |
| tipo de uso do imovel | 0 |
| tipo de padrao da construcao | 0 |
| fator de obsolencia | 1 |
| ano e mes do inicio da contribuicao | 0 |
| valor total do imovel estimado | 0 |
| valor cobrado de IPTU | 0 |
| CEP | 0 |
| Regime de Tributacao do iptu | 0 |
| Regime de Tributacao da trsd | 0 |
| Tipo_de_Construcao | 0 |
| Tipo_de_Empreendimento | 0 |
| Tipo de Estrutura | 0 |
| Logradouro | 0 |
Primeiramente, para utilizar o conjunto de dados, é necessário realizar a limpeza deles. Seja removendo células incompletas, registros inválidos ou colunas não importantes para a natureza do projeto.
Colunas utilizadas:
Foi necessário formatar a data de cadastramento e
filtrar algumas construções por Tipo de Empreendimento e
Regime de Tributação.
A análise da distribuição do valor por metro quadrado ajuda a
identificar a faixa de valores predominante no mercado. Para isso, foi
criada a variável valor_m2_total que é a soma entre o valor
do m² do terreno e o valor da construção.
iptu_dataset <- iptu_dataset %>%
mutate(valor_m2_total = `valor do m2 do terreno` + `valor do m2 de construcao`)
# Gráfico de Distribuição do valor total por m²
ggplot(iptu_dataset, aes(x = valor_m2_total)) +
geom_histogram(bins = 30, fill = "blue", color = "black") +
labs(title = "Distribuição do Valor Total por m²", x = "Valor Total por m²", y = "Frequência")É possível perceber neste histograma que há uma distribuição assimétrica à direita, com a maioria dos imóveis concentrados em valores menores. Isso indica que a maioria dos imóveis possui um valor por m² relativamente baixo, enquanto há um número reduzido de imóveis com valores muito mais altos. Essa constatação parece óbvia, mas é importante destacar a disparidade socioeconômica vigente na metrópole pernambucana.
Podemos, também, ver quais bairros são mais caros ou baratos em termos de valor do m².
# Calculando o valor médio do m² por bairro
ranking_bairros_valor_m2 <- iptu_dataset %>%
group_by(bairro) %>%
summarise(valor_medio_m2 = mean(valor_m2_total, na.rm = TRUE))
# Exibindo a tabela de bairros mais caros
kable(ranking_bairros_valor_m2 %>% arrange(desc(valor_medio_m2)) %>% head(10),
caption = "Top 10 Bairros Mais Caros") %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = F) %>%
column_spec(1, bold = T)| bairro | valor_medio_m2 |
|---|---|
| SANTO ANTONIO | 42876.49 |
| BOA VISTA | 31544.98 |
| SOLEDADE | 30104.48 |
| BOA VIAGEM | 27046.51 |
| ESPINHEIRO | 21029.60 |
| DERBY | 20940.72 |
| GRACAS | 20002.14 |
| PINA | 19307.20 |
| AFLITOS | 17105.33 |
| SANTO AMARO | 15403.00 |
# Exibindo a tabela de bairros mais baratos
kable(ranking_bairros_valor_m2 %>% arrange(valor_medio_m2) %>% head(10),
caption = "Top 10 Bairros Mais Baratos") %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = F) %>%
column_spec(1, bold = T)| bairro | valor_medio_m2 |
|---|---|
| PASSARINHO | 1053.607 |
| COHAB | 1125.317 |
| COQUEIRAL | 1209.943 |
| DOIS UNIDOS | 1214.645 |
| CORREGO DO JENIPAPO | 1254.983 |
| SITIO DOS PINTOS | 1276.877 |
| BREJO DA GUABIRABA | 1286.421 |
| ALTO SANTA TEREZINHA | 1414.756 |
| BREJO DE BEBERIBE | 1415.948 |
| GUABIRABA | 1445.285 |
Vemos que Santo Antônio é o bairro mais
caro, com um valor médio de aproximadamente
R$ 43 mil e Passarinho é o bairro
mais barato, com um valor médio de aproximadamente
R$ 1050.
Esse índice é obtido pela razão entre o valor do IPTU e
o valor total do imovel. Esse dado permite avaliar a
justiça fiscal por bairro, identificando disparidades.
Para melhor visualização, foram selecionados os 10 bairros com mais registros no dataset.
# Variável 'indice_equidade_tributaria': relação do valor cobrado de IPTU com o valor total do imóvel
iptu_dataset <- iptu_dataset %>%
mutate(indice_equidade_tributaria = `valor cobrado de IPTU` / `valor total do imovel estimado`)
# Filtrar para os 10 bairros com maior número de registros
bairros_mais_frequentes <- iptu_dataset %>%
count(bairro, sort = TRUE) %>%
top_n(10, n) %>%
pull(bairro)
# Filtrar o dataset para incluir apenas os bairros mais frequentes
iptu_filtrado <- iptu_dataset %>%
filter(bairro %in% bairros_mais_frequentes)
# Gráfico: Índice de Equidade Tributária para os Top 10 bairros mais frequentes
ggplot(iptu_filtrado, aes(x = reorder(bairro, -indice_equidade_tributaria), y = indice_equidade_tributaria)) +
geom_boxplot(fill = "lightblue") +
labs(title = "Índice de Equidade Tributária por Bairro", x = "Bairro", y = "Índice de Equidade Tributária") +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) Em
geral, é possível perceber que os bairros com maiores números de
registro de IPTU, são, também bairros mais desenvolvidos e caros. Apesar
disso, percebemos, a partir do boxplot, a presença de outliers.
O que pode sugerir algumas coisas: * Características específicas:
Imóveis particulares, como grandes áreas, localização privilegiada ou
construções históricas, podem ter valores de IPTU diferentes dos demais.
* Mudanças recentes no mercado imobiliário: Aumentos ou reduções
recentes nos valores dos imóveis podem gerar outliers temporários.
E os bairros com um grande índice, como as Graças, Boa Viagem e Madalena, possuem uma caixa mais alta. Em outras palavras, esses bairros tendem a ter valores mais altos de IPTU em relação ao valor total do imóvel, indicando uma maior carga tributária.
# Variável 'indice_renovacao_urbana': inverso da idade média das construções
iptu_dataset <- iptu_dataset %>%
mutate(idade_construcao = 2023 - `ano da construcao corrigido`)
# Filtrar o dataset para incluir apenas os bairros mais frequentes
iptu_filtrado <- iptu_dataset %>%
filter(bairro %in% bairros_mais_frequentes)
# Visualização do Índice de Renovação Urbana dos 10 maiores bairros por IPTU
ggplot(iptu_filtrado, aes(x = reorder(bairro, -idade_construcao), y = idade_construcao)) +
geom_boxplot(fill = "lightgreen") +
labs(title = "Idade Média das Construções por Bairro", x = "Bairro", y = "Idade das Construções (anos)") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))A análise dos dados de IPTU da cidade do Recife revelou insights importantes sobre a distribuição do valor imobiliário, as características das construções e o impacto dos diferentes padrões de edificação no valor dos imóveis. Observamos que a maioria das propriedades possui valores por metro quadrado relativamente baixos, sugerindo uma predominância de imóveis em áreas menos valorizadas ou construções de padrão mais simples. Entretanto, também identificamos outliers que representam propriedades de alto valor, possivelmente localizadas em áreas nobres. Os índices de equidade tributária e renovação urbana evidenciam a distribuição econômica dos imóveis e como isso pode influenciar políticas públicas futuras para um desenvolvimento mais equilibrado e sustentável da cidade. Bairros com os valores por metro quadrado mais altos destacaram-se em áreas tradicionais e de alta demanda, enquanto os mais baratos estão em regiões periféricas ou menos desenvolvidas. Além disso, a avaliação da idade média das construções por bairro indicou variações significativas no nível de renovação urbana, com alguns bairros apresentando imóveis mais novos e outros mantendo construções mais antigas, o que pode refletir diferentes fases de desenvolvimento e políticas urbanas locais.