This commit is contained in:
m-gues 2021-12-11 19:41:59 +01:00
parent bbb623d738
commit 526f8fe4d2
17 changed files with 429 additions and 198 deletions

BIN
.RData

Binary file not shown.

405
.Rhistory
View file

@ -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")

View file

@ -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")

168
main_final.R Normal file
View file

@ -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")

Binary file not shown.

Binary file not shown.

BIN
plots/med_caracteres.pdf Normal file

Binary file not shown.

BIN
plots/moy_caracteres.pdf Normal file

Binary file not shown.

BIN
plots/nb_fleuves.pdf Normal file

Binary file not shown.

BIN
plots/note_moy.pdf Normal file

Binary file not shown.

BIN
plots/notes_med.pdf Normal file

Binary file not shown.

BIN
plots/notes_moy.pdf Normal file

Binary file not shown.

BIN
plots/notes_saison_moy.pdf Normal file

Binary file not shown.

BIN
plots/pourc_fleuves.pdf Normal file

Binary file not shown.

BIN
plots/sources.pdf Normal file

Binary file not shown.