1 Introdução

A Empresa de Manutenção e Limpeza Urbana (Emlurb) é responsável por serviços essenciais para a organização e conservação da cidade do Recife. Entre esses serviços estão demandas relacionadas à limpeza urbana, manutenção de vias, drenagem, iluminação pública, arborização, conservação de espaços públicos e outras solicitações feitas pela população.

A Central de Atendimento 156 funciona como um canal de comunicação entre a população e a administração pública. Por meio desse canal, os cidadãos registram demandas urbanas que podem indicar problemas recorrentes em determinados bairros, tipos de serviços mais solicitados e períodos de maior volume de chamados.

O problema investigado nesta entrega parcial é: quais são os principais padrões iniciais das solicitações urbanas registradas pela Central de Atendimento da Emlurb no Recife durante o ano de 2024?

Esta entrega parcial tem como objetivo apresentar uma primeira análise exploratória do conjunto de dados, incluindo importação, conhecimento inicial da base, preparação dos dados, identificação de valores ausentes e construção de visualizações preliminares.

A utilização de dados abertos nesse contexto é relevante porque permite compreender demandas reais da população e pode apoiar decisões relacionadas ao planejamento urbano, priorização de serviços e acompanhamento das necessidades dos bairros.

2 Pacotes Utilizados

Os pacotes utilizados nesta análise foram selecionados para realizar importação, limpeza, transformação e visualização dos dados.

library(readr)
library(dplyr)
library(stringr)
library(lubridate)
library(ggplot2)
library(DT)
library(knitr)
library(scales)
library(tidyr)

3 Descrição do Conjunto de Dados

Os dados foram obtidos no Portal de Dados Abertos da Prefeitura do Recife, no conjunto chamado Central de Atendimento de Serviços da Emlurb - 156, referente ao ano de 2024.

Fonte dos dados: https://dados.recife.pe.gov.br/dataset/central-de-atendimento-de-servicos-da-emlurb-156

O conjunto de dados escolhido possui mais de 5 mil linhas e mais de 10 colunas, atendendo ao requisito mínimo definido para o projeto. A base contém registros administrativos de solicitações urbanas realizadas pela população do Recife.

As variáveis disponíveis permitem analisar aspectos como:

  • grupos de serviços solicitados;
  • descrição dos serviços;
  • bairro da solicitação;
  • Região Político-Administrativa (RPA);
  • data de abertura da demanda;
  • situação do atendimento;
  • data da última situação;
  • coordenadas geográficas, quando disponíveis.

A escolha desse conjunto de dados se justifica por tratar de um tema local, atual e relevante para a gestão pública urbana. Além disso, a base possui variáveis categóricas, temporais e geográficas, permitindo diferentes possibilidades de análise exploratória.

4 Importação dos Dados

dados_brutos <- read_delim(
  "emlurb_156_2024.csv",
  delim = ";",
  locale = locale(encoding = "UTF-8"),
  show_col_types = FALSE
)

5 Conhecendo os Dados

5.1 Dimensões da base

dim(dados_brutos)
## [1] 108082     13

A base possui 108082 linhas e 13 colunas.

5.2 Nomes das variáveis

names(dados_brutos)
##  [1] "GRUPOSERVICO_CODIGO"    "GRUPOSERVICO_DESCRICAO" "SERVICO_CODIGO"        
##  [4] "SERVICO_DESCRICAO"      "LOGRADOURO"             "NUMERO"                
##  [7] "BAIRRO"                 "RPA"                    "DATA_DEMANDA"          
## [10] "SITUACAO"               "DATA_ULT_SITUACAO"      "latitude"              
## [13] "longitude"

5.3 Estrutura da base

