--- title: "Projeto Integrador de Ciência de Dados" author: "Rodrigo H. Ozon" date: "01/10/2020" output: html_document: toc: true toc_float: true --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE) #linha para retirar os [1] prefixo de resultados dos output dos comandos do r # veja https://stackoverflow.com/questions/22524822/how-can-i-remove-the-prefix-index-indicator-1-in-knitr-output/22563357 knitr::opts_chunk$set(opts.label="kill_prefix") ``` ```{r include=FALSE} # cunhk para retiraar os prefixos default_output_hook <- knitr::knit_hooks$get("output") # Output hooks handle normal R console output. knitr::knit_hooks$set( output = function(x, options) { comment <- knitr::opts_current$get("comment") if( is.na(comment) ) comment <- "" can_null <- grepl( paste0( comment, "\\s*\\[\\d?\\]" ), x, perl = TRUE) do_null <- isTRUE( knitr::opts_current$get("null_prefix") ) if( can_null && do_null ) { # By default R print output aligns at the right brace. align_index <- regexpr( "\\]", x )[1] - 1 # Two cases: start or newline re <- paste0( "^.{", align_index, "}\\]") rep <- comment x <- gsub( re, rep, x ) re <- paste0( "\\\n.{", align_index, "}\\]") rep <- paste0( "\n", comment ) x <- gsub( re, rep, x ) } default_output_hook( x, options ) }) knitr::opts_template$set("kill_prefix"=list(comment=NA, null_prefix=TRUE)) ``` *** #### **Resumo** Este documento apresenta a resolução dos exercícios do curso Tecnológico em Ciência de Dados da Universidade Cruzeiro do Sul virtual para a disciplina de Projeto Integrador de Competência em Ciência de Dados I. Veja como eu criei um arquivo .pdf utilizando a prática de pesquisa reprodutível no R onde pode ser feito completamente de forma gratuita na plataforma Overleaf.com. Caso você queira ver um tutorial de como começar a integrar a linguagem $\LaTeX~$ com o R [consulte esse artigo que eu postei no meu LinkeDin.](https://www.linkedin.com/pulse/pr%C3%A1tica-letrada-de-data-science-com-latex-e-r-rodrigo-hermont-ozon/?articleId=6668963881102172160) Como exercício criei essa página na web escrita em RMarkdown contendo as interatividades gráficas para os exercícios aqui propostos. [Caso tenha interesse, baixe esse documento no formato .pdf editado com a integração $\LaTeX~$+R aqui.](https://github.com/rhozon/datasets/raw/master/Atividades__Projeto_Integrador_de_Compet_ncias_em_CD.pdf) Se quiser, [visite meu repositório](https://rhozon.github.io/) onde subi os scripts: + [do arquivo .Rtex compilado no Overleaf.com;](https://rhozon.github.io/) + [do arquivo .Rmd que você está lendo agora](https://rhozon.github.io/) *** # Introdução A disciplina de projeto integrador de competências visa, além de sistematizar os conhecimentos adquiridos, também desenvolver atitudes e estratégias de pensamento focadas na resolução de problemas práticos das áreas de futura atuação dos alunos, bem como proporcionar a transversalidade disciplinar utilizada na prática profissional no dia a dia. Não obstante, é uma valiosa prática andragógica que oferece a necessária vivência do ambiente de trabalho, fundamental para o amadurecimento e mediante aplicação dos conhecimentos em situações reais, abordando sempre problemas de cunho rigorosamente prático. Além disso, é de fundamental importância a integração entre as disciplinas, pois, no exercício da profissão, o discente estará exposto a desafios que projetam-se transversalmente às disciplinas e é importante saber a qual domínio pertence a solução e em quantas etapas esses desafios se dividem até que se encontre a resposta e a execução em fases mais simples e de seu domínio. O objetivo é utilizar e evoluir em relação às novas competências recém adquiridas visando sua fixação e otimização no que tangem as seguintes disciplinas: Modelagem de Dados, Análise de Dados Exploratória e Linguagem de Banco de Dados. Em conformidade ao descrito, logo a seguir serão passadas uma série de leituras de reforço que necessitarão de sua atenção e esforço para recordar e se preparar para os desafios dispostos em nossa trilha de aprendizagem. Também é bom lembrar que a língua mundialmente falada em tecnologia da informação é Inglês, portanto, é importante você estar estudando esse idioma para evoluir profissionalmente nesse mercado. Claro, você pode utilizar o tradutor da Google, mas é importante praticar e dominar o idioma. Colocamos links com ferramentas e leituras, cujas indicações são: Para tanto utilizaremos a linguagem R mundialmente usada para manipulação estatística de dados. Isso com certeza ajudará a dar maior confiança em sua jornada. Caso você ainda não tenha instalado, vamos fazer isso, porque você vai utilizar para realizar os exercícios. Vamos lá então: Disponível em: [https://www.r-project.org/](https://www.r-project.org/) aqui você encontra tudo sobre a linguagem e se quiser o direcionamento para baixar o instalador. Link para baixar o instalador direto: Disponível em: [https://cran-r.c3sl.ufpr.br/]( https://cran-r.c3sl.ufpr.br/). Levamos em conta que talvez você ainda não esteja familiarizado com a linguagem, então resolvemos lhe dar um reforço: Aqui você encontra muita documentação oficial para te ajudar: disponível em: [https://cran.r-project.org/manuals.html](https://cran.r-project.org/manuals.html) Lembrando que apesar da linguagem de manipulação de dados R, temos que saber das fontes e de como as modelamos. Nesse tocante, a modelagem de dados é uma habilidade crucial para todo cientista de dados, esteja você fazendo projetos de pesquisa ou arquitetando um novo repositório para o armazenamento de dados em uma empresa. E, para isso, devemos lembrar que a modelagem de dados trata do processo de produzir um diagrama descritivo de relações entre vários tipos de informações que devem ser armazenadas em um banco de dados e cujo objetivo é criar o método mais eficiente de armazenar informações num banco de dados. Focaremos aqui no diagrama E-R (entidade/relacionamento), assim como a linguagem para manipulação de dados no banco de dados SQL, assim você poderá extrair e realizar junções de dados alvos para extração e submissão à linguagem R. Veja a leitura abaixo indicada na biblioteca virtual: Para modelagem de dados E-R e linguagem SQL, recomendo a leitura de: MEDEIROS, L.F. Banco de Dados: Princípios e Prática. Curitiba: Ed. Intersaberes. 2013. Disponível na biblioteca virtual da Pearsons em: (coloquei um link pra download direto, que funciona) [https://github.com/rhozon/SQL/raw/master/banco-de-dados-principios-e-pratica.pdf](Acesse e baixe aqui) Há uma série de ferramentas úteis em seu dia a dia para modelar dados de forma conceitual, uma das mais utilizadas é o Modelo BR, que você encontrará no seguinte link: disponível em [https://sourceforge.net/projects/brmodelo30/](https://sourceforge.net/projects/brmodelo30/) Você pode preferir baixar o Workbench do MySQL se tiver mais familiarizado, para tanto é só você seguir as instruções da página de download. Workbench oferece: + Design e modelagem de banco de dados + Desenvolvimento SQL + Administração de banco de dados + Migração de Banco de Dados: Disponível em: [https://dev.mysql.com/downloads/workbench/](https://dev.mysql.com/downloads/workbench/) *** # Atividade I Você foi contratado pela empresa XPTO para a função de analista de dados. Como parte de seu trabalho, foi lhe confiada uma extração de dados contendo os seguintes valores: (25, 45, 28, 79, 74, 61, 12, 68, 93, 39, 100), sendo que cada valor na sua atual sequência atende pelos títulos: (alface, cenoura, pepino, chuchu, pimenta, couve, rúcula, cebola, alho, pimentão, alcachofra). Pediram para que você realize o seguinte, utilizando a linguagem R, e apresentar os resultados. + Crie um gráfico de barras apresentando o resultado de cada item. + Liste os componentes da matriz dos dados. + Liste o resultado da soma dessa matriz. + Liste a média aritmética dessa matriz. + Liste o produto dos elementos dessa matriz. Instruções de envio Não envie arquivo .zip 1 arquivo em PDF exibindo seu código; 1 arquivo com o com o código em R; *** ## Resolução Carrego os vetores de dados numéricos e qualitativos (nomes das verduras) ```{r comment=NA, null_prefix=TRUE} valores<-c(25, 45, 28, 79, 74, 61, 12, 68, 93, 39, 100) titulos<-c("alface","cenoura","pepino","chuchu","pimenta","couve","rúcula","cebola", "alho","pimentão","alcachofra") dados<-data.frame(titulos,valores) # Crio o conjunto de dados combinando titulos e valores dados # Mostra o dataframe str(dados) # Mostra a estrutura e o tipo de variaveis no dataset ``` A variável titulos é lida como chr, ou seja, como caractere e os valores como numérica. ### Crie um gráfico de barras apresentando o resultado de cada item. Após informarmos ao R as variáveis, podemos criar um gráfico de barras: ```{r fig.width=9,fig.height=3, message=FALSE } library(ggplot2) # Pacote do R para graficos estaticos de qualidade ggplot(data=dados,aes(x=titulos,y=valores))+ geom_bar(position = "dodge", stat="identity")+ geom_text(aes(label=valores), position=position_dodge(width=0.9), vjust=-0.25, size=2.5)+ # Insere os rotulos acima das barras de tamanho 2.5 ggtitle("Gráfico de barras para valores e títulos")+ theme(plot.title = element_text(hjust = 0.5)) # Ajusta o titulo do grafico em cima no meio ``` Vamos gerar o mesmo gráfico utilizando interatividade aqui no HTML: ```{r fig.width=9,fig.height=3, message=FALSE } library(plotly) # Pacote para o Rmarkdown para graficos interativos graf.interativo<-ggplot(data=dados,aes(x=titulos,y=valores))+ geom_bar(stat="identity")+ ggtitle("Gráfico de barras para valores e títulos")+ theme(plot.title = element_text(hjust = 0.5)) # Ajusta o titulo do grafico em cima no meio ggplotly(graf.interativo) ``` Repare que retirei os valores dos rótulos acima das barras. ### Liste os componentes da matriz dos dados. Para listarmos os componentes da matriz de dados, podemos simplesmente ordenar do maior para o menor: ```{r message=FALSE, comment=NA, null_prefix=TRUE} library(dplyr) # Pacote para rodar as formulas com o operador pipe dados%>% group_by(titulos)%>% arrange(desc(valores)) ``` Poderíamos refazer o gráfico de barras ordenado: ```{r fig.width=9,fig.height=3 } ggplot(dados,aes(x= reorder(titulos,-valores),valores))+ geom_bar(position="dodge",stat ="identity")+ geom_text(aes(label=valores), position=position_dodge(width=0.9), vjust=-0.25, size=2.5)+ # Insere os rotulos acima das barras de tamanho 2.5 ggtitle("Gráfico de barras ordenado para valores e títulos")+ theme(plot.title = element_text(hjust = 0.5))+# Centraliza o titulo do grafico acima theme(axis.title.x=element_blank())# Nao mostre reorder(-valores) como label no eixo x ``` Aqui no RMarkdown, faço o mesmo gráfico para interaividade no HTML: ```{r fig.width=9,fig.height=3 } graf.interativo2<-ggplot(dados,aes(x= reorder(titulos,-valores),valores))+ geom_bar(stat ="identity")+ ggtitle("Gráfico de barras ordenado para valores e títulos")+ theme(plot.title = element_text(hjust = 0.5))+# Centraliza o titulo do grafico acima theme(axis.title.x=element_blank())# Nao mostre reorder(-valores) como label no eixo x ggplotly(graf.interativo2) ``` ### Liste a soma e a média aritmética dessa matriz Para somarmos e também para obtermos a média aritmética do vetor de valores simplesmente fazemos ```{r comment=NA, null_prefix=TRUE} sum(dados$valores) # Soma mean(dados$valores) # Media aritmetica round(mean(dados$valores),0) # Valores arredondados pois os valores sao discretos (inteiros) ``` Ou então aqui pelo Rmarkdown diretamente no corpo do texto, soma = `r sum(dados$valores)` e a média = `r round(mean(dados$valores),0)`. Para inserir o valor da soma no texto utilize o comando: ```{r} # o valor da soma eh `r sum(dados$valores)` ... # a média é de `r round(mean(dados$valores),0)` ... ``` ### Liste o produto dos elementos da matriz Vamos obter o multiplicatório do vetor de valores, que é o mesmo que: $$ \displaystyle\prod_{i=1}^{11}\mbox{valores}_{i}= \mbox{valor}_{1}\times\mbox{valor}_{2}\times\ldots\times\mbox{valor}_{11} $$ ou seja, a notação $\displaystyle\prod_{i=1}^{11}$ lê-se que do primeiro $i=1$, índice de contagem da multiplicação até o $11^o$ multiplique a variável valores. ```{r comment=NA, null_prefix=TRUE} print(prod(dados$valores), digits = 20) # Especifico o numero de digitos para numeros grandes ``` Ou então podemos multiplicar o valor do alface com o da cenoura fazendo: ```{r comment=NA, null_prefix=TRUE} alfacexcenoura<-dados[1,2]*dados[2,2] alfacexcenoura ``` Sendo que a instrução [1,2] significa primeira linha, da segunda coluna. Se quiséssemos fazer o produto de todos os elementos do dataset, faríamos: alface $\times 25$, cenoura $\times 45$, pepino $\times 28$, chuchu $\times 79$ ... Ou seja, o vetor de nomes (títulos) multiplicado pelo vetor numérico de valores. ```{r message=FALSE, comment=NA, null_prefix=TRUE} library(tidyr) library(tidyverse) multiplica.elementos<-paste(dados$titulos,"*",dados$valores) multiplica.elementos # Mostra o resultado as.tibble(multiplica.elementos) # Mostra o resultado como um vetor ``` *** # Atividade II Você trabalha há algum tempo como analista de dados numa empresa contratada pela Formula-1. O cientista de dados chefe pediu para que você, baseando-se no diagrama E-R abaixo, elabore os seguintes comandos SQL para satisfazer seus pedidos: