1. Ciência de dados na linha deCiência de dados na linha de
comandocomando
TuricasTuricas akaaka Álvaro JustenÁlvaro Justen
CapiConf 2019CapiConf 2019
10 de maio de 2019 - Curitiba/PR10 de maio de 2019 - Curitiba/PR
6. Maior parte do tempo dos projetos deMaior parte do tempo dos projetos de
análise de dados:análise de dados:
7. Acessibilidade de DadosAcessibilidade de Dados
ProblemasProblemas
Formato (qualidade técnica)
Exemplo: Boletim de balneabilidade em PDF (INEMA/BA)
Dispersão
Exemplo: Filiações partidárias em 945 ZIPs com CSVs (TSE)
Quantidade de dados
Exemplo: 18 milhões de sócios (RFB)
Domínio da área
Exemplo: o que é unidade eleitoral? (TSE)
8. 1.1 Introdução: Terminal1.1 Introdução: Terminal
Terminal: teclado = <3
ou "linha de comando"
ou "modo texto"
ou "tela preta"
ou "shell"
É um interpretador de comandos
Existem diversos:
DOS
Bash
Zsh
PowerShell
...
Foco: sistemas UNIX-like (Linux, *BSD, darwin)
No Windows: oucygwin gitbash
10. 1.2 Introdução: Comandos e1.2 Introdução: Comandos e
opçõesopções
Comandos ("verbos")
Exemplo: ls
Parâmetros
Exemplo: echo "olá, mundo!"
Opções
Exemplo: ls -l
Variáveis: armazenam valores
mensagem="olá, mundo!"
echo $mensagem
read -p "Qual seu nome? " no
echo $nome
11. 2.1 Navegação/manipulação2.1 Navegação/manipulação
de arquivos e diretóriosde arquivos e diretórios
ls: list files
Exemplos: ls, ls /tmp, ls ~/Desktop
mkdir: make directory
Exemplo: mkdir nova-pasta
Caminhos relativos versus absolutos
rmdir: remove directory (apenas vazios)
Exemplo: rmdir nova-pasta
cd: change directory
Exemplo: cd /tmp
cp: copia arquivos
Exemplo: cp data/*.gz .
touch: cria arquivo em branco
12. 2.2 Pedindo ajuda2.2 Pedindo ajuda
-h, --help
Exemplo: ls --help
man comando
Exemplo: man ls
Use /palavra para buscar
Use q para sair
13. Antes de continuar...Antes de continuar...
Baixar contracheque.csv.gz de
Baixar nomes.csv.gz de
brasil.io/dataset/salarios-
magistrados
brasil.io/dataset/genero-nomes
15. 3.2 Acesso e filtragem de3.2 Acesso e filtragem de
arquivosarquivos
wc: word counter
Exemplo: wc -l contracheque.csv
cat: concatenate and print files
Exemplo: cat contracheque.csv
grep: filter
Exemplo: grep -i "Sergio Fernando Moro" contracheque.csv
cut: split and cut files
Exemplo: cut -d',' -f2,15 contracheque.csv
head: output the first part of a file
Exemplo: head -1 contracheque.csv
tail: output the last part of a file
Exemplo: tail -5 contracheque.csv
16. 3.3. Redirecionar saída3.3. Redirecionar saída
comando > arquivo: cria novo arquivo (sempre)
Exemplo: head -1 contracheque.csv > cabecalho.csv
comando >> arquivo.txt: concatena ao arquivo
Exemplo: grep -i "Sergio Fernando Moro" contracheque.csv >>
cabecalho.csv
17. 3.4. Uso de recursos3.4. Uso de recursos
Filosofia UNIX: um comando faz somente uma tarefa - e o faz
bem
Os comandos trabalham de forma preguiçosa (lazy)
Rodar grep num arquivo de 5GB não exige essa quantidade
de memória (diferente do que abrir um arquivo desses no
Excel)
18. 3.4.2 Exemplo3.4.2 Exemplo
# `arquivo.csv` não cabe em memória!
# Será processado linha a linha.
grep XXX arquivo.csv > resultado.csv
19. 3.5 Criando scripts3.5 Criando scripts
Crie um arquivo e coloque um comando por linha
O comando history pode te ajudar, listando os comandos que
você digitou recentemente
Execute o script com:
bash nome-do-arquivo.sh; ou
Dê permissão de execução (chmod +x arquivo.sh) e rode
./arquivo.sh
20. 3.5.2 Navegando no histórico3.5.2 Navegando no histórico
de comandosde comandos
Seta para cima: mostra comandos anteriores
Facilita muito executar comandos parecidos, alterando
apenas alguns parâmetros
Ctrl-r: busca no histórico de comandos
Leia a documentação da para outros atalhosGNU Readline
21. 3.5.3 Script de Exemplo3.5.3 Script de Exemplo
juizes.shjuizes.sh
#!/bin/bash
echo "Número de linhas do arquivo inicial:"
wc -l contracheque.csv
echo "Criando arquivo com Moro e Bruno..."
head -1 contracheque.csv > juizes.csv
grep --color=no -i "SERGIO FERNANDO MORO" contracheque.csv >>
grep --color=no -i "BRUNO SOUZA SAVINO" contracheque.csv >> j
echo "Arquivo criado. Total de linhas: $(wc -l juizes.csv)"
22. 3.5.4 Script de Exemplo (2)3.5.4 Script de Exemplo (2)
juiz.shjuiz.sh
#!/bin/bash
INPUT="contracheque.csv"
head -1 "$INPUT" # header
grep --color=no -i "$1" "$INPUT"
23. 4.1. Combinando comandos4.1. Combinando comandos
Pipe (barra vertical): |
Redireciona saída de um comando (standard output) para a
entrada (standard input) de outro
Pode ser utilizado quantas vezes quiser
Pode ser utilizado em conjunto com > e >>
24. 3.2 Acesso e filtragem de3.2 Acesso e filtragem de
arquivos (2)arquivos (2)
juiz-rendimento.shjuiz-rendimento.sh
#!/bin/bash
INPUT="contracheque.csv"
head -1 "$INPUT"
grep --color=no -i "$1" "$INPUT" |
cut -d "," -f 2,15,20,22 |
sort
25. 4.2. Repetindo comandos4.2. Repetindo comandos
for x in sequence; do commands; done
while condition; do commands; done
cd /home/turicas/projects/balneabilidade-brasil/data/download
for filename in ls *.pdf; do
echo do something with $filename
done
26. 5. Análise de dados5. Análise de dados
Comandos que nem sempre estão instalados por padrão
Cada um requer uma forma diferente de instalação.
Em sistemas Debian e Ubuntu: apt install nome-do-programa
Exemplos:
aria2c: baixar arquivos
rows: converter dados tabulares em diversos formatos
convert (imagemagick): recorta, edita e converte imagens
27. Problema: lentidão ao baixarProblema: lentidão ao baixar
Estrelando:Estrelando: Receita FederalReceita Federal
twitter.com/turicas/status/1114185311372873729