Uma análise de dados requer ferramentas bem específicas para obter o maior número de informações sobre determinado conteúdo. Pode ser uma simples arquivo de planilha ou uma base de dados robusta. Em algumas situações, basta você usar algumas ferramentas, que já vêm instaladas no Linux, para obter informações relevantes sobre alguns dados. A maioria delas presente no pacote GNU Coreutils.
Uma análise de dados consiste em manipular um conjunto de dados com o objetivo de obter informações precisas e relevantes desse conjunto. Em resumo, é capturar uma base de dados de informações “bruta” e obter detalhes, mediante critérios adotados. Entretanto, numa análise de dados possui diferentes abordagens, incorporando diversas técnicas. O exemplo adotado aqui será bem simples, cabe a você definir os critérios a serem analisados 😉
Faça o download de uma arquivo de dados de amostra, contidos no GitHub, que é uma lista de artigos CSV (valores separados por vírgula) publicado no Opensource.com.
Análise de dados no Linux
Esse material foi baseado no artigo original do Opensource.com. Portanto, é importante que faça o download do arquivo de amostra AQUI. Esse arquivo será utilizado para realizarmos a análise dos dados!
1 – Head e Tail
Um simples comando cat pode exibir todo o conteúdo do arquivo CSV. Contudo, a análise de dados pode ficar dificultada por conta da quantidade de linhas existentes no arquivo. Com os comandos head e tail – ambos utilitários para mostrar um número especificado de linhas da parte superior ou inferior do arquivo, respectivamente – torna a visualização dos dados mais fácil:
Onde,
-n: indica o número de linhas a serem exibidas. No caso as últimas 3 linhas.
O comando tail exibe as últimas linhas de um arquivo. Por outro lado, é importante visualizar o conteúdo do início do arquivo. Para “filtrar” o cabeçalho do arquivo, use o comando head:
Onde,
-n: indica o número de linhas a serem exibidas. No caso as primeiras 2 linhas.
Assim, dado um arquivo, no qual ainda não é conhecido por você, “começar” usando os comandos head e tail aumenta o compreendimento do que ele refere-se 😉
2 – wc
Mas, quão grande é esse arquivo? O comando wc pode ajudar. Ele conta o número de bytes, caracteres, palavras ou linhas de um arquivo. No nosso caso, queremos saber o número de linhas:
Onde,
-l: indica que deve ser feita contagem de linhas.
3 – grep
Mediante a seus critérios, você pode querer saber quantas vezes determinada palavra se repete; por exemplo. A ferramenta grep pode ajudar com nisso. Com o grep, você pode pesquisar, num arquivo ou numa outra entrada, um determinado padrão de caracteres – no caso uma palavra.
O grep é uma ferramenta incrivelmente poderosa. Tudo graças às expressões regulares que você pode construir para criar padrões de caracteres muito precisos. Entretanto, nesse exemplo apenas procuraremos uma sequência simples:
Onde,
-i: avisa para NÃO diferenciar maiúsculas e minúsculas.
O resultado pode ser muito grande e, provavelmente, “incontável” a olho nu. Assim, usando um “pipe”, podemos combinar o grep com o comando wc, usado anteriormente, para obter uma contagem do total de linhas que contém a palavra “security”:
Neste caso, o wc “pegou” a saída do comando grep, e usou-o como entrada, sem precisar executar um comando para depois o outro – “mágica” do pipe (|) 😉
Algumas ferramentas de terminal que podem ser mais práticas do que os aplicativos gráficos
GoTTY – Compartilhe suas ferramentas de terminal Linux como uma aplicação web
4 – tr
Um arquivo CSV é um formato bastante útil para muitos cenários de análise, mas e se você precisar converter o arquivo para um formato diferente para uso em um aplicativo diferente?
Talvez, você deseja alterá-los para algum HTML para que você possa usar a saída de dados em uma tabela. O comando tr pode ajudá-lo com isso, para “traduzir” um tipo de caracter para outro. Como os outros exemplos, você também pode canalizar entrada e saída para este comando.
Assim, vamos criar um arquivo TSV (arquivo separado por espaçamento TAB) com apenas os artigos publicados em 20 de janeiro (informação contida no arquivo.csv):
Observe que foi criado um novo arquivo (jan20-somente.tsv) contendo somente as linhas que contêm as postagens do dia 20 janeiro. Tudo isso usando o grep, o pipe (|) e comando tr. O tr converteu o separador ‘,’ para o ‘\t’ (TAB) e caracter ‘>’ redirecionou a saída para o novo arquivo 😉
Para visualizar o conteúdo do novo arquivo, execute:
5 – sort
E se quiséssemos saber mais detalhes sobre uma determinada coluna? Qual é a maior postagem publicada no dia 20 janeiro? Agora que temos uma lista de artigos de apenas a data 20 de janeiro, podemos usar o comando sort para ordenar uma coluna:
Primeiro, está sendo usado o comando sort para ordenar pelo número de palavras. A opção -nr solicita uma ordenação numérica e em ordem inversa (maior para menor). O -t $’\t’ informa que o delimitador é a guia (‘\t’ – TAB). O -k8 do comando sort diz que é para ordenar usando como base a 8a coluna do arquivo (Word count) – possui a contagem de palavras no arquivo tsv.
Por fim, logo após o pipe (|) é usado o comando head para exibir a primeira linha(-n), depois da ordenação.
6 – cut
E se precisar das informações de apenas uma coluna? Vamos criar uma nova lista de “autores” usando o comando cut:
Neste exemplo simples, usando o cut com -d ‘,’ informa que o arquivo é delimitado por vírgula. Além disso, com o -f3 é solicitada a terceira coluna. Por fim, é enviado a saída para um novo arquivo chamado autores.txt 😉
7 – unique
Com uma lista de autores, você pode precisar saber quantos autores únicos estão nela. Ou quantos artigos escreveu cada autor? Use o comando uniq. Com o uniq, você pode facilmente descobrir. Vamos ordenar o arquivo, encontrar uniques, em seguida, saídas um arquivo que tem uma contagem do número de artigos escritos por cada autor.
Onde,
-c: solicita que seja mostrado o número de ocorrências de cada item (no caso, autor).
Considerações
Pode ser que não seja tão útil, num primeiro momento, usar o terminal para realizar esse tipo de análise. Mas, imagine um arquivo com grande volume de dados, com mais 50 mil linhas, por exemplo. Um software gráfico, provavelmente, irá “travar” ao tentar abrir um arquivo tão grande. Por isso, talvez não seja a melhor opção usar um software gráfico para ambientes assim :/
Saiba como manipular documentos usando a interface de linha de comando do LibreOffice
Alguns exemplos de que o comando dd pode ser considerado umas das ferramentas mais versáteis do Linux
Assim, ao mostrar essas ferramentas de linha de comando, e, talvez, usando um script, você pode trabalhar com grandes quantidades de dados com mais facilidade. Por isso, é recomendado aprender estas e outras ferramentas (como sed e awk não citadas no artigo) de análise de dados de linha de comando 😉
Por fim, como o que foi apresentado foi apenas uma introdução, solicito que consulte o manual de comandos de cada ferramenta no seu sistema Linux para mais recursos e funções!
Via | Opensource.com