Dados Descritivos da Matéria

Análise de Dados

Prof: Adriano Lauro

Centro Universitário Celso Lisboa

Introdução

A transparência dos gastos públicos é um tema de grande relevância social, e uma das formas de acompanhá-la é através da análise dos dados do Cartão de Pagamento do Governo Federal, o CPGF. Diante do grande volume de informações disponibilizadas, torna-se fundamental utilizar ferramentas computacionais que facilitem a interpretação desses dados.Nesse sentido, o presente trabalho tem como objetivo utilizar a linguagem R, por meio do ambiente RStudio, para realizar o carregamento de uma planilha contendo dados do CPGF e, a partir dela, desenvolver diferentes representações gráficas. A escolha do R se justifica por sua robustez estatística e pela variedade de pacotes voltados à visualização de dados, como o ggplot2 e o readxl.Para explorar o comportamento dos gastos registrados no cartão, serão construídos gráficos de linha, para observar a evolução temporal; histogramas, para analisar a distribuição dos valores; boxplots e gráficos de violino, para identificar dispersão e possíveis outliers; e gráficos de coluna e pizza, para comparar proporções entre categorias de despesa.Dessa forma, o trabalho busca aplicar na prática os conceitos de programação e análise exploratória, transformando uma base de dados bruta em visualizações que permitem compreender padrões, tendências e anomalias nos gastos públicos. Além de consolidar o aprendizado da disciplina, o projeto evidencia como a programação é uma aliada importante na fiscalização e no controle social.

Carregamento de Pacotes

