Por que eu devo ler este artigo:Esse artigo é útil para estudantes e profissionais que desejam conhecer mais sobre a área de análise de dados, tanto na teoria como na prática. Análise de dados é utilizada em diferentes setores de nossas vidas, como saúde, segurança, eleições, marketing entre outras.

Este artigo irá tratar os principais conceitos sobre big data, big data analytics (análise de dados) e estatística descritiva. Além disso, irá discorrer sobre uma das ferramentas open source existentes no mercado para realizar análise de dados, o R Studio.

As empresas estão investindo cada vez mais nesse segmento e em profissionais, para melhorar seus processos e facilitar tomadas de decisão. A análise de dados também é muito utilizada para algoritmos de aprendizado de máquina.

O volume de dados gerados, coletados e armazenados cresce constantemente, assim, novos métodos, tecnologias e ferramentas são desenvolvidas para possibilitar que as empresas e gestores possam analisar essa grande quantidade de registros coletados, auxiliando nas tomadas de decisão, estratégias de marketing ou até mesmo na identificação de fraudes entre outros casos.

Saiba mais Relacionado Cursos de Engenharia de Software

Atualmente existem diferentes ferramentas para análise de dados, tanto softwares privados, como SAS, SAP, QlikView entre outras, quanto softwares livres, como Pentaho, Talend, Jaspersoft, R entre outras. Uma observação a ser feita é sobre o R. Essa ferramenta durante muito tempo foi utilizada por especialistas na área de estatística, isso porque o objetivo desse software era atender a essa classe. Mas, com o passar dos anos, diversos desenvolvedores começaram a utilizar essa ferramenta, tornando-a atualmente uma das ferramentas mais utilizada para analisar grandes quantidades de dados.

Pelo alto preço das ferramentas pagas nessa área, empresas, desenvolvedores entre outros profissionais procuram ferramentas open source bem sólidas para realizar suas análises. Nessa imensidão de opções de softwares livres, muitas vezes a maior dificuldade que se tem é em escolher e surge a seguinte pergunta: “qual a melhor? ”. Como todo profissional sabe, não existe a melhor ferramenta ou a melhor linguagem de programação, mas sim, as mais ideais para os objetivos a serem alcançados.

Para analisar dados, apenas conhecer linguagens de programação ou ferramentas não é o suficiente, o estudante ou profissional que deseja atuar nessa área deve saber um pouco de cada coisa, além de conhecer as ferramentas já citadas, banco de dados, metodologias, regras de negócios e estatística. Ter conhecimentos de métodos estatísticos, gráficos, entre outros, é essencial para realizar uma boa investigação dos dados, mesmo as ferramentas muitas vezes possuindo funções para realizar os diferentes cálculos existentes, o profissional deve saber quais métodos irá utilizar para cada situação que se encontra.

A estatística para análise de dados, algoritmos de aprendizado de máquina, algoritmos de inteligência artificial entre outras áreas em ciência de dados, é essencial. O profissional que atua nessa área irá a todo momento se deparar com situações em que irá precisar aplicar métodos e/ou gráficos estatísticos, seja para tomar alguma decisão, ou para identificar o que acontecer em determinado caso, ou para ir mais adiante, como aplicar métodos de aprendizado de máquina.

O surgimento das linguagens de programação, ferramentas e o crescente uso da estatística para analisar os dados, deu-se por conta do constante crescimento do volume dos dados. Essa grande quantidade de dados pode ser um big data, um conceito bem antigo, mas que vem sendo divulgado e utilizado muito fortemente nos últimos anos. Muitos ainda confundem do que realmente se trata big data, se a empresa realmente possui um big data ou possui apenas um grande conjunto de dados armazenados.

Esse artigo tem como objetivo apresentar os principais conceitos de big data, análise de dados, estatística descritiva e a ferramenta a ser utilizada para análise de dados, nesse caso a linguagem de programação R, através da IDE RStudio.

Big Data

As empresas armazenam dados muito antes de o termo big data explodir mundialmente. O que diferencia antigamente dos dias atuais é a capacidade de trabalhar com esses dados, transformá-los em conhecimentos úteis para as organizações.

Muitos confundem o fato de que se ter muitos dados armazenados já se pode dizer que se tem um big data, e essa ideia muitas vezes está errada. Big data é uma estratégia de gerenciamento de informações holística que incluem e integra muitos tipos de dados e gerenciamentos de dados juntamente com dados tradicionais. Doug Laney, um famoso analista que articulou a definição de big data, define que big data possui três V’s:

  • Volume: coleta de dados de uma grande variedade de fontes, por exemplo, transações comerciais, redes sociais, informações de sensores, e-mails entre outras;
  • Velocidade: dados são gerados e coletados em uma velocidade sem precedentes e devem ser tratados online, por exemplo, já existem alguns aplicativos de internet das coisas (IoT) que possuem ramificações de saúde e segurança, então estes requerem uma avaliação em tempo real;
  • Variedade: os dados são gerados em todos os tipos de formatos, por exemplo, dados estruturados (como aqueles presentes em banco de dados), dados não estruturados (como e-mail, vídeos), comentários em redes sociais, transações financeiras entre outros.

