Bibliotecas

library(dplyr)
library(ggplot2)

Importar Dataset

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

Servidores por Ă³rgĂ£o

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))

Top 10

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()

Servidores Por Cidade

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))

Servidores Por Categoria

ggplot(servidores.df,
       aes(Categoria, fill = Categoria)) +
       geom_bar() +
  theme(axis.text.x=element_text(angle=45, hjust=1))