library(rmarkdown)
library(readr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(readxl)

Carregamento de Planilha

planilha <-  read_excel("/cloud/project/202601_CPGF.xlsx")

Verificando os dados da base:

verificando os nomes das colunas e varificando o tipo de dado de cada coluna, para facilitar na hora de fazer qual que tipo de gráfico ou até mesmo poder fazer operações aritimétricas

glimpse(planilha)
## Rows: 9,679
## Columns: 15
## $ `CÓDIGO ÓRGÃO SUPERIOR`  <dbl> 63000, 63000, 63000, 63000, 63000, 63000, 630…
## $ `NOME ÓRGÃO SUPERIOR`    <chr> "Advocacia-Geral da União", "Advocacia-Geral …
## $ `CÓDIGO ÓRGÃO`           <dbl> 63000, 63000, 63000, 63000, 63000, 63000, 630…
## $ `NOME ÓRGÃO`             <chr> "Advocacia-Geral da União - Unidades com vínc…
## $ `CÓDIGO UNIDADE GESTORA` <dbl> 110161, 110161, 110161, 110161, 110161, 11016…
## $ `NOME UNIDADE GESTORA`   <chr> "SUPERINTENDENCIA REG. DE ADMIN. DA 1ª REGIAO…
## $ `ANO EXTRATO`            <dbl> 2026, 2026, 2026, 2026, 2026, 2026, 2026, 202…
## $ `MÊS EXTRATO`            <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ `CPF PORTADOR`           <chr> "***.195.852-**", "***.212.021-**", "***.195.…
## $ `NOME PORTADOR`          <chr> "JOSE UELISSON ALVES LEITE", "SYLVIO EDGARD D…
## $ `CNPJ OU CPF FAVORECIDO` <dbl> 4.35947e+13, 7.26494e+13, 5.70569e+12, 5.5159…
## $ `NOME FAVORECIDO`        <chr> "VINIL DECOR MOLDURARIA DECORACAO E COMERICO …
## $ TRANSAÇÃO                <chr> "COMPRA A/V - R$ - APRES", "COMPRA A/V - R$ -…
## $ `DATA TRANSAÇÃO`         <dttm> 2025-12-05, 2025-12-19, 2025-12-05, 2025-12-…
## $ `VALOR TRANSAÇÃO`        <dbl> 91.86, 1435.20, 336.70, 312.00, 805.00, 155.0…
colnames(planilha)
##  [1] "CÓDIGO ÓRGÃO SUPERIOR"  "NOME ÓRGÃO SUPERIOR"    "CÓDIGO ÓRGÃO"          
##  [4] "NOME ÓRGÃO"             "CÓDIGO UNIDADE GESTORA" "NOME UNIDADE GESTORA"  
##  [7] "ANO EXTRATO"            "MÊS EXTRATO"            "CPF PORTADOR"          
## [10] "NOME PORTADOR"          "CNPJ OU CPF FAVORECIDO" "NOME FAVORECIDO"       
## [13] "TRANSAÇÃO"              "DATA TRANSAÇÃO"         "VALOR TRANSAÇÃO"

Alteração de tipo de dado:

1 - alterando os nomes das colunas

planilha <- planilha %>%
  select(codigo_orgao_superior = `CÓDIGO ÓRGÃO SUPERIOR`,nome_orgao_superior = `NOME ÓRGÃO SUPERIOR`,codigo_orgao = `CÓDIGO ÓRGÃO`,nome_orgao = `NOME ÓRGÃO`,codigo_unidade_gestora = `CÓDIGO UNIDADE GESTORA`,nome_unidade_gestora = `NOME UNIDADE GESTORA`,ano = `ANO EXTRATO`,mes = `MÊS EXTRATO`,cpf_portador = `CPF PORTADOR`,nome_portador = `NOME PORTADOR`,cnpj_ou_cpf_fornecedor = `CNPJ OU CPF FAVORECIDO`,nome_fornecedor = `NOME FAVORECIDO`,transacao = TRANSAÇÃO,data_transacao = `DATA TRANSAÇÃO`,valor_transacao = `VALOR TRANSAÇÃO` 
         )

Alterando tipo de dado de uma variável “coluna”

planilha <- planilha %>%
  mutate(codigo_orgao_superior = as.numeric(codigo_orgao_superior),codigo_orgao = as.numeric(codigo_orgao),codigo_unidade_gestora = as.numeric(codigo_unidade_gestora),ano = as.numeric(ano),mes = as.numeric(mes),cpf_portador = as.numeric(cpf_portador),cnpj_ou_cpf_fornecedor = as.numeric(cnpj_ou_cpf_fornecedor),valor_transacao = as.numeric(valor_transacao))
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `cpf_portador = as.numeric(cpf_portador)`.
## Caused by warning:
## ! NAs introduced by coercion

Tratando os NAs:

1 Identificando NA em toda base de dados

sum(is.na(planilha))
## [1] 12608

2 Identificando quantitativo de NA por variável

summary(planilha)
##  codigo_orgao_superior nome_orgao_superior  codigo_orgao    nome_orgao       
##  Min.   :20000         Length:9679         Min.   :20101   Length:9679       
##  1st Qu.:26000         Class :character    1st Qu.:25205   Class :character  
##  Median :30000         Mode  :character    Median :26414   Mode  :character  
##  Mean   :36247                             Mean   :30035                     
##  3rd Qu.:47000                             3rd Qu.:30108                     
##  Max.   :81000                             Max.   :81000                     
##                                                                              
##  codigo_unidade_gestora nome_unidade_gestora      ano            mes   
##  Min.   :110001         Length:9679          Min.   :2026   Min.   :1  
##  1st Qu.:114625         Class :character     1st Qu.:2026   1st Qu.:1  
##  Median :170339         Mode  :character     Median :2026   Median :1  
##  Mean   :212402                              Mean   :2026   Mean   :1  
##  3rd Qu.:200396                              3rd Qu.:2026   3rd Qu.:1  
##  Max.   :881330                              Max.   :2026   Max.   :1  
##                                                                        
##   cpf_portador  nome_portador      cnpj_ou_cpf_fornecedor nome_fornecedor   
##  Min.   : NA    Length:9679        Min.   :-1.100e+01     Length:9679       
##  1st Qu.: NA    Class :character   1st Qu.:-1.100e+01     Class :character  
##  Median : NA    Mode  :character   Median : 8.104e+10     Mode  :character  
##  Mean   :NaN                       Mean   : 1.401e+13                       
##  3rd Qu.: NA                       3rd Qu.: 2.289e+13                       
##  Max.   : NA                       Max.   : 9.736e+13                       
##  NA's   :9679                                                               
##   transacao         data_transacao                valor_transacao  
##  Length:9679        Min.   :2025-11-03 00:00:00   Min.   :    0.5  
##  Class :character   1st Qu.:2025-12-02 00:00:00   1st Qu.:  230.1  
##  Mode  :character   Median :2025-12-05 00:00:00   Median :  760.0  
##                     Mean   :2025-12-07 11:21:23   Mean   :  824.5  
##                     3rd Qu.:2025-12-12 00:00:00   3rd Qu.: 1000.0  
##                     Max.   :2025-12-28 00:00:00   Max.   :52343.8  
##                     NA's   :2929

3 Retirando todos os NA da base

planilha_sem_nas <- na.omit(planilha)

Estatística Básica

  • desvio padrao
  • mediana
  • média
  • máximo
  • mínimo
  • Dplyr -> dataframe
estatistica_gasto_cartao_corporativo <- data.frame(media_valor_transacao = mean(planilha$valor_transacao),
  mediana_valor_transacao = median(na.omit(planilha$valor_transacao)),DESV_padrao_valor_transacao = sd(na.omit(planilha$valor_transacao)),var_padrao_valor_transacao = var(na.omit(planilha$valor_transacao)),max_valor_transacao = max(na.omit(planilha$valor_transacao)),min_valor_transacao = min(na.omit(planilha$valor_transacao)))

Gráficos

  • linha
  • histograma
  • boxplot/violino
  • coluna/pizza