library(dplyr)
library(ggplot2)
servidores.df = read.csv2('datasets/consulta_servidores.csv')
Lista de atributos existentes na base:
names(servidores.df)
## [1] "Nome" "Cpf" "Categoria" "Cargo" "Orgao" "Cidade"
summary(servidores.df)
## Nome Cpf
## FRANCISCO DAS CHAGAS SILVA: 38 ***.217.803-**: 9
## RAIMUNDO NONATO DA SILVA : 35 ***.282.153-**: 9
## FRANCISCO PEREIRA DA SILVA: 30 ***.776.103-**: 9
## MARIA DO SOCORRO SILVA : 25 ***.973.703-**: 9
## RAIMUNDO NONATO DE SOUSA : 24 ***.061.303-**: 8
## MARIA DAS GRACAS SILVA : 23 ***.156.903-**: 8
## (Other) :100565 (Other) :100688
## Categoria Cargo
## EFETIVO :39880 PROFESSOR B - IV : 4500
## APOSENTADO :32118 PROFESSOR SE - I : 4430
## PENSIONISTA : 9486 PROFESSOR SL - IV : 3576
## CONTRATADO : 7954 PROF.SUBS.SL.SUP.COMPLE.20H: 3378
## EFETIVO COMISSIONADO: 4675 PROFESSOR SL - I : 3273
## PRESTADOR DE SERVICO: 2789 ZELADOR (A) : 3229
## (Other) : 3838 (Other) :78354
## Orgao Cidade
## EDUCACAO - INATIVOS :21817 TERESINA :52534
## EDUCACAO - FUNDEB :14911 PARNAIBA : 4478
## IAPEP - INATIVOS :10126 PICOS : 3674
## IAPEP-PENSIONISTAS : 9455 FLORIANO : 2924
## SEC DE SAUDE : 9398 CAMPO MAIOR: 1817
## EDUCACAO FUNDEB PRESTADOR: 7136 PIRIPIRI : 1643
## (Other) :27897 (Other) :33670
A biblioteca Dplyr Ă© muito Ăºtil para o processamento de data.frames. No exemplo abaixo, estamos agrupando os servidores pelo atributo Orgao e, em seguida, criando dois novos atributos que irĂ£o armazenar a quantidade de servidores e a quantidade de servidores com nomes distintos respectivamente. Ao final, estamos ordenando o novo data.frame em ordem decrescente da quantidade de servidores.
orgao_servidores.df = group_by(servidores.df, Orgao) %>%
summarise(n_servidores = n(), n_distintos = n_distinct(Nome)) %>%
arrange(desc(n_servidores))
head(orgao_servidores.df, n=10)
## # A tibble: 10 x 3
## Orgao n_servidores n_distintos
## <fct> <int> <int>
## 1 EDUCACAO - INATIVOS 21817 21121
## 2 EDUCACAO - FUNDEB 14911 14604
## 3 IAPEP - INATIVOS 10126 9666
## 4 IAPEP-PENSIONISTAS 9455 8573
## 5 SEC DE SAUDE 9398 9202
## 6 EDUCACAO FUNDEB PRESTADOR 7136 7115
## 7 POLICIA MILITAR DO PIAUI 6144 6081
## 8 SEC. DE ESTADO DA EDUCACAO 3019 3001
## 9 SEC DE SEGURANCA PUBLICA 2320 2309
## 10 FUESPI-FUNDACAO U.E.DO PIAUI 1753 1746
barplot(height = orgao_servidores.df$n_servidores)
A biblioteca ggplot2 Ă© muito popular para a geraĂ§Ă£o de grĂ¡ficos. Uma grande vantagem dela Ă© a capacidade de sumarizar automaticamente os dados. Por exemplo:
ggplot(servidores.df,
aes(Orgao)) +
geom_bar()
Vamos modificar o modo de exibiĂ§Ă£o do grĂ¡fico de barras para melhorar a visuliaĂ§Ă£o das legendas.
ggplot(servidores.df,
aes(Orgao)) +
geom_bar() +
coord_flip()
cidades_servidores.df = group_by(servidores.df, Cidade) %>%
summarise(n_servidores = n(), n_distintos = n_distinct(Nome)) %>%
arrange(desc(n_servidores))
Top 10
head(cidades_servidores.df, n = 10)
## # A tibble: 10 x 3
## Cidade n_servidores n_distintos
## <fct> <int> <int>
## 1 TERESINA 52534 48366
## 2 PARNAIBA 4478 4331
## 3 PICOS 3674 3509
## 4 FLORIANO 2924 2825
## 5 CAMPO MAIOR 1817 1758
## 6 PIRIPIRI 1643 1608
## 7 OEIRAS 1512 1466
## 8 SAO RAIMUNDO NONATO 1358 1321
## 9 - 1155 1148
## 10 CORRENTE 1057 1030
Caso os dados jĂ¡ estejam sumarizados, devemos adicionar um parĂ¢metro na funĂ§Ă£o geom_bar(). Caso seja necessĂ¡rio, podemos tambĂ©m modificar as cores e posições das legendas.
ggplot(head(cidades_servidores.df, n = 10),
aes(Cidade, n_servidores, fill = Cidade)) +
geom_bar(stat = 'identity') +
theme(axis.text.x=element_text(angle=45, hjust=1))
ggplot(servidores.df,
aes(Categoria, fill = Categoria)) +
geom_bar() +
theme(axis.text.x=element_text(angle=45, hjust=1))