Dataset Sakila merupakan database simulasi rental film yang disediakan oleh MySQL. Dataset ini memiliki berbagai tabel relasional seperti film, customer, payment, rental, inventory, category, dan store. Melalui analisis data ini, perusahaan rental film dapat memahami kategori film paling menguntungkan perilaku pelanggan pola transaksi strategi peningkatan pendapatan dan loyalitas customer
Insight utama yang diambil dalam laporan ini adalah:
Kategori Film dengan Jumlah Rental Tertinggi Belum Tentu Menghasilkan Pendapatan Terbesar”
library(DBI)
library(odbc)
## Warning: package 'odbc' was built under R version 4.5.2
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.5.2
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.2
library(knitr)
## Warning: package 'knitr' was built under R version 4.5.2
con <- dbConnect(
odbc(),
Driver = "MySQL ODBC 8.0 ANSI Driver",
Server = "127.0.0.1",
Database = "sakila",
UID = "root",
PWD = "141206",
Port = 3306
)
query <- "
SELECT
c.name AS category,
p.amount,
r.rental_id
FROM payment p
JOIN rental r
ON p.rental_id = r.rental_id
JOIN inventory i
ON r.inventory_id = i.inventory_id
JOIN film f
ON i.film_id = f.film_id
JOIN film_category fc
ON f.film_id = fc.film_id
JOIN category c
ON fc.category_id = c.category_id
"
data_sakila <- dbGetQuery(con, query)
head(data_sakila)
## category amount rental_id
## 1 Action 0.99 10895
## 2 Action 0.99 12268
## 3 Action 0.99 3150
## 4 Action 3.99 5072
## 5 Action 1.99 9080
## 6 Action 1.99 14603
str(data_sakila)
## 'data.frame': 16044 obs. of 3 variables:
## $ category : chr "Action" "Action" "Action" "Action" ...
## $ amount : num 0.99 0.99 0.99 3.99 1.99 1.99 0.99 0.99 0.99 0.99 ...
## $ rental_id: int 10895 12268 3150 5072 9080 14603 588 2867 6030 7788 ...
Berdasarkan hasil str(data_sakila), dataset terdiri dari beberapa variabel utama yang digunakan untuk menganalisis transaksi rental film pada database Sakila. Variabel yang digunakan antara lain: category bertipe karakter (chr) yang menunjukkan kategori atau genre film. amount bertipe numerik (num) yang menunjukkan jumlah pembayaran pada setiap transaksi rental. rental_id bertipe integer (int) yang berfungsi sebagai identitas unik setiap transaksi rental. Struktur dataset menunjukkan bahwa data telah tersusun dengan format yang sesuai untuk analisis statistik dan visualisasi. Tipe data numerik pada variabel amount memungkinkan dilakukan perhitungan seperti rata-rata, total pendapatan, dan korelasi. Sementara variabel kategori dapat digunakan untuk pengelompokan data berdasarkan genre film.
summary(data_sakila)
## category amount rental_id
## Length:16044 Min. : 0.000 Min. : 1
## Class :character 1st Qu.: 2.990 1st Qu.: 4014
## Mode :character Median : 3.990 Median : 8026
## Mean : 4.201 Mean : 8025
## 3rd Qu.: 4.990 3rd Qu.:12037
## Max. :11.990 Max. :16049
Berdasarkan hasil summary(data_sakila), terlihat gambaran umum data transaksi rental film. Variabel amount menunjukkan variasi pembayaran pelanggan melalui nilai minimum, maksimum, median, dan rata-rata transaksi. Sementara variabel category menunjukkan beragam kategori film yang tersedia dalam dataset. Ringkasan ini membantu memahami pola umum transaksi sebelum dilakukan analisis lebih lanjut pada database Sakila.
kategori_summary <- data_sakila %>%
group_by(category) %>%
summarise(
jumlah_rental = n(),
total_pendapatan = sum(amount),
rata_pembayaran = mean(amount)
) %>%
arrange(desc(jumlah_rental))
kategori_summary
## # A tibble: 16 × 4
## category jumlah_rental total_pendapatan rata_pembayaran
## <chr> <int> <dbl> <dbl>
## 1 Sports 1179 5314. 4.51
## 2 Animation 1166 4656. 3.99
## 3 Action 1112 4376. 3.94
## 4 Sci-Fi 1101 4757. 4.32
## 5 Family 1096 4226. 3.86
## 6 Drama 1060 4587. 4.33
## 7 Documentary 1050 4218. 4.02
## 8 Foreign 1033 4271. 4.13
## 9 Games 969 4281. 4.42
## 10 Children 945 3656. 3.87
## 11 Comedy 941 4384. 4.66
## 12 New 940 4352. 4.63
## 13 Classics 939 3640. 3.88
## 14 Horror 846 3723. 4.40
## 15 Travel 837 3550. 4.24
## 16 Music 830 3418. 4.12
Tabel di atas menunjukkan jumlah rental pada setiap kategori film, total pendapatan yang dihasilkan, serta rata-rata pembayaran pelanggan. Melalui data tersebut dapat diketahui bahwa kategori dengan jumlah rental tinggi belum tentu menghasilkan total pendapatan paling besar.
ggplot(
kategori_summary,
aes(
x = reorder(category, jumlah_rental),
y = jumlah_rental,
fill = total_pendapatan
)
) +
geom_col() +
coord_flip() +
labs(
title = "Jumlah Rental dan Pendapatan per Kategori Film",
x = "Kategori Film",
y = "Jumlah Rental",
fill = "Total Pendapatan"
) +
theme_minimal()
Berdasarkan visualisasi di atas, terlihat bahwa beberapa kategori film memiliki jumlah rental yang tinggi, tetapi tidak selalu menghasilkan total pendapatan terbesar.
Hal ini menunjukkan bahwa banyaknya transaksi rental tidak selalu berbanding lurus dengan keuntungan yang diperoleh perusahaan. Faktor seperti harga rental dan pola pembayaran pelanggan juga memengaruhi total pendapatan.
Hubungan antara jumlah rental dan total pendapatan dapat dianalisis menggunakan korelasi Pearson berikut Keterangan:
correlation <- cor(
kategori_summary$jumlah_rental,
kategori_summary$total_pendapatan
)
correlation
## [1] 0.8486797
Nilai korelasi menunjukkan hubungan antara jumlah rental dan total pendapatan pada setiap kategori film. Jika nilai korelasi mendekati 1, maka hubungan keduanya kuat dan positif. Namun apabila tidak terlalu tinggi, maka jumlah rental bukan satu-satunya faktor yang menentukan besarnya pendapatan perusahaan. Hal ini menunjukkan bahwa kategori dengan transaksi rental tinggi belum tentu memberikan kontribusi pendapatan terbesar.
Kategori film yang paling sering dirental tidak selalu menjadi kategori dengan pendapatan terbesar.
Insight ini menunjukkan bahwa perusahaan tidak hanya perlu fokus pada jumlah transaksi, tetapi juga perlu mempertimbangkan profitabilitas setiap kategori film.
Berdasarkan hasil analisis, perusahaan rental film dapat menerapkan strategi berikut: memprioritaskan kategori film dengan profitabilitas tinggi, mengoptimalkan harga rental pada kategori populer, meningkatkan promosi pada kategori dengan potensi pendapatan besar, dan mengevaluasi kategori yang memiliki banyak transaksi tetapi pendapatan rendah.
Berdasarkan hasil analisis dan visualisasi data, dapat disimpulkan bahwa: jumlah rental berbeda pada setiap kategori film, kategori dengan jumlah rental tertinggi belum tentu menghasilkan pendapatan terbesar, total pendapatan dipengaruhi oleh beberapa faktor selain frekuensi rental, sehingga perusahaan perlu mempertimbangkan profitabilitas kategori film dalam pengambilan keputusan bisnis. Analisis ini menunjukkan bahwa pengolahan data menggunakan R Markdown dapat membantu perusahaan memahami pola transaksi pelanggan dan mendukung strategi bisnis berbasis data.