glimpse(dados_brutos)
## Rows: 108,082
## Columns: 13
## $ GRUPOSERVICO_CODIGO    <dbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,…
## $ GRUPOSERVICO_DESCRICAO <chr> "LIMPEZA URBANA", "LIMPEZA URBANA", "LIMPEZA UR…
## $ SERVICO_CODIGO         <dbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,…
## $ SERVICO_DESCRICAO      <chr> "REMOCAO DE ANIMAIS MORTOS PEQUENOS", "REMOCAO …
## $ LOGRADOURO             <chr> "1TR  da Campinas", "2TR  So Nos Dois", "3TR  S…
## $ NUMERO                 <chr> "65                  ", "8                   ",…
## $ BAIRRO                 <chr> "Jardim Sao Paulo", "Passarinho", "Iputinga", "…
## $ RPA                    <dbl> 5, 3, 4, 4, 2, 2, 2, 2, 6, 6, 3, 4, 6, 6, 6, 6,…
## $ DATA_DEMANDA           <date> 2024-08-03, 2024-08-12, 2024-04-12, 2023-12-18…
## $ SITUACAO               <chr> "ATENDIDA", "ATENDIDA", "ATENDIDA", "ATENDIDA",…
## $ DATA_ULT_SITUACAO      <date> 2024-08-05, 2024-08-14, 2024-04-12, 2024-02-05…
## $ latitude               <dbl> -8.085209, -7.989594, -8.028294, -8.035960, NA,…
## $ longitude              <dbl> -34.94910, -34.92591, -34.93435, -34.95567, NA,…

A estrutura inicial mostra que o conjunto de dados possui variáveis textuais, variáveis de data e campos relacionados à localização. Essas características tornam a base adequada para uma análise exploratória, pois permitem investigar padrões por bairro, por tipo de serviço, por período e por situação do atendimento.

6 Preparação dos Dados

Nesta etapa foram realizadas transformações necessárias para adequar os dados à análise exploratória. As variáveis de data foram convertidas para o formato apropriado, permitindo análises temporais. Também foram realizadas padronizações textuais e criada a variável mês, utilizada nas visualizações posteriores.

dados <- dados_brutos |>
  mutate(
    DATA_DEMANDA = ymd(DATA_DEMANDA),
    DATA_ULT_SITUACAO = ymd(DATA_ULT_SITUACAO),

    BAIRRO = str_squish(str_to_title(BAIRRO)),
    GRUPOSERVICO_DESCRICAO = str_squish(str_to_title(GRUPOSERVICO_DESCRICAO)),
    SERVICO_DESCRICAO = str_squish(str_to_title(SERVICO_DESCRICAO)),
    SITUACAO = str_squish(str_to_title(SITUACAO)),

    latitude = as.numeric(latitude),
    longitude = as.numeric(longitude),

    mes_numero = month(DATA_DEMANDA),
    mes = month(DATA_DEMANDA, label = TRUE, abbr = FALSE),
    dia_semana = wday(DATA_DEMANDA, label = TRUE, abbr = FALSE),
    trimestre = quarter(DATA_DEMANDA)
  )

6.1 Amostra da base tratada

dados |>
  select(
    GRUPOSERVICO_DESCRICAO,
    SERVICO_DESCRICAO,
    BAIRRO,
    RPA,
    DATA_DEMANDA,
    mes,
    SITUACAO,
    latitude,
    longitude
  ) |>
  head(15) |>
  kable()
GRUPOSERVICO_DESCRICAO SERVICO_DESCRICAO BAIRRO RPA DATA_DEMANDA mes SITUACAO latitude longitude
Limpeza Urbana Remocao De Animais Mortos Pequenos Jardim Sao Paulo 5 2024-08-03 agosto Atendida -8.085209 -34.94910
Limpeza Urbana Remocao De Animais Mortos Pequenos Passarinho 3 2024-08-12 agosto Atendida -7.989594 -34.92591
Limpeza Urbana Remocao De Animais Mortos Pequenos Iputinga 4 2024-04-12 abril Atendida -8.028294 -34.93435
Limpeza Urbana Remocao De Animais Mortos Pequenos Varzea 4 2023-12-18 dezembro Atendida -8.035960 -34.95567
Limpeza Urbana Remocao De Animais Mortos Pequenos Agua Fria 2 2024-04-15 abril Atendida NA NA
Limpeza Urbana Remocao De Animais Mortos Pequenos Agua Fria 2 2024-10-12 outubro Atendida NA NA
Limpeza Urbana Remocao De Animais Mortos Pequenos Arruda 2 2024-08-19 agosto Atendida NA NA
Limpeza Urbana Remocao De Animais Mortos Pequenos Agua Fria 2 2024-07-04 julho Atendida NA NA
Limpeza Urbana Remocao De Animais Mortos Pequenos Boa Viagem 6 2024-10-10 outubro Atendida -8.152785 -34.90832
Limpeza Urbana Remocao De Animais Mortos Pequenos Boa Viagem 6 2024-12-18 dezembro Atendida NA NA
Limpeza Urbana Remocao De Animais Mortos Pequenos Gracas 3 2024-07-18 julho Atendida -8.054708 -34.90316
Limpeza Urbana Remocao De Animais Mortos Pequenos Madalena 4 2024-03-05 março Atendida -8.048775 -34.90440
Limpeza Urbana Remocao De Animais Mortos Pequenos Boa Viagem 6 2024-04-09 abril Atendida NA NA
Limpeza Urbana Remocao De Animais Mortos Pequenos Boa Viagem 6 2024-06-27 junho Atendida NA NA
Limpeza Urbana Remocao De Animais Mortos Pequenos Boa Viagem 6 2024-04-22 abril Atendida NA NA

