Prévia do material em texto
INTRODUÇÃO A PROGRAMAÇÃO EMINTRODUÇÃO A PROGRAMAÇÃO EM BIG DATABIG DATA A LINGUAGEM RA LINGUAGEM R Autor: Me. Ricardo Alexandre G. C. Martins Revisor : Fe l i ipe Ov iedo Fros i IN IC IAR introdução Introdução R é uma linguagem de programação comumente usada em computação estatística, análise de dados e pesquisa cientí�ca. Seu nome é devido às iniciais de seus criadores: Ross Ihaka e Robert Gentleman, ambos professores do Departamento de Estatística da Universidade de Auckland (Nova Zelândia). É uma das linguagens mais populares, usada por estatísticos, analistas de dados, pesquisadores e pro�ssionais de marketing para recuperar, limpar, analisar, visualizar e apresentar dados. Por ser uma linguagem de código aberto, o R possui uma grande comunidade que lança diversos pacotes, expandindo as funcionalidades da linguagem, sendo que muitos desses pacotes são próprios para análise e modelagem de dados, simpli�cando o trabalho de um cientista de dados ao oferecer ferramentas para fácil manipulação, visualização e modelagem de dados. Em sua essência, as operações R são vetorizadas, permitindo que vetores e matrizes possam ser facilmente manipulados, e assim, amplamente utilizada por pro�ssionais de estatística e Ciência de Dados. Programar no R - como em qualquer linguagem de programação - requer o conhecimento de sua sintaxe e regras para que o sistema entenda o comando a ser executado. Desse modo, inicialmente é necessário conhecer algumas premissas que regem a forma como a linguagem deve ser executada. Tipos de Dados Básicos Da mesma forma que soaria estranho uma pessoa ter como nome “12345”, no R cada tipo de informação deve ser armazenada na memória do computador em uma estrutura diferente, que comporte suas características. Para essa estrutura, que pode variar seu conteúdo conforme a execução do programa damos o nome de variável . Dentro dos tipos de variáveis, chamados de tipos básicos àqueles que contém a representação mais simples da informação à qual se deseja armazenar. Segundo (WICKMAN, Hadley), o R possui 6 tipos básicos de dados, cada um permitindo que um tipo de informação diferente seja armazenada, conforme o Quadro 2.1. Iniciando com RIniciando com R Quadro 2.1 - Tipos de dados básicos em R Fonte: Elaborado pelo autor (2019). Operadores Uma vez conhecidos os tipos de dados, o próximo passo é conhecer as operações que podem ser realizadas neles. Sendo o R uma linguagem desenvolvida para estatísticos, o suporte à operações matemáticas é bastante presente, conforme pode ser visto no Quadro 2.2. Tipo de Dado Valor Exemplo em R Integer Números inteiros 10L (deve ter o L no �nal) Logical Valores lógicos (verdadeiro / falso) TRUE Numeric Números reais ou decimais 3.14 Complex Números complexos 3 + 4i Character Cadeia de caracteres com 1 ou mais caracter batata Raw Conjunto de caracteres, porém convertidos para o código hexadecimal da tabela Unicode c3a7 correspondente a “ç” Quadro 2.2 - Operações em tipos de dados básicos em R Fonte: Elaborado pelo autor (2019) A execução dos comandos no R é bastante simples, bastando digitá-los no painel de console. Após a execução do comando, o R retorna o resultado do cálculo realizado, conforme pode ser visto na Figura 2.1. Operador Comando Exemplo em R Atribuição de valores <- ou = a <- 10 ou a = 10 Soma + a + 5 Subtração - a - 5 Multiplicação * a * 5 Divisão / a / 5 Radiciação sqrt sqrt(a) Potenciação ^ ou ** a^5 ou a**5 Sequência : 1:10 Funções Na programação, você utiliza funções para incorporar conjuntos de instruções que deseja usar repetidamente ou que, devido à sua complexidade, são mais independentes em um subprograma e devem ser chamados quando necessário. Uma função é um pedaço de código escrito para executar uma tarefa especí�ca; podendo ou não pode aceitar argumentos ou parâmetros, assim como pode ou não retornar um ou mais valores. No R, conforme o tipo de dado da variável, existem funções especí�cas para manipular aquele valor. As funções podem se dividir entre funções numéricas (quando tratam um valor que seja um número) e funções de texto (quando tratam um valor que seja um ou mais caracteres). O Quadro 2.3 traz como exemplo algumas funções bastante comuns relacionadas com dados numéricos, assim como o Quadro 4 traz apresenta como exemplo algumas funções comuns de texto. Figura 2.1 - Execução de operações no R Fonte: Elaborada pelo autor (2019). Funções numéricas Função O que ela faz abs(x) Retorna o módulo do número sqrt(x) Retorna a raiz quadrada do número ceiling(x) Retorna o teto do número �oor(x) Retorna o piso do número trunc(x) Trunca o número round(x, digits=n) Arredonda o número até “n” casas decimais cos(x), sin(x), tan(x) Retorna o cosseno, seno e tangente do número log(x) Retorna o logaritmo natural do número log10(x) Retorna o logaritmo na base 10 do número exp(x) Retorna o valor exponencial do número max(x) Retorna o maior número de um vetor min(x) Retorna o menor número de um Quadro 2.3 - Funções numéricas Fonte: Elaborado pelo autor (2019). vetor mean(x) Retorna a média de um vetor sd(x) Retorna o desvio padrão de um vetor Funções de texto Função O que ela faz substr(x, start=n1, stop=n2) Retorna o texto contido em x, da posição n1 até n2 grep( padrão , x , ignore.case =FALSE, �xed =FALSE) Procura o padrão em x e retorna os índices correspondentes. Se �xed = FALSE, o padrão é uma expressão regular. Se �xed = TRUE, o padrão é uma sequência de caracteres sub( padrão , substituição , x, ignore.case =FALSE, �xed =FALSE) Procura o padrão em x e o substitui pelo texto de substituição . Se �xed = FALSE, o padrão é uma expressão regular. Se �xed = TRUE, o padrão é uma sequência de texto gsub( padrão , substituição , x, ignore.case =FALSE, �xed =FALSE) Substitui todas as correspondências de uma sequência, se o parâmetro for um vetor de sequência, retorna um vetor de sequência com o mesmo comprimento e com os mesmos atributos (após possível substituição com o caractere). strsplit(x, split ) Divide os elementos de x em um vetor pelo texto contido em a posição split paste(..., sep="") Concatena texto e adiciona separador toupper(x) Transforma para maiúsculo Quadro 2.4 - Funções de texto Fonte: Elaborado pelo autor (2019). A execução das funções é semelhante às operações matemáticas. Um exemplo de como chamar as funções numéricas é apresentado na Figura 2.2, enquanto um exemplo de chamada de funções de texto é apresentado na Figura 2.3. tolower(x) Transforma para minúsculo nchar(x) Retorna a quantidade de caracteres em x Figura 2.2 - Chamada de funções numéricas Fonte: Elaborada pelo autor (2019) Figura 2.3 - Chamada de funções de texto Fonte: Elaborada pelo autor (2019) praticar Vamos Praticar Uma das maneiras de trabalhar com dados é armazená-los em memória em uma variável, e, a partir desse valor armazenado, realizar as operações necessárias. Para que possamos realizar operações matemáticas que resultem em valores percentuais, é necessário um tipo especí�co de dado para armazená-los. Qual é o tipo de dado que deve ser utilizado para armazenar essa informação ? a) Logical b) Integer c) Character d) Numeric e) Factor Quando você programa em alguma linguagem de programação, você precisa usar variáveis para armazenar dados diferentes. As variáveis são, no entanto, áreas em um local de memória para armazenar valores. As estruturas de dados são a maneira de organizar os dados para que possam ser usados com e�ciência em um computador. Ao contrário de diferentes linguagens de programação como C e Java, R não possui variáveis declaradas como algum tipo de dado. As variáveis são nomeadas com objetos R e a forma de conhecimento do objeto R se torna o tipo de dados da variável. Existem muitos tipos de objetos R. Os mais usados popularmente são: Vetores ○ Vetores atômicos ○ Listas Matrizes Arrays DataFrames Estruturas de DadosEstruturas deDados BásicosBásicos Eles podem ser divididos quanto à forma dos dados que armazenam: Quadro 2.5 - Estrutura de dados Fonte: Elaborado pelo autor (2019) Vetores A estrutura de dados básica em R é o vetor. Os vetores têm dois tipos: vetores atômicos e listas. Eles têm três propriedades comuns: typeof() - tipo de dados length() - quantos elementos ele contém attributes() - metadados arbitrários adicionais. Eles diferem nos tipos de seus elementos: todos os elementos de um vetor atômico devem ser do mesmo tipo, enquanto os elementos de uma lista podem ter tipos diferentes. Vetores Atômicos Um vetor atômico é uma estrutura de dado que representa um conjunto sequencial de um mesmo tipo de dado, ou seja, para cada tipo de dado, existe um tipo de vetor atômico. No caso de se tentar combinar tipos diferentes de dados no mesmo vetor atômico (como valores lógicos e numéricos, por exemplo), o R automaticamente irá encontrar o tipo de dado mais apropriado Dimensões Homogêneos Heterogêneos 1 d Vetores atômicos Listas 2 d Matrizes DataFrames n d Arrays para armazenar todos os valores e criará o vetor atômico com esse tipo de dado. Os vetores atômicos geralmente são criados com o comando c(), que é abreviação de combine . Listas As listas são diferentes dos vetores atômicos porque seus elementos podem ser de qualquer tipo, incluindo listas (nesse caso, chamado de vetores recursivos ). Você pode construir listas usando o comando list() em vez de c(): Figura 2.5: Listas Fonte: Elaborado pelo autor (2019) Você pode transformar uma lista em um vetor atômico com o comando unlist() . Porém, se os elementos da lista tiverem tipos diferentes, o unlist() usará as mesmas regras de conversão do comando c(). Matrizes Figura 2.4: Vetores atômicos Fonte: Elaborado pelo autor (2019). Matrizes são as estruturas nas quais os elementos são organizados em um layout retangular bidimensional, contendo elementos dos mesmos tipos atômicos. Embora possamos criar uma matriz contendo apenas caracteres ou apenas valores lógicos, elas não são de muita utilidade, sendo mais comum o uso de matrizes contendo elementos numéricos para serem utilizadas em cálculos matemáticos. A sintaxe básica para criar uma matriz em R é: matrix(dados, nrow, ncol, byrow, dimnames) Sendo que: dados é o vetor de entrada que se torna o elemento de dados da matriz nrow é o número de linhas a serem criadas ncol é o número de colunas a serem criadas byrow é uma indicação lógica. Se TRUE, os elementos do vetor de entrada são organizados por linha dimnames são os nomes atribuídos às linhas e colunas Figura 2.6: Matrizes Fonte: Elaborado pelo autor (2019) Arrays Arrays são as estruturas de dados R que podem armazenar dados em mais de duas dimensões. Por exemplo - Se criarmos um array de dimensão (2, 3, 4), ele criará 4 matrizes retangulares, cada uma com 2 linhas e 3 colunas. Arrays podem armazenar apenas o mesmo tipo de dados. Um array é criado usando a função array() , utilizando como entrada os vetores e seus valores no parâmetro dim . O exemplo a seguir cria um array de duas matrizes 3x3, cada uma com 3 linhas e 3 colunas. Data Frames Um data frame é o tipo de dado mais comumente utilizado no R, principalmente devido à sua facilidade para a análise de dados. De forma resumida, o data frame é uma tabela ou uma estrutura bidimensional do tipo matriz em que cada coluna contém valores de uma variável e cada linha contém um conjunto de valores de cada coluna. Diferente da matriz, onde é permitido somente um tipo de dado, o data frame aceita diferentes tipos de dados (numérico, caractere, etc). São consideradas características de um data frame: Os nomes das colunas não devem estar vazios Os nomes das linhas devem ser exclusivos Os dados armazenados em um data frame podem ser do tipo numérico, fator ou caractere Cada coluna deve conter o mesmo número de itens de dados Figura 2.7 - Arrays Fonte: Elaborado pelo autor (2019) Um data frame é criado através do comando data.frame() , que recebe vetores nomeados como entrada: Figura 2.8: Data Frames Fonte: Elaborado pelo autor (2019) Por padrão, ao criar um data frame com valores strings. o R automaticamente converte esses valores para o tipo factor (categoria). Para evitar esse comportamento, ao carregar o data frame deve ser indicado que as strings não devem ser tratadas como factor (categoria), através do comando stringAsFactors = FALSE . O acesso a informações do data frame é feito através da utilização do caractere $ para identi�car o dado pretendido. Figura 2.9: Data Frames Fonte: Elaborado pelo autor (2019). Figura 2.10: Acesso a dados das colunas de um Data Frame Fonte: Elaborado pelo autor (2019). praticar Vamos Praticar Um estudante de estatística precisa realizar a análise de dados referente ao aproveitamento dos alunos do ensino médio na disciplina de matemática durante o ano letivo. Para isso, ele obteve dados de várias escolas, onde identi�cam as seguintes informações: id do aluno, idade, série, faltas no 1º bimestre, média no 1º bimestre, faltas no 2º bimestre, média no 2º bimestre, faltas no 3º bimestre, média no 3º bimestre, faltas no 4º bimestre e média no 4º bimestre. Em qual tipo de estrutura o estudante deve carregar esses dados, de modo a poder trabalhar na análise dos dados ? a) Lista b) Matriz c) Data frame d) Array e) Vetor atômico Vetores são estruturas de dados de 1 dimensão, com características de armazenamento de um único tipo de dado em cada posição dentro da estrutura. Acesso a Elementos Os elementos de um vetor são acessados usando a indexação através da indicação da posição dentro de colchetes “[]”. Cada elemento é armazenado em uma posição (iniciada em 1) dentro da estrutura, e para acessá-lo, basta informar essa posição. VetoresVetores Figura 2.11: Acesso a dados do vetor Fonte: Elaborado pelo autor (2019). É possível realizar o acesso através de condições lógicas. Nesse caso, é necessário informar no local do índice a condição a ser satisfeita. Figura 2.12: Acesso a dados de forma condicional Fonte: Elaborado pelo autor (2019). Além disso, é possível acessar vários dados do vetor passando um vetor de posições. Caso a posição seja marcada como negativa, ela é removida da visualização. Figura 2.13: Acesso a dados de forma posicional Fonte: Elaborado pelo autor (2019). Operações Aritméticas O R suporta a realização de operações aritméticas entre vetores. As operações aritméticas como adição, subtração, multiplicação e divisão são simples de serem realizadas, bastando a indicação dos valores e a operação desejada. Um ponto a ser ressaltado é que, quando os vetores não possuem tamanhos iguais, o vetor de menor tamanho tem seus elementos replicados até atingir o tamanho do vetor maior. Somente depois disso é que a operação aritmética é realizada. Figura 2.15: Operações aritméticas entre vetores de tamanhos diferentes Fonte: Elaborado pelo autor (2019). Ordenação O R suporta a realização de ordenação nos vetores. Quando realizada em vetores do tipo character, a ordenação se dará de maneira alfabética. Figura 2.14: Operações aritméticas entre vetores do mesmo tamanho Fonte: Elaborado pelo autor (2019). Concatenação A concatenação de valores em vetores é um processo similar à criação de um vetor. Na concatenação de vetores, o R considera cada elemento dos vetores a serem concatenados como um próprio, e no �nal oO R importa todos os elementos para uma estrutura única. praticar Vamos Praticar Figura 2.16: Ordenação de vetores Fonte: Elaborado pelo autor (2019) Figura 2.17: Concatenação de vetores Fonte: Elaborado pelo autor (2019) Um estudante de estatística precisa realizar a análise de dados referente ao aproveitamento dos alunos do ensino médio na disciplina de matemática durante o ano letivo. Para isso, ele necessita calcular a média, o desvio padrão, o valor máximo e o valor mínimo do conjunto de notas. Dadoque a variável que contém essas informações chama-se “notas”, quais seriam os comandos necessários para se obter os valores ? a) notas.mean() notas.sd() notas.max() notas.min() b) notas.media() notas.desvpad() notas.maximo() notas.minimo() c) mean(notas) sd(notas) max(notas) min(notas) d) media(notas) desvpad(notas) maximo(notas) minimo(notas) e) mean(x) sd(x) max(x) min(x) M atrizes são estruturas de dados de 2 dimensões. Sua manipulação difere dos vetores no sentido de que é necessário informar a linha e a coluna referente a posição do elemento na estrutura. Acesso a Elementos De maneira semelhante aos vetores, os elementos de uma matriz também são acessados usando a indexação através da indicação da posição dentro de colchetes “[]”. Ainda de maneira semelhante aos vetores, é possível realizar buscas na matriz através de expressões condicionais lógicas. MatrizesMatrizes Figura 2.18: Acesso a elementos em matrizes Fonte: Elaborado pelo autor (2019) Operações Aritméticas De maneira semelhantes aos vetores, o também R suporta a realização de operações aritméticas entre matrizes. As operações aritméticas como adição, subtração, multiplicação e divisão são simples de serem realizadas, bastando a indicação dos valores e a operação desejada. Figura 2.19: Criação de matrizes Fonte: Elaborado pelo autor (2019) Concatenação A concatenação de valores em matrizes possui 2 maneiras distintas de ser realizada: através de linhas e através de colunas. Na concatenação de matrizes, o R espera que o elemento a ser concatenado seja um vetor ou uma matriz, e o resultado �nal será uma matriz com todos os elementos. Figura 2.20: Operações aritméticas em matrizes Fonte: Elaborado pelo autor (2019) Figura 2.21: Concatenação de matrizes com vetores Fonte: Elaborado pelo autor (2019) praticar Vamos Praticar Arrays e matrizes são estruturas de dados existentes no R que permitem o armazenamento de diferentes informações. Entretanto, em casos especí�cos, a mesma informação pode ser armazenada tanto em um array quanto em uma matriz. Em qual situação isso seria possível ? a) É necessário quando o número de linhas do array é igual ao número de linhas de colunas da matriz b) É necessário que o número de dimensões do array seja do mesmo número de linhas da matriz c) É necessário que o número de dimensões do array seja maior que o número de colunas da matriz d) É necessário que o número de dimensões do array seja maior que o número de linhas da matriz e) É necessário que o número de dimensões do array seja igual a 1 Figura 2.22: Concatenação de matrizes com matrizes Fonte: Elaborado pelo autor (2019) indicações Material Complementar FILME Uma Odisséia no Espaço Ano: 1968 Comentário: 2001: Uma odisséia no espaço é um �lme de �cção cientí�ca que segue uma viagem a Júpiter com o computador HAL após a descoberta de um monólito alienígena sem característica que afeta a evolução humana, tratando de temas de existencialismo, evolução humana, tecnologia, inteligência arti�cial e a possibilidade de vida extraterrestre. TRA ILER LIVRO Conhecendo o R: Uma visão mais que estatística Editora : UFV Autor : Mello, M. P., & Peternelli, L. A. ISBN : 978-8572694957 Comentário : “Conhecendo o R – Uma visão mais que Estatística”, apresenta uma rica fonte de informação a respeito das funcionalidades e potencialidades da linguagem R, sendo indicado tanto para os que já dominam o uso do R e querem aperfeiçoar seus conhecimentos, como para quem está começando nos estudos da linguagem. conclusão Conclusão A linguagem R é uma poderosa ferramenta do cientista de dados para explorar informações, relacionamentos e descobrir os “segredos escondidos” nos dados. Se por um lado, é conhecido que 80% do tempo de trabalho de um cientista de dados é tratando da “limpeza” dos dados, através da manipulação de valores, vetores e matrizes, vimos como é possível realizar essa tarefa, ao remover valores indesejados, realizando alguns cálculos e gerando informação visual para apoiar uma tomada de decisão. Essa manipulação, muitas vezes essencial no dia-a-dia do cientista de dados, fornece suporte a recursos mais avançados (que serão utilizados posteriormente), uma vez que permite a criação de novas informações dentro da estrutura de dados, fazendo assim com que novas informações sejam obtidas a partir das já existentes. referências Referências Bibliográ�cas WICKMAN, Hadley. Título : R para Data Science. Rio de Janeiro: Alta Books, 2019