Essas três características são os principais pilares para possuir um conjunto de dados do tipo big data, ou seja, quando se apenas possui um grande volume de dados armazenados nem sempre se tem um big data, mas sim apenas um conjunto de dados grande.

Com o crescente número de dispositivos que irão fazer parte do “mundo” IoT, a utilização do big data irá crescer consideravelmente, assim, a utilização de técnicas, ferramentas e profissionais para análise de dados também irá crescer.

Data Analytics (Análise de dados)

Com o crescente número de dados armazenados, troca de informações constantes e diferentes tipos de dados, é necessário ter ferramentas e técnicas para analisá-los. Análise de dados é a atividade de transformar um conjunto de dados em informações, com o objetivo de poder conhecê-los melhor. Ao analisar os dados, tem-se uma melhor compreensão deles, então, ao aplicar técnicas de análise para predição ou descrição, é possível verificar o volume de dados disponível, a sua qualidade, os ruídos e até mesmo dados que estão faltando para obter insights de qualidade.

O objetivo de data analytics é simples e direto, utilizar um conjunto de ferramentas e métodos para coletar, organizar e analisar os dados, para obter insights valiosos sobre tendências, comportamento e melhorar os processos de trabalho. Assim, é possível que as organizações tomem decisões mais precisas e, sobretudo, antecipadas à concorrência.

Ainda dentro do campo de análise de grande conjunto de dados, há quatro tipos de análise que se destacam pela usabilidade e potencialidade dos resultados, são elas: preditiva, prescritiva, descritiva e diagnóstica. Em seguida, cada tipo será exemplificado:

  • Análise preditiva: esse tipo de análise é conhecido por analisar os dados para descobrir possibilidade futuras. Assim, ao identificar padrões passados na base de dados, é possível aos gestores mapearem definições futuras em suas áreas de atuação. Essa análise possibilita que os gestores tomem decisões mais precisas, e não somente em intuição, conseguindo estabelecer um prognóstico mais sólido para cada ação. Esse tipo de análise utiliza de técnicas de mineração de dados, métodos estatísticos e dados históricos para conhecer futuras tendências. Um exemplo do uso de análise preditiva foi um trabalho realizado por uma empresa de Big Data, a Hekima, para analisar as redes sociais durante a copa do mundo. O objetivo era prever as manifestações, saber quais estariam mais cheias, que teriam o teor mais violento e quais seriam mais pacíficas. Então, era possível que as autoridades competentes tomassem decisões mais exatas, aumentando as chances sucesso em suas operações;
  • Análise prescritiva: esse tipo de análise se assemelha com a análise preditiva, mas com objetivo de traçar as possíveis consequências de cada ação (a análise preditiva identifica tendências futuras). Esse tipo de análise é muito pouco utilizado, de acordo com um artigo publicado pela Gartner, apenas 3% das empresas fazem uso dela. Na maioria das vezes, utiliza-se pouco essa análise por falta de conhecimento. Um exemplo de uso desse tipo de análise é na área de saúde, quando gestores mapeiam e traçam padrões de um determinado grupo de pacientes e doenças e, assim, analisam possíveis impactos de ações sobre esse grupo, investigando qual seria a melhor opção de gestão para eles;
  • Análise descritiva: essa análise possibilita a compreensão dos dados e dos acontecimentos, de preferência em tempo real. É uma maneira de visualizar os dados, entender como uma base de dados se organiza e o que significa, sem necessariamente relacioná-los com padrões passados e futuros. Um exemplo do uso na análise descritiva ocorre nas instituições financeiras para empréstimo: as empresas a utilizam para realizar a análise de crédito dos clientes, assim, investigam as informações coletadas de um cliente para compreender os riscos envolvidos na concessão de empréstimo, definição de taxas de juros entre outros;
  • Análise diagnóstica: esse tipo de análise tem como objetivo compreender de maneira causal, ou seja, quem, quando, como, onde e por que, todas as possibilidades. Um exemplo do uso dessa análise é nas campanhas de marketing: a análise diagnóstica oferece um caminho mais curto e eficiente para que os profissionais avaliem os impactos e o alcance das campanhas de marketing após sua realização.

Além desses conhecimentos, o estudante ou profissional que tem interesse em ingressar na área de análise de dados e as áreas correlatas, como BI, aprendizado de máquina etc., tem que possuir um bom conhecimento em estatística. A seguir, serão apresentados os principais conceitos de estatística e alguns dos métodos mais utilizados na hora de realizar análise de um banco de dados.

Estatística