7 Valores Ausentes

ausentes <- dados |>
  summarise(across(everything(), ~sum(is.na(.)))) |>
  pivot_longer(
    cols = everything(),
    names_to = "Variavel",
    values_to = "Valores_Ausentes"
  ) |>
  arrange(desc(Valores_Ausentes))

kable(ausentes)
Variavel Valores_Ausentes
latitude 83270
longitude 83270
GRUPOSERVICO_CODIGO 0
GRUPOSERVICO_DESCRICAO 0
SERVICO_CODIGO 0
SERVICO_DESCRICAO 0
LOGRADOURO 0
NUMERO 0
BAIRRO 0
RPA 0
DATA_DEMANDA 0
SITUACAO 0
DATA_ULT_SITUACAO 0
mes_numero 0
mes 0
dia_semana 0
trimestre 0

A verificação de valores ausentes é importante para compreender a qualidade da base antes das análises. Campos com muitos valores ausentes podem limitar determinados tipos de visualização, especialmente análises geográficas que dependem de latitude e longitude. Por isso, as próximas etapas do projeto deverão considerar essas limitações.

8 Resumo Inicial da Base

resumo_inicial <- tibble::tibble(
  Indicador = c(
    "Total de registros",
    "Total de variáveis",
    "Quantidade de bairros",
    "Quantidade de grupos de serviço",
    "Quantidade de serviços",
    "Quantidade de RPAs",
    "Data inicial",
    "Data final"
  ),
  Valor = c(
    nrow(dados),
    ncol(dados),
    n_distinct(dados$BAIRRO),
    n_distinct(dados$GRUPOSERVICO_DESCRICAO),
    n_distinct(dados$SERVICO_DESCRICAO),
    n_distinct(dados$RPA),
    as.character(min(dados$DATA_DEMANDA, na.rm = TRUE)),
    as.character(max(dados$DATA_DEMANDA, na.rm = TRUE))
  )
)

kable(resumo_inicial)
Indicador Valor
Total de registros 108082
Total de variáveis 17
Quantidade de bairros 95
Quantidade de grupos de serviço 21
Quantidade de serviços 102
Quantidade de RPAs 6
Data inicial 2008-03-14
Data final 2024-12-31

9 Análise Exploratória Inicial

9.1 Top 10 bairros com mais solicitações

top_bairros <- dados |>
  filter(!is.na(BAIRRO), BAIRRO != "") |>
  count(BAIRRO, sort = TRUE) |>
  slice_head(n = 10)

ggplot(top_bairros, aes(x = reorder(BAIRRO, n), y = n)) +
  geom_col(fill = "#2171b5") +
  coord_flip() +
  scale_y_continuous(labels = label_number(big.mark = ".")) +
  labs(
    title = "Top 10 bairros com mais solicitações",
    x = "Bairro",
    y = "Quantidade de solicitações"
  ) +
  theme_minimal(base_size = 13)

A distribuição das solicitações demonstra que determinados bairros concentram uma parcela significativa das demandas registradas pela população. Esse comportamento pode estar relacionado à densidade populacional, à extensão territorial, à quantidade de equipamentos urbanos ou ao maior uso dos canais de atendimento pelos moradores dessas localidades.

9.2 Top 10 grupos de serviços

