Introdução

Animes são uma das minhas paixões. A primeira de concientemente vi um desenho japonês foi no meu jardim de infância, quando foi me apresentado as animações da TV Globinho. Talvez eu tivesse 6-7 anos, mas o meu facínio por personagens de olhos grandes iniciou-se ai. E até hoje, sou um consumidor desse estilo de animação, com a franquia Digimon sendo minha preferida.

Mesmo amando animes e apesar do aumento de acesso aos produtos japoneses, meu tempo livre foi diminuido na mesma proporção com os anos…. Não posso mais assitir cada novo lançamento, não posso perder horas ver um anime cuja a historia começa em nada e vai a lugar nenhum.

Fui, como um adulto moderno que sou, torna-me refém da opinião alheia para saber o que é bom ou não. E assi chegamos no My Anime List.

O My Anime List é como se fosse um repositório, Lá tem infomações técnicas sobre várias animações japonesas. E não só isso, o que os fãs pensam delas. Ela é bastante útil pois permite que você busque os últimos lançamentos pelos tipo e demografia de anime que você gosta. E apartir do voto populr, se essa produção merece seu tempo ou não.

O dataset que vamos analisar hoje foi disponibilizado no kaggle, visite-o por este link, pelo usuário Bruno Bacelar Domingues Correia,

Biblotecas Usadas

library(tidyverse)
library(treemap)
library(stringr)
library(RColorBrewer)
library(TeachingDemos)
library(plotly)
library(kableExtra)

Importação dos dados

Versão Original

animes_raw <- read_csv("mal_top2000_anime.csv")

Versão Para Análise

animes <- animes_raw

Análise dos Dados

Tipo de animes

Os tipos são relacionados a qual midia audiovisual ele foi lançado o produto, como filme, serie de TV, OVA, música e etc

pizza <- function(x) {
  tabela <- table(x)
  tabela <- tabela[order(tabela)]
  prop_tabela <- prop.table(tabela) * 100
  pie(tabela, labels = paste(prop_tabela, "%"), col = brewer.pal(n = names(tabela),
    name = "Set1"), clockwise = T)
  legend("bottomleft", legend = names(tabela), fill = brewer.pal(n = names(tabela),
    name = "Set1"))

}

arvore <- function(x, titulo = "") {
  table(x) %>%
    as.data.frame() %>%
    treemap("x", "Freq", title = titulo, fontfamily.title = "serif", fontsize.title = 24)
}

arvore(animes$Type, "Tipos de Animes")

Demografia

A Demografia é algo curioso, pois aqui a demografia nada mais se refere ao público-alvo. Entretanto sabendo a demografia de uma animes é possivel esperar alguns cliches, certos desenvolvimentos e estilos de personagens. A demografia, pelo menos para minha visão ocidental, dizia mais sobre o animes, do propria o seu gênero.

arvore(animes$Demographic)

Gênero e Temas de Animes

O Gênero de animes são os em sua maioria parecidos com os Gêneros de filmes e livres: fantasia, suspese, ação e outros. Os Temas são especificos, pode ser tema escolar, espacial, mechas (robos gigantes), mitologia e etc

Neste Dataset um anime pode ter mais de um Gênero ou Tema, entretanto eles estão aglutinados em uma coluna. Iremos separa-los com o seguinte código.

animes[paste0("Genero.", 1:6)] <- str_split_fixed(animes$Genres, ",", 6)

animes$Genero.1 <- str_remove_all(animes$Genero.1, "[[:punct:]]")
animes$Genero.2 <- str_remove_all(animes$Genero.2, "[[:punct:]]")
animes$Genero.3 <- str_remove_all(animes$Genero.3, "[[:punct:]]")
animes$Genero.4 <- str_remove_all(animes$Genero.4, "[[:punct:]]")
animes$Genero.5 <- str_remove_all(animes$Genero.4, "[[:punct:]]")
animes$Genero.6 <- str_remove_all(animes$Genero.4, "[[:punct:]]")

animes[paste0("Tema.", 1:6)] <- str_split_fixed(animes$`Theme(s)`, ",", 6)

animes$Tema.1 <- str_remove_all(animes$Tema.1, "[[:punct:]]")
animes$Tema.2 <- str_remove_all(animes$Tema.2, "[[:punct:]]")
animes$Tema.3 <- str_remove_all(animes$Tema.3, "[[:punct:]]")
animes$Tema.4 <- str_remove_all(animes$Tema.4, "[[:punct:]]")
animes$Tema.5 <- str_remove_all(animes$Tema.4, "[[:punct:]]")
animes$Tema.6 <- str_remove_all(animes$Tema.4, "[[:punct:]]")

Quanto Temas há no dataset

Tema_total <- animes %>%
  select(Name, starts_with("Tema")) %>%
  pivot_longer(cols = starts_with("Tema"), values_to = "Tema", values_drop_na = T) %>%
  mutate_all(na_if, "") %>%
  filter(!is.na(Tema))
Tema_total$Tema <- str_squish(Tema_total$Tema)
Tema_total <- Tema_total %>%
  group_by(Tema) %>%
  summarise(Total = n()) %>%
  arrange(desc(Total))
kbl(Tema_total, align = "c") %>%
  kable_minimal(bootstrap_options = "striped", full_width = T, html_font = 10) %>%
  scroll_box(width = "900px", height = "200px")
Tema Total
None 409
School 404
Historical 200
Military 160
Psychological 139
Music 137
Super Power 132
Mythology 126
Mecha 125
Adult Cast 121
Space 108
Iyashikei 107
Parody 84
Gag Humor 80
Samurai 78
Martial Arts 74
Detective 70
Isekai 69
Team Sports 64
CGDCT 62
Workplace 56
Mahou Shoujo 51
Visual Arts 50
Gore 45
Love Polygon 36
Harem 35
Time Travel 33
Anthropomorphic 31
Idols Female 30
Vampire 28
Strategy Game 27
Video Game 27
Survival 26
Otaku Culture 25
Reincarnation 25
Performing Arts 24
Childcare 23
Racing 19
Romantic Subtext 18
Organized Crime 17
Combat Sports 16
Delinquents 11
Reverse Harem 10
High Stakes Game 8
Pets 7
Showbiz 7
Magical Sex Shift 6
Medical 6
Idols Male 5
Crossdressing 2
Educational 2

E Generos, quantos Tem?

Genero_total <- animes %>%
  select(Name, starts_with("Genero")) %>%
  pivot_longer(cols = starts_with("Genero"), values_to = "Genero", values_drop_na = T) %>%
  mutate_all(na_if, "") %>%
  filter(!is.na(Genero))
Genero_total$Genero <- str_squish(Genero_total$Genero)
Genero_total <- Genero_total %>%
  group_by(Genero) %>%
  summarise(Total = n()) %>%
  arrange(desc(Total))
Genero_total %>%
  kbl(align = "c") %>%
  kable_minimal(bootstrap_options = "striped", full_width = T, html_font = 10) %>%
  scroll_box(width = "900px", height = "200px")
Genero Total
Comedy 828
Action 735
Drama 644
Fantasy 588
Romance 507
Slice of Life 481
Supernatural 480
Adventure 435
SciFi 427
Mystery 282
Sports 138
Ecchi 89
Suspense 79
None 54
Horror 53
Boys Love 22
Gourmet 21
Girls Love 18
Avant Garde 13
Award Winning 2

Pequeno Shiny App

Você também pode experimentar meu app em shiny para visualizar alguns outros dados. Link

Obrigado a todos.