Estatística é a ciência que faz a coleta, organização e interpretação de dados e, a partir deles, permite conhecer quais são os mais influentes antes de tomar decisões importantes. Na estatística descritiva, os dados se dividem em variáveis qualitativas (categóricos) e variáveis quantitativas (numéricos):

  • Qualitativos (categóricos): variável que descreve uma categoria, qualidade dos dados, não assumem valores numéricos, pois relaciona situações como cor da pele, nomes entre outros. Esse tipo de variável ainda se divide em:
    o Ordinais: essas variáveis obedecem a uma relação/ordenação, podem ser medidos, mesmo não sendo numéricas. Por exemplo, escolaridade, classe social, avaliações (ruim, regular e bom) entre outros;
    o Nominais: essas variáveis não estão relacionadas a uma relação/ordenação. Por exemplo, cores, nome de cidades, profissão etc.;
  • Quantitativos (numéricos): são variáveis numéricas, elas podem passar por cálculos numéricos como soma, multiplicação, média entre outros. Essas variáveis se dividem em:
    o Discretas: valores baseados em observações, normalmente representados por números inteiros e situações limitadas. Por exemplo, quantidade de filhos, quantidade de revistas vendidas, quantidade de acesso ao determinado site entre outros.
    o Contínuas: essas variáveis são valores baseados em observações com intervalo que são representados por números decimais. Por exemplo, altura, peso, velocidade etc.

Outros conceitos importantes a se saber na área de estatística são população e amostra. A população é o conjunto inteiro dos dados, seja ele em bancos de dados, arquivos entre outros. A amostra é uma parte da população, ou seja, divide-se a população para se ter apenas alguns dados para atender a algum objetivo, manipulando-se apenas essa parte dos dados. Exemplo: considerando que uma base de dados com todos os funcionários de uma determinada empresa é uma população, ao se desejar ter apenas dados dos funcionários com idade entre 30 e 40 anos, tem-se uma amostra dela.

Após conhecer esses conceitos, apresentaremos agora alguns dos principais cálculos utilizados para descrever os dados:

Medidas de tendência central: utilizado quando se deseja resumir os dados de uma distribuição utilizando apenas números, assim, recorre-se a medidas de tendência central:

  • Média: valor que aponta para onde mais se concentram os dados de uma distribuição. A média é calculada pela soma de todos seus elementos divido pela quantidade de elementos no conjunto de dados, conforme a equação a seguir:

     x ̅=  ( x1 + x2 + ⋯ + xn) / n

    Onde x ̅é o valor da média, x1, x2, xn são os valores a se somar e n quantidade de elementos no conjunto de dados. Exemplo de média: ao se ter em um conjunto de dados os seguintes valores: 4, 5, 6, 2, 9, 1. Para saber a média desse conjunto de dados aplica-se a equação 1.

    expressao
    então, a média desse conjunto de dados é 4.5.
  • Moda: é o valor que ocorre com mais frequência em um conjunto de dados, ou seja, o valor mais comum. Em um conjunto de dados no qual se tem os valores: {2, 3, 5, 5, 5, 8}, a moda é igual a 5, que possui três repetições;
  • Mediana: é o valor numérico que separa a metade superior de um conjunto de dados, seja ela a população ou amostra. É importante estar atento ao fato de que para identificar o valor da mediana, os valores devem estar ordenados. Por exemplo, em um conjunto de dados com valores {13, 5, 3, 8, 11}, tem-se de ordenar esse conjunto de dados, então ficando {3, 5, 8, 11, 13} e em seguida identificar a mediana, que neste caso é 8. Um detalhe importante a ser notado, quando a quantidade de elementos do conjunto de dados for par, neste caso não existe um valor médio único, então a mediana é a média dos dois valores do meio. Por exemplo, em um conjunto de dados com os valores {3, 4, 8,11}, os valores do meio são 5 e 8, então a mediana é definida com (4+8) / 2 = 6.

Outro recurso estatístico muito utilizado é a tabela de frequência. Essa tabela é utilizada para resumir o conjunto de dados de forma simples para entendimento. Essa tabela organiza e resume as categorias de valores juntamente com a contagem (ou frequência) dos números de valores que se enquadram em cada categoria ou classe. Por exemplo, podemos ter uma tabela com a quantidade de funcionários dividido por nível de escolaridade, conforme a Tabela 1.

Nível escolaridade Frequência (quantidade)
Nível fundamental 7
Nível médio 10
Nível superior 8
Pós-graduação 5

Tabela 1. Exemplo de tabela de frequência.

Estes são alguns dos conceitos necessários para se trabalhar com análise de dados. Por ser uma área relativamente nova e que está em constante crescimento, com frequência são descobertos novos algoritmos, novas técnicas, novas ferramentas que surgem para acrescentar mais agilidade e facilidade ao se trabalhar com ela. Também é importante citar que há uma grande quantidade de conceitos, ferramentas, métodos estatísticos e probabilidade, que são necessárias serem estudadas. Em seguida será apresentado um exemplo prático do que foi discutido até o momento.

