library("jsonlite")
library("tidyverse")



data<-fromJSON("C:\\Users\\Marianne\\Desktop\\projet-analyse-exploratoire\\db_animes\\db_animes.json")
dfAnimes <- as.data.frame(data)

#Filtrage des animes sortis avant 1960 (premier anime créé pour la télévision en 1961) et apres 2021 (pas encore sortis) et des OVAs, films, etc
dfAnimes %>%
  filter(start_season$year > 1960) %>%
  filter(start_season$year < 2021) %>%
  filter(media_type == "tv") -> dfAnimes

#Dedoublage de la colonne saison en annee et saison
dfAnimes %>% 
  mutate(annee = start_season$year) %>%
  mutate(saison = start_season$season) -> dfAnimes

#Transformation de la colonne genre pour la rendre utilisable
getgenre <- function(i){
  dfAnimes[i,13][[1]][[2]] -> res
  return(res)
}

dfAnimes %>%
  mutate(genres = lapply(1:4691, getgenre)) -> dfAnimes

#Nettoyage des colonnes non utilisees
dfAnimes <- select(dfAnimes, title, mean, rank, annee, saison, num_episodes, source, genres)

#Rename la colonne des notes utilisateurs pour eviter la confusion avec la fonction mean
rename(dfAnimes, note = mean) -> dfAnimes

#Nombre et pourcentage d'animes dits "fleuves" (estimes à plus de 50 episodes) parmis les nouveaux animes lancés chaque année
dfAnimes %>%
  filter(num_episodes>50) %>%
  group_by(annee) %>%
  count() %>%
  rename(nbAnimes = n) -> longbois

longbois %>% ggplot(aes(annee, nbAnimes)) + geom_point() + geom_line() + labs(y="Nombre de nouveaux animes sortis", x = "Année") +
  ggtitle("Evolution du nombre de nouveaux animes dits \"fleuves\" de 1961 à 2020")

dfAnimes %>%
  group_by(annee) %>%
  count() %>%
  rename(nbAnimes = n) -> allbois

left_join(longbois, allbois, by="annee", suffix = c("_long", "_all")) %>%
  mutate(pourcentage_long = (nbAnimes_long/nbAnimes_all*100)) -> dFLong
  
dFLong %>% ggplot(aes(annee, pourcentage_long)) + geom_point() + geom_line() + labs(y="Poucentage de nouveaux animes \"fleuves\"", x = "Année") +
  ggtitle("Evolution du pourcentage d'animes dits \"fleuves\" parmi les nouveaux animes de 1961 à 2020")

#Evolution du nombre de caracteres (moyen et median) dans les titres
dfAnimes %>%
  group_by(annee) %>%
  summarise(lettres=mean(nchar(title))) -> meanLettersByYear

dfAnimes %>%
  group_by(annee) %>%
  summarise(lettres=median(nchar(title))) -> medLettersByYear

meanLettersByYear %>% ggplot(aes(annee, lettres)) + geom_point()+ geom_line() + labs(y="Nombre moyen de caractères", x = "Année") +
  ggtitle("Nombre moyen de caractères dans les titres des nouveaux animes de 1961 à 2020")

medLettersByYear %>% ggplot(aes(annee, lettres)) + geom_point()+ geom_line() + labs(y="Nombre médian de caractères", x = "Année") +
  ggtitle("Nombre médian de caractères dans les titres des nouveaux animes de 1961 à 2020")


#Nombre sources des animes par an
dfAnimes %>%
  #filter(source %in% c("original", "manga", "light_novel", "game", "visual_novel", "other", "novel")) %>%
  group_by(source, annee) %>%
  count() %>%
  rename(nbAnimes = n) -> dFSources

dFSources %>% ggplot(aes(annee, nbAnimes, fill = source)) + geom_col() + labs(y="Nombre de nouveaux animes", x = "Année") +
  ggtitle("Répartition des sources nouveaux animes sortis chaque année de 1961 à 2020")

#Analyse des notes

#Les animes deviennent ils meilleurs avec le temps ?
dfAnimes %>%
  group_by(annee)%>%
  filter(!is.na(note))%>%
  summarise(moy_ratings = mean(note)) -> dFRatingsAnnee

dFRatingsAnnee %>% ggplot(aes(annee, moy_ratings))+geom_point()+geom_line()+ labs(y="Note moyenne des animes sortis cette année", x = "Année") +
  ggtitle("Note moyenne des nouveaux animes de 1961 à 2020")

dfAnimes %>%
  group_by(annee)%>%
  filter(!is.na(note))%>%
  summarise(med_ratings = median(note)) -> dFRatingsAnneeMed

dFRatingsAnneeMed %>% ggplot(aes(annee, med_ratings))+geom_point()+geom_line()+ labs(y="Note médiane des animes sortis cette année", x = "Année") +
  ggtitle("Note médiane des nouveaux animes de 1961 à 2020")


#En quelle saison sortent les meilleurs animes ?
dfAnimes %>%
  group_by(saison)%>%
  filter(!is.na(note))%>%
  summarise(moy_ratings = mean(note)) -> dFRatingsSaison

dFRatingsSaison %>% ggplot(aes(saison, moy_ratings, shape = saison, color = saison))+geom_point(size = 3)+ labs(y="Note moyenne des animes sortis en cette saison", x = "Année") +
  ggtitle("Note moyenne des nouveaux animes selon la saison")

dfAnimes %>%
  group_by(saison)%>%
  filter(!is.na(note))%>%
  summarise(moy_ratings = median(note)) -> dFRatingsSaisonMed

dFRatingsSaisonMed %>% ggplot(aes(saison, moy_ratings, shape = saison, color = saison))+geom_point(size = 3)+ labs(y="Note médiane des animes sortis en cette saison", x = "Année") +
  ggtitle("Note médiane des nouveaux animes selon la saison")

