Arx combinatoria é um conjunto de ferramentas baseado em awk, R e Unix, úteis para manipulação de dados. Awk é uma linguagem de programação projetada para lidar com processamento de textos. R, também uma linguagem de programação, é sobretudo um ambiente de desenvolvimento integrado para cálculos estatísticos e visualização gráfica. X é uma referência às ferramentas Unix e suas extensões GNU/Linux.
Isoladamente ou de forma integrada, de acordo com a complexidade da tarefa, estas ferramentas podem ser utilizadas para obter, tratar, explorar, modelar e interpretar os dados.
Algumas funcionalidades passam a ser demonstradas, através de um exercício que você poderá reproduzir. No prompt da sua distribuição linux favorita, digite os seguintes comandos:
Para obter os relatorios trimestrais de despesas de publicidade, no primeiro mandato de Bruno Siqueira
host="https://www.pjf.mg.gov.br"
path="transparencia/despesas_publicas/publicidade"
parameter="arquivos/pdf"
resource="[13-16][01-04]t.pdf"
url=$(echo $host/$path/$parameter/$resource)
$ curl -k $url -o "publicidade#1#2.pdf"Para tratar os arquivos baixados, converta o formato pdf em txt
Reagrupe os registros individuais que foram segmentados em duas linhas
Depois remova o símbolo da moeda (Real) e reduza múltiplos espaços a apenas um
Em seguida remova os espaços existentes no início da linha e as linhas em branco
Exclua as linhas iniciadas por um caracter alfabético MAIÚSCULO seguido por outro minúsculo
Extraia a tabela e defina “:” como separador de campos
Substitua o caracter indicador de decimal - no lugar da vírgula utilize o ponto
Agora some as despesas por fornecedor
Exclua os valores zerados
Ordene a lista em ordem decrescente por valor
Finalmente salve o resultado no arquivo escolhido
Executamos o shell script diretamente no R Markdown. Por uma questão de economia de espaço em disco, preservamos somente o arquivo no formato csv.
trap "exit 1" HUP INT PIPE QUIT TERM
trap "rm -f *.pdf " ERR EXIT
host="https://www.pjf.mg.gov.br"
path="transparencia/despesas_publicas/publicidade"
parameter="arquivos/pdf"
resource="[13-16][01-04]t.pdf"
url=$(echo $host/$path/$parameter/$resource)
curl -k $url -o "publicidade#1#2.pdf" &&
for f in publicidade1[3-6]0[1-4]*.pdf;
do pdftotext -layout "$f" - ; done |
sed -r '/[A-Z]$/ {N; s/ *\n/ /}' |
sed 's/R\$//g ; s/\s\+/ /g' |
sed 's/^ *//g ; /^\s*$/d' |
grep -v "[A-Z][a-z]" |
sed 's/\(.*\)\ \(.*\)\ \(.*\)/\1:\2/' |
sed 's/\.//g ; s/,/./g' |
awk 'BEGIN {FS=OFS=":"} NR>1 {a[$1]+=$2}
END {for (i in a) {printf i ":%.2f\n" , a[i]}}' |
awk -F ":" '($2 > 0.00) {print $0}' |
sort -t: -k2gr > gastos.csv Carregamos bibliotecas adicionais:
Definimos o diretório de trabalho, onde salvamos o arquivo:
Carregamos o arquivo no R e armazenamos os dados em um novo objeto. Renomeamos as colunas e ordenamos a variável convertida em fator.
Os gastos em publicidade no primeiro mandato do prefeito Bruno Siqueira ultrapassaram R$ 20 milhões, dos quais 75% foram destinados a 7 fornecedores (de um grupo de 100).
Para a representação visual, utilizamos o pacote ggplot2, que contém as ferramentas necessárias para a criação de gráficos adequados a diferentes estruturas de dados.
Nesse caso,recomenda-se o gráfico de barras:
g <- ggplot(top, aes(x=reorder(Fornecedor, +Valor), y = Valor/1000000))
gb <- g + geom_bar( stat = "identity", fill = "black")
gb <- gb + coord_flip() +
xlab("") +
ylab("Valor em milhões de Reais") +
theme(
axis.text.y = element_text(size=rel (0.8)),
axis.text.x = element_text(size=rel (0.8)))
gb
Pode ser utilizado o gráfico de barras empilhadas:
gbe <- ggplot(top, aes(x = "", y = (Valor/1000000), fill = Fornecedor)) +
geom_bar( stat = "identity") +
labs(x=NULL, y=NULL)
gbe
Para destacar o fornecedor que abocanhou a maior fatia do bolo, o gráfico de barras empilhadas pode ser facilmente transformado em um gráfico polar:
Robbins, A. & Beebe, H.F. (2008). Classic Shell Scripting.
Janssens, J. (2015). Data Science at the Command Line.