Analisando dados com R Studio

Nesse tutorial serão realizadas todas as etapas necessárias para realizar análise de dados, ou seja, coleta/seleção dos dados, organização, transformações, aplicação dos métodos estatísticos, análise e apresentação através de gráficos. Para realizar esse processo será utilizada a ferramenta open source RStudio, uma ferramenta que está sendo muito utilizada por analistas de BI, cientista de dados entre outros profissionais.

O software RStudio utiliza a linguagem R, uma linguagem de programação para geração de gráficos e cálculos estatísticos. O RStudio foi desenvolvido por JJ Allaire. O software está disponível em duas edições: RStudio Desktop, executado localmente na máquina como um aplicativo desktop e RStudio Server, que permite acessá-lo remotamente via um navegador web. O RStudio está disponível para diferentes SOs (sistemas operacionais), como Microsoft Windows, Mac OS X e GNU/Linux. O RStudio é desenvolvido na linguagem de programação C++.

Antes de instalar o aplicativo RStudio, é necessário instalar o R. Para isso, é necessário acessar o site oficial do R, cran.r-project (ver seção Links). Esse site possui a documentação da linguagem de programação R, das bibliotecas do R, links dos repositórios entre outros itens importantes para os usuários. Para fazer o download, basta acessar o site r-project, ir em download R for Windows, em seguida, em base e, por fim, em Download R “versão” for Windows, conforme demonstra a Figura 1. Na elaboração deste artigo, a versão mais atual era a 3.3.2. A instalação do R é bem intuitiva, proceda com a instalação padrão.

Página de download do R para Windows
Figura 1. Página de download do R para Windows

Após finalizar o download e a instalação do R, será realizado o download e instalação do RStudio. Para realizar isso, basta acessar o site oficial e clicar em RStudio “versão” – Windows vista/7/8/10, conforme a Figura 2. Na elaboração deste artigo, a versão mais atual do programa era a 1.0.44.

Página oficial para download do RStudio
Figura 2. Página oficial para download do RStudio

Na tela inicial do RStudio, conforme mostra a Figura 3, temos no lado direito a aba console, onde são apresentadas as informações da versão do R sendo utilizada, informações sobre licença e alguns comandos de auxilio como help(), q() entre outros. É nesse espaço que iremos executar nossos comandos. Ainda na Figura 3, na parte superior à direita, tem-se uma aba environment, que apresenta todos os objetos, variáveis e funções criadas e uma outra aba history, que armazena todos os comandos executados pelo usuário. Por fim, na parte inferior direita da figura, tem-se várias abas: file (mostra todos os arquivos do diretório), plots (aba para apresentar os gráficos gerados), packages (lista de pacotes disponíveis para baixar), help (aba para apresentar documentação de alguma função, quando se utilizar o comando de help) e viewer (aba para visualização de determinados gráficos).

Tela inicial do software RStudio
Figura 3. Tela inicial do software RStudio

Como citado anteriormente, na aba console é possível executar comandos, por exemplo, somar dois números. Para executar o comando é necessário apenas digitar e teclar enter. Logo abaixo do comando será apresentado o resultado do código executado, conforme mostra a Figura 4.

Resultado após executar comando na aba console
Figura 4. Resultado após executar comando na aba console

Há outra opção de se executar comandos no RStudio. Na aba console é possível executar um comando por vez, ou seja, o usuário deve digitar cada comando que deseja executar. A outra opção é criar um script, assim, é possível inserir diversos comandos e posteriormente executar todos de uma vez. Para iniciar um script é necessário ir na opção file, em seguida em R Script. Após executar esses passos, será aberta uma aba em branco, ela será o espaço para inserir os comandos a serem executados.

Antes de se iniciar a criação de um script, salve-o em um diretório de preferência. Após salvar o script, insira o mesmo comando que foi utilizado na Figura 4, para somar dois números. Para executar tem-se a opção de clicar em Run. Para executar o script, devemos estar atentos a algumas observações:

  • O cursor deve estar na linha que desejamos executar;
  • Para executar mais de uma linha, devemos selecionar todas elas, e o resultado é impresso na aba console, conforme mostra a Figura 5.
Execução de várias linhas ao mesmo tempo.
Figura 5. Execução de várias linhas ao mesmo tempo.

Em seguida será realizada uma análise de dados utilizando o RStudio, realizando as etapas de coleta, organização e exploração dos dados. Os dados utilizados neste artigo estão disponíveis no site Kaggle (BOX 1). O conjunto de dados trata sobre os personagens do desenho Pokémon, possuindo os nomes, tipo, valores de poder de ataque e defesa, se é um Pokémon lendário entre outras informações (ver seção Links).

