##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)
library(tidyr)
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
##Carregando a planilha de Base de Dados
planilha <- read_excel("202605_CPGF.xlsx")
glimpse(planilha)
## Rows: 13,053
## 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> 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, …
## $ `CPF PORTADOR` <chr> "***.725.752-**", "***.562.861-**", "***.562.…
## $ `NOME PORTADOR` <chr> "VIVIANE CORREA LIMA", "ANTONIO CARLOS MELO D…
## $ `CNPJ OU CPF FAVORECIDO` <dbl> 2.179328e+12, 4.328381e+13, 9.295987e+12, 6.1…
## $ `NOME FAVORECIDO` <chr> "FREITAS & CIA LTDA", "KALUNGA SA", "GOLFO IM…
## $ TRANSAÇÃO <chr> "COMPRA A/V - R$ - APRES", "COMPRA A/V - R$ -…
## $ `DATA TRANSAÇÃO` <dttm> 2026-04-06, 2026-04-01, 2026-04-06, 2026-04-…
## $ `VALOR TRANSAÇÃO` <dbl> 49.08, 19.40, 161.94, 30.44, 93.42, 150.00, 1…
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`
)
###Alterar o dado de todas as colunas para numérico
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] 16466
summary(planilha)
## codigo_orgao_superior nome_orgao_superior codigo_orgao nome_orgao
## Min. :20000 Length :13053 Min. :20101 Length :13053
## 1st Qu.:26000 N.unique : 28 1st Qu.:25205 N.unique : 168
## Median :30000 N.blank : 0 Median :30108 N.blank : 0
## Mean :35131 Min.nchar: 19 Mean :31166 Min.nchar: 15
## 3rd Qu.:47000 Max.nchar: 44 3rd Qu.:30108 Max.nchar: 92
## Max. :81000 Max. :81000
##
## codigo_unidade_gestora nome_unidade_gestora ano mes
## Min. :110001 Length :13053 Min. :2026 Min. :5
## 1st Qu.:153056 N.unique : 772 1st Qu.:2026 1st Qu.:5
## Median :173057 N.blank : 0 Median :2026 Median :5
## Mean :220030 Min.nchar: 12 Mean :2026 Mean :5
## 3rd Qu.:200382 Max.nchar: 45 3rd Qu.:2026 3rd Qu.:5
## Max. :881330 Max. :2026 Max. :5
##
## cpf_portador nome_portador cnpj_ou_cpf_fornecedor nome_fornecedor
## Min. : NA Length :13053 Min. :-1.100e+01 Length :13053
## 1st Qu.: NA N.unique : 2163 1st Qu.:-1.100e+01 N.unique : 5011
## Median : NA N.blank : 0 Median : 3.816e+12 N.blank : 0
## Mean :NaN Min.nchar: 8 Mean : 1.538e+13 Min.nchar: 8
## 3rd Qu.: NA Max.nchar: 49 3rd Qu.: 2.488e+13 Max.nchar: 107
## Max. : NA Max. : 9.841e+13
## NAs :13053
## transacao data_transacao valor_transacao
## Length :13053 Min. :2026-03-27 00:00:00 Min. : 1.0
## N.unique : 5 1st Qu.:2026-04-06 00:00:00 1st Qu.: 154.3
## N.blank : 0 Median :2026-04-13 00:00:00 Median : 494.2
## Min.nchar: 17 Mean :2026-04-11 12:44:30 Mean : 687.2
## Max.nchar: 33 3rd Qu.:2026-04-17 00:00:00 3rd Qu.: 1000.0
## Max. :2026-04-26 00:00:00 Max. :56994.0
## NAs :3413
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)))
Valor_orgao <- planilha %>%
count(nome_orgao_superior, sort = TRUE)
ggplot(Valor_orgao, aes(x = reorder(nome_orgao_superior , n), y = n)) + geom_col() + coord_flip() +
labs (
title = "Valores por órgão",
x = "Órgão Superior",
y = "Valor Transacionado"
)
ggplot(planilha, aes(x = codigo_orgao_superior )) + geom_histogram(bins = 30) +
labs(
title = "Distribuição por Órgão Superior",
x = "Órgão Superior",
y = "Frequência"
)
ggplot(planilha, aes(y = valor_transacao)) + geom_boxplot() +
labs(
title = "Boxplot Valores de Transações por Órgão",
y = "Dispersão"
)
#### Como se pode observar as despesas são simétricas, com exceção da
despesa do GSI (GABINETE DE SEGURANCA INSTITUCIONAL/PR), que equivale a
uma despesa de R$56.994,00
despesa_data <- planilha %>%
mutate(dia_do_mes = as.numeric(format(as.Date(`data_transacao`), "%d"))) %>%
group_by(dia_do_mes) %>%
summarise(valor_total = sum(`valor_transacao`, na.rm = TRUE))
ggplot(despesa_data, aes(x = dia_do_mes, y = valor_total)) +
geom_line(color = "firebrick", size = 1) +
geom_point(color = "firebrick", size = 2) + # Pontos ajudam a ver os dias exatos
scale_x_continuous(breaks = 1:31) + # Garante que mostre os dias de 1 a 31 no eixo X
labs(
title = "Evolução do Valor Total de Transações por Dia do Mês",
x = "Dia do Mês",
y = "Valor Total Transacionado (R$)"
) +
theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_line()`).
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_point()`).
#############################################
classificacao <- planilha %>%
count(valor_transacao)
ggplot(classificacao, aes(x = "", y = n, fill = valor_transacao)) + geom_col() +
coord_polar(theta = "y") +
labs(
title = "classificação de transação"
)