diff --git a/.RData b/.RData index ceab479..8b4a35e 100644 Binary files a/.RData and b/.RData differ diff --git a/.Rhistory b/.Rhistory index d42483d..1097192 100644 --- a/.Rhistory +++ b/.Rhistory @@ -159,3 +159,311 @@ dfAnimes <- select(dfAnimes, title, mean, rank, annee, saison, num_episodes, sou 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) +View(dfAnimes) +View(animeCentury) +View(animeCentury) +View(animeCentury) +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) +#Nombre d'animes durant plus de 2 cours (estimés à 30 épisodes) par an => a améliorer +dfAnimes %>% +filter(num_episodes>30) %>% +group_by(annee) %>% +count() %>% +rename(nbAnimes = n) -> longbois +longbois %>% ggplot(aes(annee, nbAnimes)) + geom_col() +#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))) -> dfAnimes +dfAnimes %>% +group_by(annee) %>% +summarise(lettres=median(nchar(data.title))) -> medLettersByYear +#Evolution du nombre de lettre (moyenne et médiane) dans les titres par année +dfAnimes %>% +group_by(annee) %>% +summarise(lettres=mean(nchar(title))) -> dfAnimes +dfAnimes %>% +group_by(annee) %>% +summarise(lettres=median(nchar(title))) -> medLettersByYear +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) +#Nombre d'animes durant plus de 2 cours (estimés à 30 épisodes) par an => a améliorer +dfAnimes %>% +filter(num_episodes>30) %>% +group_by(annee) %>% +count() %>% +rename(nbAnimes = n) -> longbois +longbois %>% ggplot(aes(annee, nbAnimes)) + geom_col() +#Evolution du nombre de lettre (moyenne et médiane) dans les titres par année +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_col() +medLettersByYear %>% ggplot(aes(annee, lettres)) + geom_col() +#Nombre d'animes originaux par an +dfAnimes %>% +filter(source="original") -> og +#Nombre d'animes originaux par an +dfAnimes %>% +filter(source=="original") -> og +og %>% ggplot((aes(annee, nbAnimes)) + geom_col() +og %>% ggplot(aes(annee, nbAnimes)) + geom_col() +og %>% ggplot(aes(annee, nbAnimes)) + geom_col() +#Nombre d'animes originaux par an +dfAnimes %>% +filter(source=="original") %>% +group_by(annee) %>% +count() %>% +rename(nbAnimes = n) -> og +og %>% ggplot(aes(annee, nbAnimes)) + geom_col() +#Nombre sources des animes par an +dfAnimes %>% +group_by(source, annee) %>% +count() %>% +rename(nbAnimes = n) -> dFSources +dFSources %>% ggplot(aes(annee, nbAnimes), color = source) + geom_col() +dFSources %>% ggplot(aes(annee, nbAnimes, color = source)) + geom_col() +#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, color = source)) + geom_col() +dFSources %>% ggplot(aes(annee, nbAnimes, fill = source)) + geom_col() +install.packages(wesanderson) +install.packages("wesanderson"") +longbois %>% ggplot(aes(annee, nbAnimes)) + geom_point() +longbois %>% ggplot(aes(annee, nbAnimes)) + geom_point() +#Nombre d'animes durant plus de 2 cours (estimés à 30 épisodes) par an => a améliorer +dfAnimes %>% +filter(num_episodes>30) %>% +group_by(annee) %>% +count() %>% +rename(nbAnimes = n) -> longbois +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) +#Nombre d'animes durant plus de 2 cours (estimés à 30 épisodes) par an => a améliorer +dfAnimes %>% +filter(num_episodes>30) %>% +group_by(annee) %>% +count() %>% +rename(nbAnimes = n) -> longbois +longbois %>% ggplot(aes(annee, nbAnimes)) + geom_point() +longbois %>% ggplot(aes(annee, nbAnimes)) + geom_line() +dfAnimes %>% +group_by(annee) %>% +count() %>% +rename(nbAnimes = n) -> allbois +#Pourcentage d'animes durant plus de 2 cours (estimés à 30 épisodes) par an => a améliorer +dfAnimes %>% +filter(num_episodes>30) %>% +group_by(annee) %>% +count() %>% +rename(nbAnimes = n) -> longbois +percLongs <- longbois/allbois*100 +percLongs %>% ggplot(aes(annee, nbAnimes)) + geom_line() +left_join(longbois, allbois, by=annee) -> test +left_join(longbois, allbois, by="annee") -> test +left_join(longbois, allbois, by="annee", suffix = c("-long", "-all")) -> test +left_join(longbois, allbois, by="annee", suffix = c("_long", "_all")) %>% +mutate(pourcentage_long = nbAnimes_long/nbAnimes_all*100) dFLong +left_join(longbois, allbois, by="annee", suffix = c("_long", "_all")) %>% +mutate(pourcentage_long = (nbAnimes_long/nbAnimes_all*100)) dFLong +left_join(longbois, allbois, by="annee", suffix = c("_long", "_all")) %>% +mutate(pourcentage_long = (nbAnimes_long/nbAnimes_all*100)) -> dFLong +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() +longbois %>% ggplot(aes(annee, nbAnimes)) + geom_point() + geom_line() +#Pourcentage d'animes durant plus de 2 cours (estimés à 30 épisodes) par an => a améliorer +dfAnimes %>% +filter(num_episodes>50) %>% +group_by(annee) %>% +count() %>% +rename(nbAnimes = n) -> longbois +longbois %>% ggplot(aes(annee, nbAnimes)) + geom_point() + geom_line() +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() +#Pourcentage d'animes durant plus de 2 cours (estimés à 30 épisodes) par an => a améliorer +dfAnimes %>% +filter(num_episodes>50) %>% +group_by(annee) %>% +count() %>% +rename(nbAnimes = n) -> longbois +longbois %>% ggplot(aes(annee, nbAnimes)) + geom_point() + geom_line() +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() +meanLettersByYear %>% ggplot(aes(annee, lettres)) + geom_point()+ geom_line() +medLettersByYear %>% ggplot(aes(annee, lettres)) + geom_col()+ geom_line() +medLettersByYear %>% ggplot(aes(annee, lettres)) + geom_point()+ geom_line() +#En quelle saison sortent les meilleurs animes ? +dfAnimes %>% +group_by(saison)%>% +summarise(moy_ratings = mean(rating)) -> dFRatingsSaison +#En quelle saison sortent les meilleurs animes ? +dfAnimes %>% +group_by(saison)%>% +summarise(moy_ratings = mean(mean)) -> dFRatingsSaison +#Rename la colonne au nom débile +rename(dfAnimes, note = mean) -> dfAnimes +#En quelle saison sortent les meilleurs animes ? +dfAnimes %>% +group_by(saison)%>% +summarise(moy_ratings = mean(note)) -> dFRatingsSaison +#En quelle saison sortent les meilleurs animes ? +dfAnimes %>% +group_by(saison)%>% +summarise(moy_ratings = sum(note)) -> dFRatingsSaison +#Les animes deviennent ils meilleurs avec le temps ? +dfAnimes %>% +group_by(annee)%>% +summarise(moy_ratings = sum(note)) -> dFRatingsAnnee +View(dFRatingsAnnee) +#En quelle saison sortent les meilleurs animes ? +dfAnimes %>% +group_by(saison)%>% +summarise(moy_ratings = sum(note), na.rm=TRUE) -> dFRatingsSaison +#En quelle saison sortent les meilleurs animes ? +dfAnimes %>% +group_by(saison)%>% +filter(!is_na(note))%>% +summarise(moy_ratings = sum(note)) -> dFRatingsSaison +#En quelle saison sortent les meilleurs animes ? +dfAnimes %>% +group_by(saison)%>% +filter(!isna(note))%>% +summarise(moy_ratings = sum(note)) -> dFRatingsSaison +#En quelle saison sortent les meilleurs animes ? +dfAnimes %>% +group_by(saison)%>% +filter(!is.na(note))%>% +summarise(moy_ratings = sum(note)) -> dFRatingsSaison +#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))+geom_bar() +dFRatingsSaison %>% ggplot(aes(saison, moy_ratings))+geom_col() +dFRatingsSaison %>% ggplot(aes(saison, moy_ratings))+geom_point() +#Les animes deviennent ils meilleurs avec le temps ? +dfAnimes %>% +group_by(annee)%>% +filter(!is.na(note))%>% +summarise(moy_ratings = mean(note)) -> dFRatingsAnnee +dFRatingsSaison %>% ggplot(aes(saison, moy_ratings))+geom_point()+geom_line() +dFRatingsAnnee %>% ggplot(aes(annee, moy_ratings))+geom_point()+geom_line() +dFRatingsSaison %>% ggplot(aes(saison, moy_ratings))+geom_point() +dFRatingsSaison %>% ggplot(aes(saison, moy_ratings, shape = saison, color = saison))+geom_point() +dFRatingsSaison %>% ggplot(aes(saison, moy_ratings, shape = saison, color = saison))+geom_count() +dFRatingsSaison %>% ggplot(aes(saison, moy_ratings, shape = saison, color = saison))+geom_jitter() +dFRatingsSaison %>% ggplot(aes(saison, moy_ratings, shape = saison, color = saison))+geom_bin2d() +dFRatingsSaison %>% ggplot(aes(saison, moy_ratings, shape = saison, color = saison))+geom_jitter() +dFRatingsSaison %>% ggplot(aes(saison, moy_ratings, shape = saison, color = saison))+geom_point() +dFRatingsSaison %>% ggplot(aes(saison, moy_ratings, shape = saison, color = saison))+geom_point(size = 3) +dFRatingsAnnee %>% ggplot(aes(annee, moy_ratings))+geom_point()+geom_line +dFRatingsAnnee %>% ggplot(aes(annee, moy_ratings))+geom_point()+geom_line() +dFSources %>% ggplot(aes(annee, nbAnimes, fill = source)) + geom_col() +#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() diff --git a/main2.R b/main2.R new file mode 100644 index 0000000..138a4d7 --- /dev/null +++ b/main2.R @@ -0,0 +1,115 @@ +library("jsonlite") +library("tidyverse") + + + +data<-fromJSON(txt = "/home/labourde/Bureau/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) + +####### 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") + + + + +#Nombre d'animes durant plus de 2 cours (estimés à 30 épisodes) par an => a améliorer +dfAnimes %>% + filter(num_episodes>30) %>% + group_by(annee) %>% + count() %>% + rename(nbAnimes = n) -> longbois + +longbois %>% ggplot(aes(annee, nbAnimes)) + geom_col() + +#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))) -> dfAnimes + +dfAnimes %>% + group_by(annee) %>% + summarise(lettres=median(nchar(data.title))) -> medLettersByYear + +meanLettersByYear %>% ggplot(aes(annee, lettres)) + geom_col() + +medLettersByYear %>% ggplot(aes(annee, lettres)) + geom_col() + +#Evolution des 5 genres les plus représentés + +# Explosion de la colonne tags +dfAnimes %>% + mutate(annee = anime$year) %>% + mutate(saison = start_season$season) -> animes_genres_doubles + + + diff --git a/main_Marianne.R b/main_Marianne.R new file mode 100644 index 0000000..0e97a39 --- /dev/null +++ b/main_Marianne.R @@ -0,0 +1,98 @@ +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) + +#Rename la colonne au nom débile +rename(dfAnimes, note = mean) -> dfAnimes + +#Pourcentage d'animes durant plus de 2 cours (estimés à 30 épisodes) par an => a améliorer +dfAnimes %>% + filter(num_episodes>50) %>% + group_by(annee) %>% + count() %>% + rename(nbAnimes = n) -> longbois + +longbois %>% ggplot(aes(annee, nbAnimes)) + geom_point() + geom_line() + +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() + +#Evolution du nombre de lettre (moyenne et médiane) dans les titres par année +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() + +medLettersByYear %>% ggplot(aes(annee, lettres)) + geom_point()+ geom_line() + +#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")) %>% + group_by(source, annee) %>% + count() %>% + rename(nbAnimes = n) -> dFSources + +dFSources %>% ggplot(aes(annee, nbAnimes, fill = source)) + geom_col() + +#On joue avec les ratings ! + +#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() + + +#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) + + diff --git a/plot_moy_ratings_annee.pdf b/plot_moy_ratings_annee.pdf new file mode 100644 index 0000000..ea52d85 Binary files /dev/null and b/plot_moy_ratings_annee.pdf differ diff --git a/plot_moy_ratings_saison.pdf b/plot_moy_ratings_saison.pdf new file mode 100644 index 0000000..06d191f Binary files /dev/null and b/plot_moy_ratings_saison.pdf differ