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.
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)
planilha <- read_excel("/cloud/project/202601_CPGF.xlsx")
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"
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`
)
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
sum(is.na(planilha))
## [1] 12608
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
planilha_sem_nas <- na.omit(planilha)
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)))