diff --git a/.RData b/.RData index 8b4a35e..6ce74b6 100644 Binary files a/.RData and b/.RData differ diff --git a/.Rhistory b/.Rhistory index 1097192..683fa03 100644 --- a/.Rhistory +++ b/.Rhistory @@ -1,184 +1,3 @@ -library("jsonlite") -data<-fromJSON(file="C:\\Users\\Marianne\\Desktop\\projet-analyse-exploratoire\\anime-offline-database-master\\anime-offline-database.json") -data<-fromJSON("C:\\Users\\Marianne\\Desktop\\projet-analyse-exploratoire\\anime-offline-database-master\\anime-offline-database.json") -dfAnimes <- as.data.frame(data) -library("tidyverse") -install.packages("tidyverse") -library("tidyverse") -dfAnimes -#Nettoyage des colonnes non utilisées -dfAnimes <- select(dfAnimes, data.title, data.type, data.episodes, data.status, data.animeSeason, data.tags) -#Nombre d'animes durant plus de 2 cours (24 épisodes) par ans -dfAnimes %>% -filter(data.episodes>25) %>% longbois -#Nombre d'animes durant plus de 2 cours (24 épisodes) par ans -dfAnimes %>% -filter(data.episodes>25) -> longbois -#Nombre d'animes durant plus de 2 cours (24 épisodes) par an -dfAnimes %>% -filter(data.episodes>30) -> longbois -#Nombre d'animes durant plus de 2 cours (estimés à 30 épisodes) par an -dfAnimes %>% -filter(data.episodes>30) %>% -group_by(data.animeSeason) %>% -count()-> longbois -#Nombre d'animes durant plus de 2 cours (estimés à 30 épisodes) par an -dfAnimes %>% -filter(data.episodes>30) %>% -group_by(data.animeSeason) %>% -count(nbAnimes)-> longbois -#Nombre d'animes durant plus de 2 cours (estimés à 30 épisodes) par an -dfAnimes %>% -filter(data.episodes>30) %>% -group_by(data.animeSeason) %>% -count() %>% -rename(n = nbAnimes) -> longbois -#Nombre d'animes durant plus de 2 cours (estimés à 30 épisodes) par an -dfAnimes %>% -filter(data.episodes>30) %>% -group_by(data.animeSeason) %>% -count() %>% -rename(nbAnimes = n) -> longbois -longbois %>% ggplot(aes(data, nbAnimes)) + ggcol() -longbois %>% ggplot(aes(data, nbAnimes)) + ggcols() -longbois %>% ggplot(aes(data, nbAnimes)) + geom_cols() -longbois %>% ggplot(aes(data, nbAnimes)) + geom_col() -longbois %>% ggplot(aes(data.animeSeason, nbAnimes)) + geom_col() -longbois %>% ggplot(aes(data.animeSeason$year, nbAnimes)) + geom_col() -#Evolution du nombre de lettre (moyenne et médiane) dans les titres par année -dfAnimes %>% -group_by(data.animeSeason$year) %>% -summarise(Lettres=mean(nchar(data.title))) -> meanLettersByYear -View(meanLettersByYear) -#Evolution du nombre de lettre (moyenne et médiane) dans les titres par année -dfAnimes %>% -group_by(data.animeSeason$year) %>% -summarise(lettres=mean(nchar(data.title))) -> meanLettersByYear -dfAnimes %>% -group_by(data.animeSeason$year) %>% -summarise(lettres=median(nchar(data.title))) -> medLettersByYear -meanLettersByYear %>% ggplot(aes(data.animeSeason$year, lettres)) + geom_col() -dfAnimes %>% -group_by(data.animeSeason$year) %>% -mutate(lettres=median(nchar(data.title))) -> medLettersByYear -dfAnimes %>% -group_by(data.animeSeason$year) %>% -summarise(lettres=median(nchar(data.title))) -> medLettersByYear -meanLettersByYear %>% ggplot(aes(data.animeSeason$year, lettres)) + geom_col() -dfAnimes %>% -group_by(data.animeSeason$year) %>% -summarise(lettres=median(nchar(data.title))) %>% -rename(annee = data.animeSeason$year)-> medLettersByYear -#Dedoublage de la colonne saison -dfAnimes %>% -mutate(annee = data.animeSeason$year) %>% -mutate(saison = data.animeSeason$season) -> dfAnimes -dfAnimes %>% -group_by(annee) %>% -summarise(lettres=median(nchar(data.title))) -> medLettersByYear -View(medLettersByYear) -View(dfAnimes) -View(dfAnimes) -#Evolution du nombre de lettre (moyenne et médiane) dans les titres par année -dfAnimes %>% -group_by(annee) %>% -summarise(lettres=mean(nchar(data.title))) -> meanLettersByYear -View(meanLettersByYear) -meanLettersByYear %>% ggplot(aes(data.animeSeason$year, lettres)) + geom_col() -meanLettersByYear %>% ggplot(aes(annee, lettres)) + geom_col() -dfAnimes %>% -group_by(annee) %>% -summarise(lettres=median(nchar(data.title))) -> medLettersByYear -medLettersByYear %>% ggplot(aes(annee, lettres)) + geom_col() -filter(data, data.animeSeason$year > 1924) -> post1924 -filter(dfAnimes, dfAnimes.animeSeason$year > 1924) -> post1924 -dfAnimes -filter(dfAnimes, dfAnimes$annee > 1924) -> post1924 -filter(post1924,post1924$annee < 2022) -> animeCentury -animeCentury -View(dfAnimes) -View(dfAnimes) -#Filtrage des animes sortis avant 1925 et après 2021 et des OVAs, films, etc -dfAnimes %>% -filter(annee < 1924) %>% -filter(annee > 2021) %>% -filter(data.type == "TV") -> animeCentury -#Filtrage des animes sortis avant 1925 et après 2021 et des OVAs, films, etc -dfAnimes %>% -filter(annee < 1924) %>% -filter(annee > 2021) -> animeCentury -#Filtrage des animes sortis avant 1925 et après 2021 et des OVAs, films, etc -dfAnimes %>% -filter(annee > 1924) %>% -filter(annee < 2021) %>% -filter(data.type == "TV") -> animeCentury -View(animeCentury) -#Nombre d'animes durant plus de 2 cours (estimés à 30 épisodes) par an => a améliorer -animeCentury %>% -filter(data.episodes>30) %>% -group_by(annee) %>% -count() %>% -rename(nbAnimes = n) -> longbois -longbois %>% ggplot(aes(annee, nbAnimes)) + geom_col() -#Filtrage des animes sortis avant 1925 et après 2021 et des OVAs, films, etc -dfAnimes %>% -filter(annee > 1960) %>% -filter(annee < 2021) %>% -filter(data.type == "TV") -> animeCentury -#Evolution du nombre de lettre (moyenne et médiane) dans les titres par année -animeCentury %>% -group_by(annee) %>% -summarise(lettres=mean(nchar(data.title))) -> meanLettersByYear -animeCentury %>% -group_by(annee) %>% -summarise(lettres=median(nchar(data.title))) -> medLettersByYear -meanLettersByYear %>% ggplot(aes(annee, lettres)) + geom_col() -medLettersByYear %>% ggplot(aes(annee, lettres)) + geom_col() -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 (pas de télé :() et après 2021 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 -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 utilisées -dfAnimes <- select(dfAnimes, title, mean, rank, annee, saison, num_episodes, source, genres) -test <- dfAnimes -test %>% -mutate(genres = paste(genres, collapse=",")) -> test -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 (pas de télé :() et après 2021 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 -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 utilisées dfAnimes <- select(dfAnimes, title, mean, rank, annee, saison, num_episodes, source, genres) View(dfAnimes) @@ -467,3 +286,227 @@ group_by(source, annee) %>% count() %>% rename(nbAnimes = n) -> dFSources dFSources %>% ggplot(aes(annee, nbAnimes, fill = source)) + geom_col() +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 (pas de télé :() et après 2021 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 utilisées +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 +View(dfAnimes) +View(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 ++ labs(y="Nombre de nouveaux animes sortis", x = "Année") + +ggtitle("Evolution du nombre d'animes dits \"fleuves\" de 1960 à 2020") +longbois %>% ggplot(aes(annee, nbAnimes)) + geom_point() + geom_line() + labs(y="Nombre de nouveaux animes sortis", x = "Année") + +ggtitle("Evolution du nombre d'animes dits \"fleuves\" de 1960 à 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 +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 1960 à 2020") ++ labs(y="Poucentage de nouveaux animes \"fleuves\"", x = "Année") + +ggtitle("Evolution du pourcentage d'animes dits \"fleuves\" parmi les nouevaux animes de 1960 à 2020") ++ labs(y="Poucentage de nouveaux animes \"fleuves\"", x = "Année") + +ggtitle("Evolution du pourcentage d'animes dits \"fleuves\" parmi les nouevaux animes de 1960 à 2020") +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 nouevaux animes de 1960 à 2020") +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 1960 à 2020") +#Evolution du nombre de lettres (moyenne et mediane) 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 1960 à 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 1960 à 2020") +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") +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") +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") +View(meanLettersByYear) +View(meanLettersByYear) +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("Nombre de nouveaux animes sortis chaque année 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("Nombre de nouveaux animes sortis chaque année de 1961 à 2020") +View(dFSources) +View(dFSources) +dFSources %>% ggplot(aes(source, nbAnimes, fill = annee)) + geom_col() + labs(y="Nombre de nouveaux animes", x = "Année") + +ggtitle("Nombre de nouveaux animes sortis chaque année 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("Nombre de nouveaux animes sortis chaque année pour les de 1961 à 2020") +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") +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(moy_ratings = median(note)) -> dFRatingsAnneeMed +dfAnimes %>% +group_by(annee)%>% +filter(!is.na(note))%>% +summarise(med_ratings = median(note)) -> dFRatingsAnneeMed +dFRatingsAnnee %>% 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") +dfAnimes %>% +group_by(annee)%>% +filter(!is.na(note))%>% +summarise(med_ratings = median(note)) -> dFRatingsAnneeMed +dFRatingsAnnee %>% 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") +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") +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") +#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 cette année", x = "Année") + +ggtitle("Note moyenne des nouveaux animes selon la saison") +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") +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") +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") +#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") +####### Distribution des genres +distributeGenres <- function(i){ +line <- as.data.frame(i$genres) +line %>% +rename(genres = 1) -> Genres +i[ , !(names(dfAnimes) %in% c("genres"))] -> anime +newdf <- cbind(anime, Genres) +return(newdf) +} +dfAnimesFinal <- data.frame(matrix(ncol = ncol(dfAnimes), nrow = 0)) +x <- names(dfAnimes) +colnames(dfAnimesFinal) <- x +dfAnimesFinal +for(i in 1:nrow(dfAnimes)) { +row <- dfAnimes[i,] +animeWithGenres <- distributeGenres(row) +dfAnimesFinal <- rbind(dfAnimesFinal,animeWithGenres) +} +####### Distribution des genres +distributeGenres <- function(i){ +line <- as.data.frame(i$genres) +line %>% +rename(genres = 1) -> Genres +i[ , !(names(dfAnimes) %in% c("genres"))] -> anime +newdf <- cbind(anime, Genres) +return(newdf) +} +dfAnimesFinal <- data.frame(matrix(ncol = ncol(dfAnimes), nrow = 0)) +x <- names(dfAnimes) +colnames(dfAnimesFinal) <- x +dfAnimesFinal +for(i in 1:nrow(dfAnimes)) { +row <- dfAnimes[i,] +animeWithGenres <- distributeGenres(row) +dfAnimesFinal <- rbind(dfAnimesFinal,animeWithGenres) +} +warnings() +####### Plot the genre the most represented +dfAnimesFinal %>% +mutate(Nombre=sum(1)) %>% +group_by(genres) %>% +summarise(NombreGenre=sum(Nombre)) %>% +arrange(desc(NombreGenre)) -> mostCommonGenre +mostCommonGenre <- head(mostCommonGenre,10) +ggplot(mostCommonGenre,aes(x=reorder(genres,NombreGenre),y=NombreGenre)) + +geom_bar(stat='Identity',aes(fill=genres)) + +labs(y="Occurence", x = "Genre") + +ggtitle("Les 10 genres les plus représentés") +####### Evolution des 5 genres les plus représentés sur les 5 dernières années +dfAnimesFinal %>% +filter(annee>1999) %>% +mutate(Nombre=1) %>% +group_by(genres,annee) %>% +summarise(NombreGenre=sum(Nombre)) %>% +arrange(desc(NombreGenre)) %>% +group_by(annee) %>% +slice_max(order_by = NombreGenre, n = 5) -> mostCommonGenrePast10Years +ggplot(mostCommonGenrePast10Years,aes(x=annee,y=NombreGenre,color=genres)) + +geom_point() + +geom_line() + +labs(y="Occurence", x = "Genre") + +ggtitle("Evolution des 5 genres les plus représentés sur les 20 dernières années") diff --git a/main_Marianne.R b/main_Marianne.R index 0e97a39..69d9f64 100644 --- a/main_Marianne.R +++ b/main_Marianne.R @@ -6,13 +6,13 @@ 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 (pas de télé :() et après 2021 et des OVAs, films, etc +#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 +#Dedoublage de la colonne saison en annee et saison dfAnimes %>% mutate(annee = start_season$year) %>% mutate(saison = start_season$season) -> dfAnimes @@ -26,20 +26,21 @@ getgenre <- function(i){ dfAnimes %>% mutate(genres = lapply(1:4691, getgenre)) -> dfAnimes -#Nettoyage des colonnes non utilisées +#Nettoyage des colonnes non utilisees dfAnimes <- select(dfAnimes, title, mean, rank, annee, saison, num_episodes, source, genres) -#Rename la colonne au nom débile +#Rename la colonne des notes utilisateurs pour eviter la confusion avec la fonction mean rename(dfAnimes, note = mean) -> dfAnimes -#Pourcentage d'animes durant plus de 2 cours (estimés à 30 épisodes) par an => a améliorer +#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() +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) %>% @@ -49,9 +50,10 @@ dfAnimes %>% 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() +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 lettre (moyenne et médiane) dans les titres par année +#Evolution du nombre de caracteres (moyen et median) dans les titres dfAnimes %>% group_by(annee) %>% summarise(lettres=mean(nchar(title))) -> meanLettersByYear @@ -60,23 +62,24 @@ dfAnimes %>% group_by(annee) %>% summarise(lettres=median(nchar(title))) -> medLettersByYear -meanLettersByYear %>% ggplot(aes(annee, lettres)) + geom_point()+ geom_line() +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() +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") -#Evolution des 5 genres les plus représentés -#Titouan #Nombre sources des animes par an dfAnimes %>% - filter(source %in% c("original", "manga", "light_novel", "game", "visual_novel", "other", "novel")) %>% + #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() +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") -#On joue avec les ratings ! +#Analyse des notes #Les animes deviennent ils meilleurs avec le temps ? dfAnimes %>% @@ -84,7 +87,16 @@ dfAnimes %>% filter(!is.na(note))%>% summarise(moy_ratings = mean(note)) -> dFRatingsAnnee -dFRatingsAnnee %>% ggplot(aes(annee, moy_ratings))+geom_point()+geom_line() +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 ? @@ -93,6 +105,14 @@ dfAnimes %>% filter(!is.na(note))%>% summarise(moy_ratings = mean(note)) -> dFRatingsSaison -dFRatingsSaison %>% ggplot(aes(saison, moy_ratings, shape = saison, color = saison))+geom_point(size = 3) +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") diff --git a/main_final.R b/main_final.R new file mode 100644 index 0000000..2205735 --- /dev/null +++ b/main_final.R @@ -0,0 +1,168 @@ +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") + +####### Distribution des genres +distributeGenres <- function(i){ + line <- as.data.frame(i$genres) + line %>% + rename(genres = 1) -> Genres + i[ , !(names(dfAnimes) %in% c("genres"))] -> anime + newdf <- cbind(anime, Genres) + return(newdf) +} + +dfAnimesFinal <- data.frame(matrix(ncol = ncol(dfAnimes), nrow = 0)) +x <- names(dfAnimes) +colnames(dfAnimesFinal) <- x +dfAnimesFinal + +for(i in 1:nrow(dfAnimes)) { + row <- dfAnimes[i,] + animeWithGenres <- distributeGenres(row) + dfAnimesFinal <- rbind(dfAnimesFinal,animeWithGenres) +} +dfAnimesFinal + +####### Plot the genre the most represented +dfAnimesFinal %>% + mutate(Nombre=sum(1)) %>% + group_by(genres) %>% + summarise(NombreGenre=sum(Nombre)) %>% + arrange(desc(NombreGenre)) -> mostCommonGenre +mostCommonGenre <- head(mostCommonGenre,10) +ggplot(mostCommonGenre,aes(x=reorder(genres,NombreGenre),y=NombreGenre)) + + geom_bar(stat='Identity',aes(fill=genres)) + + labs(y="Occurence", x = "Genre") + + ggtitle("Les 10 genres les plus représentés") + + +####### Evolution des 5 genres les plus représentés sur les 5 dernières années +dfAnimesFinal %>% + filter(annee>1999) %>% + mutate(Nombre=1) %>% + group_by(genres,annee) %>% + summarise(NombreGenre=sum(Nombre)) %>% + arrange(desc(NombreGenre)) %>% + group_by(annee) %>% + slice_max(order_by = NombreGenre, n = 5) -> mostCommonGenrePast10Years +ggplot(mostCommonGenrePast10Years,aes(x=annee,y=NombreGenre,color=genres)) + + geom_point() + + geom_line() + + labs(y="Occurence", x = "Genre") + + ggtitle("Evolution des 5 genres les plus représentés sur les 20 dernières années") + diff --git a/plot_moy_ratings_annee.pdf b/plot_moy_ratings_annee.pdf deleted file mode 100644 index ea52d85..0000000 Binary files a/plot_moy_ratings_annee.pdf and /dev/null differ diff --git a/plots/Evolution_des_5_genres_les_plus_representes_sur_les_20_dernieres_annees.pdf b/plots/Evolution_des_5_genres_les_plus_representes_sur_les_20_dernieres_annees.pdf new file mode 100644 index 0000000..4db0835 Binary files /dev/null and b/plots/Evolution_des_5_genres_les_plus_representes_sur_les_20_dernieres_annees.pdf differ diff --git a/plots/Les_10_genres_les_plus_representes.pdf b/plots/Les_10_genres_les_plus_representes.pdf new file mode 100644 index 0000000..5f67598 Binary files /dev/null and b/plots/Les_10_genres_les_plus_representes.pdf differ diff --git a/plots/med_caracteres.pdf b/plots/med_caracteres.pdf new file mode 100644 index 0000000..5176db0 Binary files /dev/null and b/plots/med_caracteres.pdf differ diff --git a/plots/moy_caracteres.pdf b/plots/moy_caracteres.pdf new file mode 100644 index 0000000..845411a Binary files /dev/null and b/plots/moy_caracteres.pdf differ diff --git a/plots/nb_fleuves.pdf b/plots/nb_fleuves.pdf new file mode 100644 index 0000000..04a7790 Binary files /dev/null and b/plots/nb_fleuves.pdf differ diff --git a/plots/note_moy.pdf b/plots/note_moy.pdf new file mode 100644 index 0000000..11053df Binary files /dev/null and b/plots/note_moy.pdf differ diff --git a/plots/notes_med.pdf b/plots/notes_med.pdf new file mode 100644 index 0000000..cc2010b Binary files /dev/null and b/plots/notes_med.pdf differ diff --git a/plots/notes_moy.pdf b/plots/notes_moy.pdf new file mode 100644 index 0000000..8c43cda Binary files /dev/null and b/plots/notes_moy.pdf differ diff --git a/plot_moy_ratings_saison.pdf b/plots/notes_saison_median.pdf similarity index 71% rename from plot_moy_ratings_saison.pdf rename to plots/notes_saison_median.pdf index 06d191f..b09118a 100644 Binary files a/plot_moy_ratings_saison.pdf and b/plots/notes_saison_median.pdf differ diff --git a/plots/notes_saison_moy.pdf b/plots/notes_saison_moy.pdf new file mode 100644 index 0000000..6808233 Binary files /dev/null and b/plots/notes_saison_moy.pdf differ diff --git a/plots/pourc_fleuves.pdf b/plots/pourc_fleuves.pdf new file mode 100644 index 0000000..2d31dff Binary files /dev/null and b/plots/pourc_fleuves.pdf differ diff --git a/plots/sources.pdf b/plots/sources.pdf new file mode 100644 index 0000000..a215e8a Binary files /dev/null and b/plots/sources.pdf differ