BOX 1. Site Kaggle
O site Kaggle é um dos mais conhecidos no mundo para competições de modelagem/análise preditiva. Funciona da seguinte maneira: empresas postam problemas que gostariam de resolver para seus negócios e, diversos usuários, incluindo de estudantes a analistas sênior, tentam solucionar esses problemas. Essas empresas fornecem prêmios para a melhor solução, sendo esses prêmios de diferentes valores, já houve casos com premiação de US$ 30.000,00 à US$ 100.000,00. Além disso, o site também possui diferentes bases de dados abertas para download, resoluções de problemas em diferentes linguagens de programação, dentre elas, R e Python. Além disso, os usuários postam suas soluções para diferentes análises.

Existem diferentes maneiras para realizar a importação dos dados, pode ser diretamente de um arquivo na máquina, ou de um banco de dados, ou diretamente do site, etc. Neste artigo será demonstrada a extração dos dados diretamente de um arquivo local.

No código a seguir é demonstrada a exportação dos dados de um arquivo CSV:

## Ler dados e inserindo-os em um obj
  pokemon <- read.csv("caminhoPasta/Pokemon.csv",header = T, sep = ",")

Nessa listagem está sendo utilizada a função read.csv() e os argumentos passados são: o caminho onde está armazenado o arquivo, se o arquivo possui cabeçalho (TRUE/FALSE) e o tipo de separador do arquivo, neste caso a vírgula (“ , ”).

Ao executar esse comando, os dados serão armazenados em um objeto chamado pokemon. Mesmo o objeto não existindo, o próprio R cria o objeto ao executar algum comando. Em seguida será executada a função head(). Essa função apresenta as primeiras linhas do objeto, assim poderemos visualizar o nome das colunas e seus dados, conforme a Figura 6.

Resultado após executar comando head
Figura 6. Resultado após executar comando head

Para visualizar todos os registros do objeto, temos duas maneiras: executando a função View (nomeObjeto), ou clicando em cima do objeto na aba Environment. Após executar qualquer um dos dois procedimentos, será aberta uma nova aba com todos os registros do objeto, como é demonstrado na Figura 7.

Visualização completa do objeto pokemon
Figura 7. Visualização completa do objeto pokemon

Criar uma tabela de frequência é simples e rápido utilizando o RStudio. Só é necessário selecionar a coluna do objeto que se deseja quantificar e executar a função table(), como é mostrado no código a seguir:

  ## criar tabela de frequência
  table(pokemon$Type.1)

Nesse código, foi selecionada a coluna Type.1 para criar a tabela de frequência, ao executar o código, será criada uma tabela na aba console, conforme mostra a Figura 8. Nesse caso, como foram gerados poucos registros para tabela de frequência, dezoito no total, o resultado pode ser de fácil leitura e entendimento. Contudo, podem haver casos nos quais podem ser gerados 100, 200, 500 e muito mais registros, então a leitura e entendimento dessa tabela diretamente na aba console pode ser difícil de ser feita e, caso o desenvolvedor necessite utilizar algum desses valores da tabela, ele terá que anotar os valores e precisará reexecutar a função toda vez que precisar de algum valor dessa tabela. Assim, esse não é o método mais dinâmico e prático.

Resultado após executar o comando table()
Figura 8. Resultado após executar o comando table()

Também é possível salvar essa tabela em um objeto, conforme é demonstrado na Listagem 1. Nela é utilizada uma função chamada as.data.frame, que converte o resultado em forma de tabela. Ao abrir esse objeto, teremos colunas com o nome padrão criadas pela própria função. Para renomeá-las basta executar o código.

Listagem 1. Código para gerar tabela de frequência, salvando em um objeto e renomear as colunas

  ## salvar tabela de frequencia em um objeto
  tabFreq <- as.data.frame(table(pokemon$Type.1))
   
  ## renomear nome de colunas da tabela
  names(tabFreq) <- c("tipoPokemon","frequencia")
  

Ainda na Listagem 1, temos a função names(), que indica que desejamos selecionar os nomes das colunas e o “c(“...”)” permitirá definir os novos nomes das colunas. É importante citar que ao alterar o nome das colunas do objeto, a quantidade dos valores em c(“nome”,”nome”...) deve ser a mesma da quantidade de colunas do objeto, se houver um número diferente acontecerá um erro.

No RStudio existem algumas funções que já vem instaladas, como as que foram utilizadas até aqui, mas existem outras em que há necessidade de baixar, instalar e habilitar o pacote para poder utilizar as funções, por exemplo, o pacote ggplot2 para construir gráficos. A função install.packages() realiza o download e a instalação do pacote. A função library() habilita o pacote para utilizar as funções dele.

A partir de agora iremos criar alguns gráficos da base de dados que está sendo utilizada. O primeiro gráfico a ser gerado será um gráfico de barra a partir do objeto da tabela de frequência que foi criado anteriormente:

  ## criando gráfico de barra
  ggplot() + geom_bar(data = tabFreq, aes(x = tipoPokemon, y = frequencia), stat = "identity")

