Introdução

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.

Bibliotecas

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)

Importando o dataset

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 Primeiras mudanças 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.