Data Wrangling é a área da ciência de dados responsável pela limpeza e organização de dados de modo que seja possível trabalhá-los de forma mais ordenada. Nesta publicação utilizaremos o formato ‘wide’, onde as variáveis são dispostas em colunas e as observações em linhas. Para esta demonstração utilizaremos dados do jogo League of Legends.
A principal ferramenta para a realização do proposto anteriormente é o pacote ‘Tidyverse’, que nada mais é que um compilado de pacotes voltados, entre outras funções, a limpeza e organização do seu banco de dados. Dito isso, faça-se a instalação e carregamento dessa biblioteca
#install.packages("tidyverse")
library(tidyverse)
O dataset que utilizaremos está disponível no Kaggle trataremos o patch 12.3. Nesse endereço também encontra-se o significado das variáveis e o que elas representam. Atenção 1: foi inserida uma variável manualmente, Region, que trata da nacionalidade e/ou origem dos personagens dentro da história do jogo. Atenção 2: foi removido também o sinal de % presentes em algumas variáveis.
lol12_3 <- read.csv(file="D:/Users/Bichon/Documents/Data Science e Analytics/LoL_Analytics/League of Legends Champion Stats 12.3.csv", sep=";")
Com os dados carregados, podemos observar as primeiras mudanças a
serem feitas São boas práticas da análise de dados e da
programação, de forma geral, evitar letras maiúsculas e caracteres
especiais, tais como acentuação, pontuação, sinais matemáticos, etc.
Assim sendo, nosso primeiro dever é mudar essa realidade vista
acima.
Vamos renomear utilizando a função ‘rename’, da biblioteca dplyr.
lol12_3 <- rename(lol12_3,
champ = 1,
class = 2,
role = 3,
tier = 4,
score = 5,
trend = 6,
win = 7,
role_rate = 8,
pick = 9,
ban = 10,
kda = 11,
region = 12)
head(lol12_3)
## champ class role tier score trend win role_rate pick ban kda
## 1 Aatrox Fighter TOP S 59.99 4.88 48.06 92.58 5.03 2.15 1.87
## 2 Ahri Mage MID God 95.22 39.37 53.40 94.04 15.29 8.93 2.59
## 3 Akali Assassin TOP S 74.79 -12.94 48.48 41.25 5.10 20.26 2.08
## 4 Akali Assassin MID S 64.77 -9.81 49.10 58.10 7.51 20.26 2.33
## 5 Akshan Marksman MID A 54.42 -9.08 50.75 59.43 4.14 18.73 2.18
## 6 Akshan Marksman TOP B 40.57 -16.30 49.62 31.36 2.06 18.73 1.93
## region
## 1 Shurima
## 2 Ionia
## 3 Ionia
## 4 Ionia
## 5 Shurima
## 6 Shurima
Agora é mais fácil de trabalhar com essas variáveis, isso facilitará a citação destas nos códigos e evitará bugs e erros indesejados. Para não entrar em contradição, é importante salientar que os espaços são substituídos pelo underline/underscore(_)
Neste dataset temos uma variável que segue uma hierarquia, o tier. Isso precisa ser adequado. Faremos isso com o factor, função inata do R.
lol12_3$tier <- factor(lol12_3$tier, levels = c("D", "C","B", "A", "S", "God"), labels = c("D", "C","B", "A", "S", "God"))
head(lol12_3)
## champ class role tier score trend win role_rate pick ban kda
## 1 Aatrox Fighter TOP S 59.99 4.88 48.06 92.58 5.03 2.15 1.87
## 2 Ahri Mage MID God 95.22 39.37 53.40 94.04 15.29 8.93 2.59
## 3 Akali Assassin TOP S 74.79 -12.94 48.48 41.25 5.10 20.26 2.08
## 4 Akali Assassin MID S 64.77 -9.81 49.10 58.10 7.51 20.26 2.33
## 5 Akshan Marksman MID A 54.42 -9.08 50.75 59.43 4.14 18.73 2.18
## 6 Akshan Marksman TOP B 40.57 -16.30 49.62 31.36 2.06 18.73 1.93
## region
## 1 Shurima
## 2 Ionia
## 3 Ionia
## 4 Ionia
## 5 Shurima
## 6 Shurima
Embora não fique visível no nosso dataset, acabamos de dar níveis de importância a essa variável, onde God é o nível mais alto e D o mais baixo. O trabalho aqui ainda não está finalizado, temos mais a fazer. Com a inserção da variável region podemos separar os campeões por localidade e por tier. Assim sendo, utilizemos a função group_by, que também aparentará que nada mudou, bem como o passo anterior.
lol_region <- lol12_3 %>% dplyr::group_by(region) %>%
summarise(observações=n(),
media=mean(win),
mediana=median(win),
desv_pad=sd(win),
mínimo=min(win),
máximo=max(win),
quartil_3=quantile(win, type=5, 0.75))
lol_tier <- lol12_3 %>% dplyr::group_by(tier) %>%
summarise(observações=n(),
media=mean(win),
mediana=median(win),
desv_pad=sd(win),
mínimo=min(win),
máximo=max(win),
quartil_3=quantile(win, type=5, 0.75))
A partir do nosso primeiro banco de dados geramos outros 2, com algumas estatíticas descritivas inclusas (mais sobre isso em ___). Importante: Os dados foram agrupados em função de win (que é a % de vitória), pois essa é a nossa variável de interesse. Com esse passo feito, poderemos trabalhar melhor as inferências estatísticas e representação gráfica dos dados. Agora temos resumidamente uma análise descritiva separada por região e tier. Poderíamos fazer mais agrupamentos, por role e por class, mas pararemos por aqui.
Por fim, geraremos um outro dataset do nosso original, um apenas com as variáveis quantitativas.
lol_num <- lol12_3[,5:11]
head(lol_num)
## score trend win role_rate pick ban kda
## 1 59.99 4.88 48.06 92.58 5.03 2.15 1.87
## 2 95.22 39.37 53.40 94.04 15.29 8.93 2.59
## 3 74.79 -12.94 48.48 41.25 5.10 20.26 2.08
## 4 64.77 -9.81 49.10 58.10 7.51 20.26 2.33
## 5 54.42 -9.08 50.75 59.43 4.14 18.73 2.18
## 6 40.57 -16.30 49.62 31.36 2.06 18.73 1.93
Enfim nossos dados estão organizados e podemos começar a trabalhar nossas estatíscas.