A função ggplot() indica que desejamos criar gráfico utilizando função do pacote ggplot2, instalado anteriormente. A função geom_bar() é o tipo de gráfico que será gerado e possui alguns parâmetros: data, qual objeto será utilizado, aes(x = ..., y =...) – essa função faz um mapeamento dos dados para o eixo X e Y - , stat indica a posição da barra no gráfico. Existem diversos gráficos com geom, como geom_abline(), geom_area() e geom_boxplot(). O sinal de mais (+) indica concatenação da função ggplot() e geom_bar(). Na Figura 9 é possível observar o gráfico gerado após executar o comando informado.

Gráfico de barras
Figura 9. Gráfico de barras

O gráfico apresentado não está muito legível, isso acontece porque são muitos atributos no eixo X e a dimensão da aba plot é pequena para gerar esse gráfico. Para solucionar esse problema, o RStudio possibilita aplicar um zoom no gráfico, através do botão ZOOM na parte superior da tela. Nela é possível observar uma grande variação da quantidade por tipo de Pokémon. Ao analisar esse gráfico, é possível notar uma grande quantidade de Pokémon do tipo water, seguido por Pokémon do tipo normal. E o tipo de Pokémon que tem menos quantidade é do tipo fying.

O software também permite salvar o gráfico em uma imagem ou PDF, para isso basta clicar no botão export, e será aberta uma janela com as opções para salvar o gráfico. Na Figura 10, as opções disponíveis ao exportar o gráfico para imagem são: image format (formato que será salva a imagem), width/height (dimensões de largura e altura da imagem), directory (pasta onde a imagem será salva), file name (nome da imagem). Após configurar todas essas opções, basta clicar em save.

Janela de configuração para exportar gráfico
Figura 10. Janela de configuração para exportar gráfico

Em seguida serão gerados gráficos utilizando os conceitos já abordados até o momento sobre médias. Para gerar a média de um campo, pode-se utilizar a função mean(): conforme o código a seguir:

  ## media
  mean(pokemon$Attack)

Neste exemplo, está sendo gerada a média do campo Attack, mas o que será feito em seguida é um pouco diferente. O objetivo agora é gerar a média do campo Attack por tipo do Pokémon, coluna Type.1. Antes de gerar essa média, é necessário instalar um pacote. A função ddply() não vem instalada por padrão, então é necessário baixar, instalar e ativar o pacote plyr, conforme a Listagem 2.

Listagem 2. Código para baixar, instalar e ativar pacote

  ## instalar pacotes a serem utilizados
  install.packages("plyr")
  ## ativar pacote que ser utilizado
  library(plyr)

Após realizar o procedimento de instalação e habilitar o pacote que será utilizado, todas as funções que estão nesse pacote estarão disponíveis. Após isso, somente é necessário digitar o nome da função e inserir seus parâmetros, então será gerada a média por tipo do Pokémon:

## media de ataque por tipo de pokemon
  mediaAtaque <- ddply(pokemon, ~Type.1, summarise, mean = mean(Attack))

A função ddply() aplica uma determinada função, nesse caso será a média, para uma coluna da tabela, nesse caso a Type.1 do Pokémon. Essa função recebe como parâmetros o objeto com os registros e o campo/colunas do objeto que se deseja. Antes do nome da coluna tem-se o sinal (~), utilizado para indicar para a função que é uma coluna que pertence ao objeto, nesse caso pokemon. Tem-se ainda os parâmetros: o tipo de agrupamento nesse caso summarise e a função a ser aplicada, a média da coluna Attack. Então, será calculada a média de ataque para cada tipo de Pokémon do objeto que está sendo utilizado. Ao selecionar a opção view no objeto, é possível observar que há uma coluna Type.1 e outra coluna mean, ou seja, a média de ataque para cada tipo de Pokémon, como é demonstrado na Figura 11.

Visualização
do objeto mediaAtaque
Figura 11. Visualização do objeto mediaAtaque

Em seguida será criado um gráfico com a média de ataque para cada tipo de Pokémon. O código a seguir realiza essa tarefa:

  ## grafico para média de ataque por tipo de pokemon 
  ggplot() + geom_bar(data = mediaAtaque, aes(x = Type.1, y = mean), 
  stat = "identity") + ggtitle("Media de ataque por Tipo de pokemon")

Observe que estamos utilizando o parâmetro data e também estamos inserindo o título na parte superior do gráfico utilizando a função ggtitle(“titulo”). O resultado dessa função pode ser observado na Figura 12.

Gráfico
de média de ataque por tipo de Pokémon
Figura 12. Gráfico de média de ataque por tipo de Pokémon

Ao realizar a análise desse gráfico, é possível observar que o valor de média de ataque por tipo de Pokémon é bem semelhante, somente um se destaca dentre todas as médias de ataque, o tipo Dragon.

Recomendamos para esse artigo que o leitor crie nesse momento a média de defesa por tipo de Pokémon. Esse processo é semelhante ao feito anteriormente, média de ataque por tipo de Pokémon. De toda forma, a resolução do desafio encontra-se no final do artigo.

Após criar a média de ataque e defesa por tipo de Pokémon, iremos combinar os dois objetos em um único objeto. A função para realizar esse procedimento é a cbind(obj1, obj2). Essa função combina dois objetos por colunas, ou seja, se um objeto possui duas colunas e outro possui duas colunas também, ao utilizar a função cbind, o objeto final terá quatro colunas. O código a seguir realiza esse procedimento combinando os objetos mediaAtaque e mediaDefesa em um único objeto. A mediaDefesa foi gerada no desafio, ou seja, o nome desse objeto será o que o você escolher, então, ao executar os códigos seguintes, apenas troque o nome mediaDefesa pelo o nome que você utilizou.

  ## Inserindo mediaAtaque e medidaDefesa em um mesmo objeto media        
  <- cbind(mediaAtaque, mediaDefesa[,2])

Esse procedimento não é trivial, dependerá do objetivo de quem está analisando os dados. Como o objetivo nesse momento será fazer algumas comparações de ataque e defesa, isso se fez necessário. Na função cbind(), observa-se uma diferença de sintaxe no objeto mediaDefesa[,2], essa sintaxe significa que se deseja recuperar todas as linhas e somente a segunda coluna do objeto mediaDefesa. Esse procedimento se chama slice, e é muito realizado para analisar dados, aplicar algoritmos de aprendizado de máquina entre outras atividades na área de ciência de dados. Também é possível fazer o slice do objeto pelas linhas, bastando para isso inserir o número da linha que se deseja, então a sintaxe ficaria objeto[2,], indicando que se deseja recuperar a linha dois e todas as colunas do objeto, ou objeto[10,2], indicando que se deseja recuperar a linha dez e a coluna dois do objeto.

Esse procedimento se faz necessário, porque a primeira coluna de ambos os objetos é idêntica, ou seja, não há necessidade de possuir no mesmo objeto duas colunas com os mesmos valores. Após executar o código, o objeto final ficará como é demonstrado na Figura 13.

Visualização
do objeto com média de ataque e defesa
Figura 13. Visualização do objeto com média de ataque e defesa

É possível observar nessa figura que os nomes das colunas não são nada intuitivos, então, é necessário modificar o nome delas para facilitar futuros procedimentos, seja para criar novos objetos, cálculos ou para gerar gráficos. Este é outro procedimento muito utilizado ao realizar análise de grandes quantidades de dados. Para alterar o nome das colunas do objeto, o código a seguir pode ser utilizado:

## Alterando o nome das colunas do objeto 
  names(media) <- c("tipo", "mediaAtaq","mediaDef")

O objetivo agora é gerar um gráfico com as duas médias, ataque e defesa, que estão em um único objeto, chamado media. Mas para isso é necessário alterar este objeto. A alteração consiste em transformar as colunas em linhas. No RStudio, existe um função para fazer esse processo de forma fácil e rápida, a função chamada melt(). Para utilizar essa função é necessário baixar, instalar e habilitar outro pacote, o reshape2, conforme as linhas 2 e 3 da Listagem 3. Ainda nessa listagem, na linha 4, é demonstrado o código para realizar procedimento de transformar as colunas em linhas do objeto que se deseja, neste caso o objeto media.

Listagem 3. Código para instalar e habilitar pacote reshape2 e transformar as colunas em linhas

  1 ##instalando e habilitando pacote 
  2 install.packages("reshape2")
  3 library(reshape2)
  4
  5 ## transformando colunas em linhas
  6 mediaAtqDef <- melt(media, id = c("tipo"))

A função melt() recebe alguns parâmetros: o objeto que se deseja realizar a alteração e o id. Esse campo indica qual coluna desejamos preservar e vai alterar todas as outras, transformando-as em linhas. Em seguida, o resultado será salvo em um novo objeto, o mediaAtqDef. Ao abrir o objeto é possível observar que o objeto possui três colunas: tipo, variable e value. Em seguida será alterado o nome das colunas do novo objeto criado conforme o código a seguir:

  ##Alterando nome colunas do objeto mediaAtqDef
  names(mediaAtqDef) <- c("tipo","ataq_def", "valor")

A Listagem 4 possui o código para gerar um gráfico com ambas médias, ataque e defesa. A função é semelhante à que já utilizamos anteriormente, com uma alteração nos argumentos, o fill que define a cor das barras. Nesse caso serão duas cores, uma para média de ataque e outra para média de defesa. Em nosso exemplo, foi inserido o nome da coluna que se deseja, assim, o próprio R definirá as cores automaticamente. Temos também o argumento position que define a posição das barras, se ficarão uma em cima da outra, conforme a Figura 14 ou uma ao lado da outra, conforme a Figura 15. Na Listagem 4 é demonstrado o código para gerar o gráfico com uma barra em cima da outra e na Listagem 5 temos o código para gerar o gráfico com uma barra ao lado da outra.