top_grupos <- dados |>
  filter(!is.na(GRUPOSERVICO_DESCRICAO), GRUPOSERVICO_DESCRICAO != "") |>
  count(GRUPOSERVICO_DESCRICAO, sort = TRUE) |>
  slice_head(n = 10)

ggplot(top_grupos, aes(x = reorder(GRUPOSERVICO_DESCRICAO, n), y = n)) +
  geom_col(fill = "#238b45") +
  coord_flip() +
  scale_y_continuous(labels = label_number(big.mark = ".")) +
  labs(
    title = "Top 10 grupos de serviços mais solicitados",
    x = "Grupo de serviço",
    y = "Quantidade de solicitações"
  ) +
  theme_minimal(base_size = 13)

Os grupos de serviços mais frequentes representam as principais necessidades urbanas percebidas pela população. A identificação dessas categorias permite compreender quais áreas demandam maior atenção da administração pública e quais tipos de serviços aparecem com maior recorrência nos registros da Central 156.

9.3 Solicitações ao longo dos meses

solicitacoes_mes <- dados |>
  filter(!is.na(mes)) |>
  count(mes_numero, mes) |>
  arrange(mes_numero)

ggplot(solicitacoes_mes, aes(x = mes, y = n, group = 1)) +
  geom_line(color = "#08519c", linewidth = 1.2) +
  geom_point(color = "#08519c", size = 3) +
  scale_y_continuous(labels = label_number(big.mark = ".")) +
  labs(
    title = "Solicitações registradas por mês em 2024",
    x = "Mês",
    y = "Quantidade de solicitações"
  ) +
  theme_minimal(base_size = 13) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

A evolução mensal das solicitações permite identificar possíveis padrões sazonais ao longo do ano. Variações observadas podem estar associadas a fatores climáticos, operacionais, calendário de serviços ou aumento da utilização dos canais públicos em determinados períodos.

9.4 Situação das solicitações

situacao <- dados |>
  filter(!is.na(SITUACAO), SITUACAO != "") |>
  count(SITUACAO, sort = TRUE)

ggplot(situacao, aes(x = reorder(SITUACAO, n), y = n)) +
  geom_col(fill = "#cb181d") +
  coord_flip() +
  scale_y_continuous(labels = label_number(big.mark = ".")) +
  labs(
    title = "Situação das solicitações registradas",
    x = "Situação",
    y = "Quantidade de solicitações"
  ) +
  theme_minimal(base_size = 13)

A análise da situação dos atendimentos possibilita avaliar o andamento das demandas registradas. A distribuição observada fornece uma visão inicial sobre o fluxo dos chamados e sobre a capacidade de resposta dos serviços prestados ao longo do período analisado.

9.5 Tabela interativa dos bairros

datatable(
  top_bairros,
  colnames = c("Bairro", "Quantidade"),
  options = list(
    pageLength = 10,
    language = list(url = "//cdn.datatables.net/plug-ins/1.10.11/i18n/Portuguese-Brasil.json")
  ),
  rownames = FALSE
)

10 Conclusões Parciais

A análise exploratória inicial permitiu compreender a estrutura do conjunto de dados e identificar padrões relevantes nas solicitações urbanas registradas pela Emlurb durante o ano de 2024. Os resultados preliminares indicam concentração das demandas em determinados bairros e categorias de serviços, além de variações temporais ao longo do período analisado.

A etapa de preparação dos dados mostrou-se fundamental para a realização das análises, envolvendo tratamento de datas, padronização de variáveis textuais, criação de variáveis temporais e identificação de valores ausentes. Essas transformações permitiram organizar melhor a base e criar condições para a construção das primeiras visualizações.

As visualizações produzidas forneceram uma visão inicial das características dos registros e permitiram identificar tendências que poderão ser aprofundadas nas próximas etapas do projeto. Entre os principais pontos observados estão a concentração de solicitações em alguns bairros, a predominância de determinados grupos de serviços e a existência de variações mensais no volume de chamados.

Como continuidade do trabalho, pretende-se realizar análises mais detalhadas envolvendo as Regiões Político-Administrativas (RPAs), a distribuição geográfica das solicitações por meio das coordenadas disponíveis e possíveis relações entre tipos de serviços, localização e situação dos atendimentos. Essas análises poderão contribuir para uma compreensão mais abrangente das demandas urbanas da cidade do Recife e de sua distribuição espacial e temporal.