library(ggplot2)
library(tidyverse)
library(DT)
library(scales)
library(dplyr)
library(cowplot)
Anime là một hình thức giải trí phổ biến xuất phát từ Nhật Bản. Nó bao gồm một loạt các loạt phim hoạt hình truyền hình, phim, và OVAs (original video animations - phim hoạt hình ban đầu) phục vụ cho các thể loại và đối tượng khán giả đa dạng. Anime nổi tiếng với phong cách nghệ thuật đặc trưng, cốt truyện hấp dẫn và các chủ đề đa dạng.
Anime bao gồm rất nhiều thể loại, bao gồm hành động, phiêu lưu, hài hước, drama, tình yêu, thần thoại, khoa học viễn tưởng và nhiều hơn thế nữa. Mỗi thể loại mang đến những yếu tố cốt truyện độc đáo và thu hút sự quan tâm từ những người yêu thích anime có sở thích và quan điểm khác nhau. Anime đã nhận được sự phổ biến đáng kể trên toàn cầu và đã phát triển một cộng đồng người hâm mộ tận tâm và say mê. Người hâm mộ anime thường tham gia vào các cuộc thảo luận, đánh giá và xếp hạng, góp phần tạo nên cộng đồng sống động xung quanh hình thức giải trí này.
Do số lượng anime có sẵn rất lớn nên việc đề xuất giúp người hâm mộ tìm hiểu những bộ phim mới phù hợp với sở thích của họ. Hệ thống đề xuất sử dụng đánh giá của người dùng, thể loại và các yếu tố khác để đề xuất các loạt anime mà người dùng có thể thích dựa trên sở thích của họ.
Ta có thể tìm hiểu kỹ hơn về dữ liệu thông qua trang web được gắn link ở đây: Anime
Sau khi lấy dữ liệu về máy ta sẽ chỉnh sủa các thứ cần thiết trong excel trước khi đưa nó vào R.
# Nhập bộ dữ liệu vào R
library(readr)
<- read_csv("~/2121001544_Ngoen/E/anime .csv",
anime col_types = cols(anime_id = col_integer(),
my_score = col_integer(), user_id = col_integer(),
score = col_number(), scored_by = col_integer(),
rank = col_integer(), popularity = col_integer()))
View(anime)
# Tạo bản sao cho bộ dữ liệu
<- anime
ani print(ani)
## # A tibble: 1,048,575 × 13
## username anime_id my_score user_id gender title type source score scored_by
## <chr> <int> <int> <int> <chr> <chr> <chr> <chr> <dbl> <int>
## 1 karthiga 21 9 2255153 Female One P… TV Manga 8.54 423868
## 2 karthiga 59 7 2255153 Female Chobi… TV Manga 7.53 175388
## 3 karthiga 74 7 2255153 Female Gakue… TV Manga 7.77 33244
## 4 karthiga 120 7 2255153 Female Fruit… TV Manga 7.77 167968
## 5 karthiga 178 7 2255153 Female Ultra… TV Manga 7.26 9663
## 6 karthiga 210 7 2255153 Female Ranma… TV Manga 7.85 59911
## 7 karthiga 232 6 2255153 Female Cardc… TV Manga 8.21 121898
## 8 karthiga 233 6 2255153 Female Daa! … TV Manga 7.78 6598
## 9 karthiga 249 8 2255153 Female InuYa… TV Manga 7.9 181978
## 10 karthiga 269 10 2255153 Female Bleach TV Manga 7.9 433097
## # ℹ 1,048,565 more rows
## # ℹ 3 more variables: rank <int>, popularity <int>, genre <chr>
Giải thích dữ liệu
Dựa trên dữ liệu năm 2018. Nó bao gồm các cột sau:
Username: Tên người dùng cung cấp đánh giá.
Anime ID: Mã định danh duy nhất cho từng tên anime.
My Score: Điểm đánh giá do người dùng đưa ra cho anime trên thang điểm từ 1 đến 10.
User ID: Mã định danh duy nhất cho mỗi người dùng.
Gender: Giới tính của người dùng.
Title: Tên của anime.
Type: Loại của anime (ví dụ: loạt phim truyền hình, phim, OVA, v.v.).
Source: Nguyên tác của anime (ví dụ: manga, tiểu thuyết nhẹ, ban đầu, v.v.).
Score: Điểm trung bình của anime dựa trên tất cả các đánh giá của người dùng.
Scored By: Số người dùng đã đánh giá cho anime.
Rank: Xếp hạng của anime.
Popularity: Xếp hạng độ phổ biến của anime.
Genre: Thể loại của anime.
Bộ dữ liệu này cho phép bạn phân tích sở thích của người dùng, khám phá xu hướng thể loại và có cái nhìn sâu sắc về sự phổ biến và xếp hạng của các tên anime khác nhau. Bạn có thể thực hiện các phân tích khác nhau như tìm anime có điểm cao nhất, xác định thể loại phổ biến nhất, kiểm tra phân phối đánh giá và nghiên cứu sở thích người dùng dựa trên giới tính.
Xem cấu trúc bộ dữ liệu
# Xem cấu trúc dữ liệu
str(ani)
## spc_tbl_ [1,048,575 × 13] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ username : chr [1:1048575] "karthiga" "karthiga" "karthiga" "karthiga" ...
## $ anime_id : int [1:1048575] 21 59 74 120 178 210 232 233 249 269 ...
## $ my_score : int [1:1048575] 9 7 7 7 7 7 6 6 8 10 ...
## $ user_id : int [1:1048575] 2255153 2255153 2255153 2255153 2255153 2255153 2255153 2255153 2255153 2255153 ...
## $ gender : chr [1:1048575] "Female" "Female" "Female" "Female" ...
## $ title : chr [1:1048575] "One Piece" "Chobits" "Gakuen Alice" "Fruits Basket" ...
## $ type : chr [1:1048575] "TV" "TV" "TV" "TV" ...
## $ source : chr [1:1048575] "Manga" "Manga" "Manga" "Manga" ...
## $ score : num [1:1048575] 8.54 7.53 7.77 7.77 7.26 7.85 8.21 7.78 7.9 7.9 ...
## $ scored_by : int [1:1048575] 423868 175388 33244 167968 9663 59911 121898 6598 181978 433097 ...
## $ rank : int [1:1048575] 91 1546 941 939 2594 802 297 919 697 693 ...
## $ popularity: int [1:1048575] 35 188 1291 222 2490 623 292 3045 141 18 ...
## $ genre : chr [1:1048575] "Action, Adventure, Comedy, Super Power, Drama, Fantasy, Shounen" "Sci-Fi, Comedy, Drama, Romance, Ecchi, Seinen" "Comedy, School, Shoujo, Super Power" "Slice of Life, Comedy, Drama, Romance, Fantasy, Shoujo" ...
## - attr(*, "spec")=
## .. cols(
## .. username = col_character(),
## .. anime_id = col_integer(),
## .. my_score = col_integer(),
## .. user_id = col_integer(),
## .. gender = col_character(),
## .. title = col_character(),
## .. type = col_character(),
## .. source = col_character(),
## .. score = col_number(),
## .. scored_by = col_integer(),
## .. rank = col_integer(),
## .. popularity = col_integer(),
## .. genre = col_character()
## .. )
## - attr(*, "problems")=<externalptr>
# Hiển thị 6 dòng đầu tiên
head(ani)
## # A tibble: 6 × 13
## username anime_id my_score user_id gender title type source score scored_by
## <chr> <int> <int> <int> <chr> <chr> <chr> <chr> <dbl> <int>
## 1 karthiga 21 9 2255153 Female One Pi… TV Manga 8.54 423868
## 2 karthiga 59 7 2255153 Female Chobits TV Manga 7.53 175388
## 3 karthiga 74 7 2255153 Female Gakuen… TV Manga 7.77 33244
## 4 karthiga 120 7 2255153 Female Fruits… TV Manga 7.77 167968
## 5 karthiga 178 7 2255153 Female Ultra … TV Manga 7.26 9663
## 6 karthiga 210 7 2255153 Female Ranma ½ TV Manga 7.85 59911
## # ℹ 3 more variables: rank <int>, popularity <int>, genre <chr>
# Hiển thị 6 dòng cuối
tail(ani)
## # A tibble: 6 × 13
## username anime_id my_score user_id gender title type source score scored_by
## <chr> <int> <int> <int> <chr> <chr> <chr> <chr> <dbl> <int>
## 1 Necronomi… 4866 6 118680 Non-B… Pico… OVA Origi… 5.02 22528
## 2 Necronomi… 4872 9 118680 Non-B… Goku… OVA Manga 7.92 22997
## 3 Necronomi… 4879 8 118680 Non-B… Mour… TV Novel 7.28 11053
## 4 Necronomi… 4896 6 118680 Non-B… Umin… TV Visua… 7.28 66053
## 5 Necronomi… 4898 0 118680 Non-B… Kuro… TV Manga 7.99 297047
## 6 Necronomi… 4975 7 118680 Non-B… Chäo… TV Visua… 6.52 116277
## # ℹ 3 more variables: rank <int>, popularity <int>, genre <chr>
Bộ dữ liệu chứa nhiều bộ anime của Nhật bản được người dùng đánh giá. Ta có thể lọc theo tên của bộ anime, lọc theo đánh giá, lọc theo loại anime và cuối cùng là lọc theo thể loại của anime.
Lọc theo tên
# Lấy ra bộ anime có tên là One Piece
<- ani %>% filter(title == 'One Piece')
ani1 ani1
## # A tibble: 2,319 × 13
## username anime_id my_score user_id gender title type source score scored_by
## <chr> <int> <int> <int> <chr> <chr> <chr> <chr> <dbl> <int>
## 1 karthiga 21 9 2255153 Female One … TV Manga 8.54 423868
## 2 Redvelve… 21 0 1897606 Female One … TV Manga 8.54 423868
## 3 Damonashu 21 10 37326 Male One … TV Manga 8.54 423868
## 4 bskai 21 8 228342 Male One … TV Manga 8.54 423868
## 5 Slimak 21 10 61677 Male One … TV Manga 8.54 423868
## 6 MistButt… 21 0 2485327 Female One … TV Manga 8.54 423868
## 7 kioniel 21 9 144049 Male One … TV Manga 8.54 423868
## 8 Xinil 21 9 1 Male One … TV Manga 8.54 423868
## 9 ihasabuc… 21 9 18867 Male One … TV Manga 8.54 423868
## 10 xTheFall… 21 7 340873 Male One … TV Manga 8.54 423868
## # ℹ 2,309 more rows
## # ℹ 3 more variables: rank <int>, popularity <int>, genre <chr>
# Lấy ra bộ anoime có tên là Ultra Maniac
<- ani %>% filter(title == 'Ultra Maniac')
ani2 ani2
## # A tibble: 134 × 13
## username anime_id my_score user_id gender title type source score scored_by
## <chr> <int> <int> <int> <chr> <chr> <chr> <chr> <dbl> <int>
## 1 karthiga 178 7 2255153 Female Ultr… TV Manga 7.26 9663
## 2 MistButt… 178 5 2485327 Female Ultr… TV Manga 7.26 9663
## 3 Xinil 178 0 1 Male Ultr… TV Manga 7.26 9663
## 4 abdul18 178 0 606789 Male Ultr… TV Manga 7.26 9663
## 5 otakumuch 178 10 9767 Female Ultr… TV Manga 7.26 9663
## 6 Acidblood 178 0 360834 Male Ultr… TV Manga 7.26 9663
## 7 ecoute 178 0 288152 Male Ultr… TV Manga 7.26 9663
## 8 rzaevorh… 178 0 239016 Male Ultr… TV Manga 7.26 9663
## 9 Yzui 178 0 3343571 Male Ultr… TV Manga 7.26 9663
## 10 zombie_p… 178 6 4218491 Male Ultr… TV Manga 7.26 9663
## # ℹ 124 more rows
## # ℹ 3 more variables: rank <int>, popularity <int>, genre <chr>
# Lấy ra bộ anime có tên là Naruto: Shippuuden
<- ani %>% filter(title == 'Naruto: Shippuuden')
ani3 ani3
## # A tibble: 1,667 × 13
## username anime_id my_score user_id gender title type source score scored_by
## <chr> <int> <int> <int> <chr> <chr> <chr> <chr> <dbl> <int>
## 1 karthiga 1735 9 2255153 Female Naru… TV Manga 8.18 385179
## 2 Redvelve… 1735 9 1897606 Female Naru… TV Manga 8.18 385179
## 3 bskai 1735 9 228342 Male Naru… TV Manga 8.18 385179
## 4 Slimak 1735 10 61677 Male Naru… TV Manga 8.18 385179
## 5 MistButt… 1735 0 2485327 Female Naru… TV Manga 8.18 385179
## 6 kioniel 1735 0 144049 Male Naru… TV Manga 8.18 385179
## 7 Xinil 1735 7 1 Male Naru… TV Manga 8.18 385179
## 8 xTheFall… 1735 6 340873 Male Naru… TV Manga 8.18 385179
## 9 scootars… 1735 0 19539 Male Naru… TV Manga 8.18 385179
## 10 Akihara 1735 9 82964 Female Naru… TV Manga 8.18 385179
## # ℹ 1,657 more rows
## # ℹ 3 more variables: rank <int>, popularity <int>, genre <chr>
Lọc theo đánh giá
# Lọc ra các bộ anime theo điểm trung bình đánh giá
<- ani %>% filter(title == 'One Piece' & score > 8 )
ani4 dim(ani4)
## [1] 2319 13
<- ani %>% filter(title == 'Ultra Maniac' & score > 7 )
ani5 dim(ani5)
## [1] 134 13