Listagem 4. Código para gerar gráfico com barras uma em cima da outra

  ## grafico de barra com media de ataque e defesa por tipo de pokemon. Modelo 
  ## com uma barra em cima da outra
    ggplot(data = mediaAtqDef) + 
    geom_bar(aes(x = tipo, y = valor,fill = ataq_def), stat = "identity") +
    ggtitle("Media de ataque e defesa por Tipo de pokemon")

Listagem 5. Código para gerar gráfico com barras uma ao lado da outra

## grafico de barra com media de ataque e defesa por tipo de pokemon. Modelo 
## com uma barra ao lado da outra
  ggplot(data = mediaAtqDef) + 
  geom_bar(aes(x = tipo, y = valor,fill = ataq_def), 
  stat = "identity",position=position_dodge()) + 
  ggtitle("Media de ataque e defesa por Tipo de pokemon")
Gráfico 1 por média de ataque e defesa por tipo de Pokémon
Figura 14. Gráfico 1 por média de ataque e defesa por tipo de Pokémon

Ao realizar análise do gráfico da Figura 14, é possível notar um pouco de dificuldade para se realizar uma comparação de média de ataque e defesa. Por exemplo, se desejarmos identificar quais tipos de Pokémon possuem a média de ataque e defesa semelhantes, esse gráfico traria dificuldade para a análise. Então, ao menos para realizar esse exemplo, o mais ideal é gerar o gráfico com barras uma ao lado da outra, conforme a Figura 15.

Gráfico 2 por média de ataque e defesa por tipo de Pokémon
Figura 15. Gráfico 2 por média de ataque e defesa por tipo de Pokémon

<Resolução Desafio>

Agora será apresentada a resolução do desafio proposto. A lógica e a função para obter a média de defesa por tipo de Pokémon é a mesma que foi aplicada para gerar a média de ataque por tipo de Pokémon. No código a seguir, é demonstrado o uso da função necessária para gerar a média desejada e essa média será armazenada no objeto mediaDefesa.

## media de defesa por tipo de pokemon
  mediaDefesa <- ddply(pokemon, ~Type.1, summarise, mean = mean(Defense))

Se desejar gerar o gráfico para visualizar o resultado obtido ao executar esse código, o processo também é semelhante ao já aplicado para gerar o gráfico para média de ataque. Na Listagem 6 é demonstrado o código para gerar esse gráfico.

Listagem 6. Código para gerar gráfico de média de defesa por tipo de pokemon.

## grafico para média de defesa por tipo de pokemon
    ggplot(data = mediaDefesa) + 
    geom_bar(aes(x = Type.1, y = mean), stat = "identity") +
    ggtitle("Media de defesa por Tipo de pokemon")

Análise de dados vem crescendo motivada pelo crescente número de dados gerados a todo momento. Neste artigo foi analisado um conjunto de dados pequeno, embora dificilmente fosse possível realizar a mesma análise manualmente. O propósito foi demonstrar, na prática, o que é e como é feito o processo de análise de dados para aplicar em grandes conjuntos de dados, com 500 mil ou até 8 milhões de registros.

Além disso, o artigo também teve o propósito de demonstrar as diferentes operações realizadas no conjunto de dados até chegar à parte de analisar. Existem várias outras opções de procedimentos a realizar, o que irá definir cada cálculo, cada slice, cada transformação no conjunto de dados, será o objetivo estabelecido, ou seja, não é um processo trivial.

Ainda é possível elaborar outros gráficos diferentes com R, gráficos mais dinâmicos e personalizados, mudando cores, formatos, tamanho de texto entre outras configurações. O R ainda possui pacotes que possibilitam desenvolver sistemas web com gráficos.

Links Úteis

  • Como criar o primeiro game com Unity 3D:
    Nesse curso, criaremos um game simples, mas completo, utilizando a plataforma de desenvolvimento de jogos Unity 3D. Para isso, faremos uso de diversos assets disponíveis tanto na Unity Asset Store como no próprio Unity 3D, os chamados "Standard Assets".
  • Curso de SQL:
    A linguagem SQL é amplamente utilizada em diversos tipos de aplicações que utilizem bancos de dados relacionais. Neste curso conheceremos os primeiros comandos da linguagem SQL (Structured Query Language).
  • Curso de Django:
    Neste curso conheceremos o Django, um poderoso framework web escrito em Python que tem chamado muita atenção da comunidade por sua facilidade de implementação, sua organização de código e suas funcionalidades.

Saiba mais sobre Big Data ;)

  • Modelagem de Dados:
    Essa guia terá como objetivo apresentar a modelagem de dados, desde seus primeiros passos com banco pequenos até a modelagem para bancos Big Data.
  • Big Data com Java:
    Neste Guia de Consulta você encontrará todo o conteúdo que precisa para entender a que se refere o termo Big Data, bem como sua importância, da perspectiva de um programador Java.