Data ini merupakan cuplikan contoh User Netflix, termasuk informasi seperti jenis langganan pengguna, pendapatan bulanan yang dihasilkan dari langganan mereka, tanggal mereka bergabung dengan Netflix, tanggal pembayaran terakhir mereka, negara tempat mereka berada, perangkat , dan informasi pengguna. Kumpulan data tersebut berfungsi sebagai representasi sintetis dan tidak mencerminkan data pengguna Netflix yang sebenarnya.
sumber : https://www.kaggle.com/datasets/arnavsmayan/netflix-userbase-dataset
Persiapkan terlebih dahulu library yang akan digunakan
# for datetime-related data processing
library(lubridate)
# for data wrangling
library(tidyr)
library(dplyr)
# visualization
library(ggplot2)Terdapat 10 kolom pada dengan informasi sebagai berikut :
Selanjutnya cek terlebih dahulu type dari data yang kita miliki
#> 'data.frame': 2500 obs. of 10 variables:
#> $ User.ID : int 1 2 3 4 5 6 7 8 9 10 ...
#> $ Subscription.Type: chr "Basic" "Premium" "Standard" "Standard" ...
#> $ Monthly.Revenue : int 10 15 12 12 10 15 12 10 12 15 ...
#> $ Join.Date : chr "15-01-22" "05-09-21" "28-02-23" "10-07-22" ...
#> $ Last.Payment.Date: chr "10-06-23" "22-06-23" "27-06-23" "26-06-23" ...
#> $ Country : chr "United States" "Canada" "United Kingdom" "Australia" ...
#> $ Age : int 28 35 42 51 33 29 46 39 37 44 ...
#> $ Gender : chr "Male" "Female" "Male" "Female" ...
#> $ Device : chr "Smartphone" "Tablet" "Smart TV" "Laptop" ...
#> $ Plan.Duration : chr "1 Month" "1 Month" "1 Month" "1 Month" ...
Beberapa kolom masih memiliki type data yang kurang tepat sebagai berikut :
Lakukan perubahan type data
netflix$Subscription.Type <- as.factor(netflix$Subscription.Type)
netflix$Country <- as.factor(netflix$Country)
netflix$Gender <- as.factor(netflix$Gender)
netflix$Device <- as.factor(netflix$Device)
netflix$Join.Date <- dmy(netflix$Join.Date)
netflix$Last.Payment.Date <- dmy(netflix$Last.Payment.Date)Cek kembali type data apakah sudah sesuai
#> 'data.frame': 2500 obs. of 10 variables:
#> $ User.ID : int 1 2 3 4 5 6 7 8 9 10 ...
#> $ Subscription.Type: Factor w/ 3 levels "Basic","Premium",..: 1 2 3 3 1 2 3 1 3 2 ...
#> $ Monthly.Revenue : int 10 15 12 12 10 15 12 10 12 15 ...
#> $ Join.Date : Date, format: "2022-01-15" "2021-09-05" ...
#> $ Last.Payment.Date: Date, format: "2023-06-10" "2023-06-22" ...
#> $ Country : Factor w/ 10 levels "Australia","Brazil",..: 10 3 9 1 5 4 2 7 8 6 ...
#> $ Age : int 28 35 42 51 33 29 46 39 37 44 ...
#> $ Gender : Factor w/ 2 levels "Female","Male": 2 1 2 1 2 1 2 1 2 1 ...
#> $ Device : Factor w/ 4 levels "Laptop","Smart TV",..: 3 4 2 1 3 2 4 1 3 2 ...
#> $ Plan.Duration : chr "1 Month" "1 Month" "1 Month" "1 Month" ...
Type data sudah sesuai selanjutnya mari kita cek missing value dari setiap kolom
#> User.ID Subscription.Type Monthly.Revenue Join.Date
#> 0 0 0 0
#> Last.Payment.Date Country Age Gender
#> 0 0 0 0
#> Device Plan.Duration
#> 0 0
Ok tidak terdapat missing value dari setiap kolom, data siap untuk dianalisa lebih lanjut
Tahap pertama kita bisa menggunakan fungsi summary() untuk mengetahui resume data secara singkat
#> User.ID Subscription.Type Monthly.Revenue Join.Date
#> Min. : 1.0 Basic :999 Min. :10.00 Min. :2021-09-05
#> 1st Qu.: 625.8 Premium :733 1st Qu.:11.00 1st Qu.:2022-07-15
#> Median :1250.5 Standard:768 Median :12.00 Median :2022-08-31
#> Mean :1250.5 Mean :12.51 Mean :2022-08-28
#> 3rd Qu.:1875.2 3rd Qu.:14.00 3rd Qu.:2022-10-17
#> Max. :2500.0 Max. :15.00 Max. :2023-06-14
#>
#> Last.Payment.Date Country Age Gender
#> Min. :2023-06-10 Spain :451 Min. :26.0 Female:1257
#> 1st Qu.:2023-06-29 United States:451 1st Qu.:32.0 Male :1243
#> Median :2023-07-03 Canada :317 Median :39.0
#> Mean :2023-07-03 Australia :183 Mean :38.8
#> 3rd Qu.:2023-07-08 Brazil :183 3rd Qu.:45.0
#> Max. :2023-07-15 France :183 Max. :51.0
#> (Other) :732
#> Device Plan.Duration
#> Laptop :636 Length:2500
#> Smart TV :610 Class :character
#> Smartphone:621 Mode :character
#> Tablet :633
#>
#>
#>
Berdasarkan hasil summary kita dapat mengetahu beberapa hal sebagai berikut :
Perlu dilakukan analisa lebih dalam untuk mengetahui informasi lainnya, menggunakan subsetting, grouping serta Visualisasi data
Kita ingin mengetahu Negara mana yang memiliki jumlah user terbanyak, tahap pertama yang perlu dilakukan adalah groping data berdasarkan Negara (Country)
Top_Country <- aggregate(x = User.ID ~ Country,
data = netflix,
FUN = length)
names(Top_Country) <- c("Country", "Count")
Top_CountryAgar lebih mudah dipahami mari kita buat visualisasi
ggplot(data = Top_Country, mapping = aes( x = Count, y = reorder(Country,Count))) +
geom_col(aes(fill = Count)) +
geom_text(aes(label = Count), nudge_x = 20) +
scale_fill_gradient(low = "orangered", high = "orangered4") +
labs(title = "Top Country Netflix User Database",
x = "Count",
y = NULL) +
theme_minimal() +
theme(legend.position = "none",
plot.title = element_text(hjust = 0.5))
Berdasarkan visualisasi Plot bar diketahui bahwa United States dan Spain
memiliki jumlah user terbanyak diikuti oleh Canada.
Kita ingin mengetahui Gender mana yang lebih banyak menggunakan Netflix dan bagaimana kebiasaannya berdasarkan type subscription dan device yang digunakan.
#>
#> Female Male
#> 1257 1243
Gender female lebih banyak 14 user dibandingkan dengan gender male, mari kita bandingkan berdasarkan type subscription
Subs_Gender <- aggregate(x = User.ID ~ Subscription.Type + Gender,
data = netflix,
FUN = length)
names(Subs_Gender) <- c("Subscription", "Gender", "Count")
Subs_Genderggplot(data = Subs_Gender, aes(y = Count, x = reorder(Subscription, Count))) +
geom_col(aes(fill = Gender), position = "dodge") +
labs(title = "Subscription Type by Gender",
x = "Subscription Type",
y = "Count") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
Hasil bar plot user female lebih banyak pada
subscription basic dibanding male, sedangkan pada
subscription jenis standar dan premium user male lebih
banyak walau jumlahnya tidak terlalu signifikan.
selanjutnya, kita akan bandingkan berdasarkan device yang digunakan masing-masing gender
Dev_Gender <- aggregate(x = User.ID ~ Device + Gender,
data = netflix,
FUN = length)
names(Dev_Gender) <- c("Device", "Gender", "Count")
Dev_Genderggplot(data = Dev_Gender, aes(y = Count, x = reorder(Device, Count))) +
geom_col(aes(fill = Gender), position = "dodge") +
labs(title = "Device by Gender",
x = "Device",
y = "Count") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
Device yang paling banyak digunakan gender female adalah
Laptop sedanngkan pada gender male adalah
smartphone
kali ini kita akan melihat distribusi join date para user netflix
ggplot(netflix, aes(x=Join.Date)) +
geom_histogram(bins = 30, fill ="goldenrod2",color="black") +
labs(title = "Distribution of User Join Date",
x = "Year",
y = "Count") +
theme_minimal() +
theme(legend.position = "none",
plot.title = element_text(hjust = 0.5))
User pada data ini paling banyak Join pada rentang Juli 2022 sampai
dengan Desember 2022
United State, Spain dan
Canadastandar dan premium
gender male lebih banyak dibanding femaleJuli 2022 sampai
dengan Desember 2022Demikian hasil dari analisa data user netflix dengan melakukan agregasi serta visualisasi data, terima kasih.