1 Introduction

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

2 Input data & Data Pre-Processing

Persiapkan terlebih dahulu library yang akan digunakan

# for datetime-related data processing
library(lubridate)
# for data wrangling
library(tidyr)
library(dplyr)
# visualization
library(ggplot2)
netflix <- read.csv("data_input/Netflix Userbase.csv")
head(netflix)

Terdapat 10 kolom pada dengan informasi sebagai berikut :

  • User.ID : ID dari user netflix
  • Subscription.Type : Type langganan yang dipilih oleh user, yang menentukan kualitas film yang dapat ditonton
  • Monthly.Revenue : Pendapatan bulanan Netflix atas type langganan yang dipilih oleh user
  • Join.Date : Tanggal bergabungnya user di Netflix
  • Last.Payment.Date : Tanggal pembayaran langganan terakhir
  • Country : Negara User
  • Age : Umur User
  • Gender : Gender User
  • Device :Perangkat yang digunakan oleh User untuk menonton Netflix
  • Plan.Duration : waktu berlangganan

Selanjutnya cek terlebih dahulu type dari data yang kita miliki

str(netflix)
#> '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 :

  • Subscription.Type <- as.factor
  • Join.Date <- Date
  • Last.Payment.Date <- Date
  • Country <- as.factor
  • Gender <- as.factor
  • Device <- as.factor

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

str(netflix)
#> '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

colSums(is.na(netflix))
#>           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

3 Data Exploration

Tahap pertama kita bisa menggunakan fungsi summary() untuk mengetahui resume data secara singkat

summary(netflix)
#>     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 :

  • Subscription Type terbanyak adalah jenis Basic sedangkan yang paling sedikit adalah Premium
  • Umur rata-rata pengguna netflix adalah di usia 39 tahun
  • Antara gender Female dan Male memiliki jumlah yang hampir seimbang

Perlu dilakukan analisa lebih dalam untuk mengetahui informasi lainnya, menggunakan subsetting, grouping serta Visualisasi data

4 Data Analysis and Visualization

4.1 Most Netflix User by Country

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_Country

Agar 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.

4.2 Netflix User Analysis by Gender

Kita ingin mengetahui Gender mana yang lebih banyak menggunakan Netflix dan bagaimana kebiasaannya berdasarkan type subscription dan device yang digunakan.

table(netflix$Gender)
#> 
#> 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_Gender
ggplot(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_Gender
ggplot(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

4.3 Join Date User Netflix

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

5 Conclusion

  • User netflix pada data ini paling banyak terdapat pada negara United State, Spain dan Canada
  • Gender female lebih banyak dibandingkan dengan gender male, namun dalam subscription jenis standar dan premium gender male lebih banyak dibanding female
  • Join date terbanyak pada rentang Juli 2022 sampai dengan Desember 2022

Demikian hasil dari analisa data user netflix dengan melakukan agregasi serta visualisasi data, terima kasih.