Visualisasi data dalam dunia bisnis sangatlah penting. Dengan membuat visualisasi data yang baik dan tepat, kita akan mendapatkan insights yang dapat menjawab pertanyaan-pertanyaan bisnis, serta menentukan action selanjutnya.

Dalam LBB ini, akan divisualisasikan data dari dataset retail yang memiliki 16 variabel untuk seorang Asisten Manager dari category Office suppliesyang akan melakukan evaluasi terhadap penjualan di catery-nya.

1 Memanggil library

library(ggplot2)
library (lubridate)
library(scales)
library(dplyr)

2 Persiapan data

2.1 Read data and check missing values

retail <- read.csv(file = "retail.csv")
head(retail)
colSums(is.na(retail))
#>       Row.ID     Order.ID   Order.Date    Ship.Date    Ship.Mode  Customer.ID 
#>            0            0            0            0            0            0 
#>      Segment   Product.ID     Category Sub.Category Product.Name        Sales 
#>            0            0            0            0            0            0 
#>     Quantity     Discount       Profit 
#>            0            0            0

2.2. Mengubah tipe data

Note: Persiapan data tetap dibuat detil agar saat dibutuhkan, data sudah siap.

retail$Ship.Mode = as.factor(retail$Ship.Mode)
retail$Segment = as.factor(retail$Segment)
retail$Product.ID = as.factor(retail$Product.ID)
retail$Category = as.factor(retail$Category)
retail$Sub.Category =  as.factor(retail$Sub.Category)
retail$Product.Name = as.factor(retail$Product.Name)

# Mengubah data tanggal menggunakan lubridate
retail$Order.Date <-  mdy(retail$Order.Date)
retail$Ship.Date <- mdy(retail$Ship.Date)

head(retail)

3. Pertanyaan bisnis

3.1 Berapa kontribusi penjualan dari category Office supllies terhadap total sales selama tahun 2017?

# Ambil data tahun pakai Order.Date

retail$Order.Year <- year(retail$Order.Date)

head(retail)
summary(retail$Order.Year)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>    2014    2015    2016    2016    2017    2017
retail2017 <- retail[retail$Order.Year == 2017,]
retail2017_prop <- 
  retail2017 %>% 
  group_by(Category) %>% 
  summarise(sum_sales = sum(Sales)) %>% 
  arrange(desc(sum_sales))

retail2017_prop

3.1.1 Plot

plot1 <- ggplot(data = retail2017_prop, 
       mapping = aes(x = reorder(Category, sum_sales), 
                     y = sum_sales,
                     )) + 
  geom_col(aes(fill=count_sales), color="red", fill="red") +
  #scale_fill_gradient(low = "red", high = "black") +
  labs(
    title = "Total Sales by Category",
    y = "Sales (USD)",
    x = ""
  ) +
  theme_minimal()+
  scale_y_continuous(labels = comma)

plot1

Grafik di atas menunjukkan bahwa Office Supplies memberikan kontribusi sales terbesar kedua setelah Technology

3.2 Di category Office Supplies, Sub.Category apa yang paling banyak dibeli dilihat dari Quantity nya?

retail2017_office <- 
  retail2017 %>% 
  group_by(Sub.Category) %>% 
  summarise(sum_quantity = sum(Quantity)) %>% 
  arrange(desc(sum_quantity))


retail2017_office

3.2.1 Plot

plot2 <- ggplot(data = retail2017_office, 
       mapping = aes(x = sum_quantity, 
                     y = reorder(Sub.Category, sum_quantity))) + 
  geom_col(aes(fill = sum_quantity), show.legend = FALSE) +
  #geom_vline(aes(xintercept = mean(Freq)), 
   #          col = "hotpink") + #memberikan garis lurus vertikal berdasarkan rata2 Freq
  scale_fill_gradient(low = "red", high = "black") +
  geom_label(aes(label = comma(sum_quantity)), size = 3) +
  labs(
    title = "Quantity by Sub Category",
    subtitle = "Office Supplies in 2017",
    y = "",
    x = "Quantity"
  ) +
  theme_minimal() +
  scale_x_continuous(labels = comma)+
  theme(
    axis.title.y = element_text(angle = 0, vjust = 0.5)
)
    
  
plot2

Grafik di atas menunjukkan jumlah items terjual dari Category Office Supplies. Binders adalah item yang paling banyak dibeli selama tahun 2017. Hal ini dapat membantu bagian purchasing untuk membuat proyeksi inventory untuk tahun berikut.

3.3 Bagaimana proporsi pembelian dari tiap Segment di masing-masing Sub.Category?

retail2017_segment <- 
  retail2017 %>% 
  filter(Category == "Office Supplies") %>%
  group_by(Sub.Category, Segment) %>% 
  summarise(sum_quantity = sum(Quantity))
  

retail2017_segment

3.3.1 Plot

plot3 <- ggplot(data = retail2017_segment, aes(x = sum_quantity, y = reorder(Sub.Category, sum_quantity))) +
  geom_col(aes(fill = Segment), pos = "fill") +
  labs(
    title = "Purchase Proportion per Segment",
    subtitle = "Sub Category vs Segment",
    caption  = "",
    y = "Sub Category",
    x = NULL
  ) +
  theme(
    legend.position = "top", #untuk mengubah posisi legenda 
    legend.title = element_blank() #menghilangkan title legend
  )

plot3

Visualisasi di atas menunjukkan bahwa di setiap items sub category, proporsi pembelian paling banyak berasal dari segment consumer. Informasi ini bisa digunakan untuk memberi usulan kegiatan promosi yang ditujukan untuk segment tertentu agar penjualan meningkat.

4. Kesimpulan

  1. Category Office Supplies memberikan kontribusi sales sebesar 246,097 USD selama tahun 2017, dan merupakan yang terbesar kedua setelah category Technology.
  2. Quantity setiap Sub Category yang terjual di tahun 2017 pada plot2 dapat diserahkan ke bagian purchasing and inventory agar mereka dapat membuat proyeksi inventory dengan baik. Binders adalah item yang terjual paling banyak di tahun 2017.
  3. Dengan melihat proporsi pembelian dari setiap segment di plot3, dapat dipertimbangkan kegiatan promosi untuk segment Home Office, agar penjualannya meningkat. Loyalty programs juga bisa dilakukan untuk segment Consumer yang memberikan proporsi paling besar dalam penjualan