1 GENERAL BRIEF

Ini adalah Learning By Building Project untuk materi P4DS. Data yang digunakan untuk analisis ini adalah laporan penjualan dari tech shop dalam durasi 3 bulan (Januari - Maret). Pada data ini terdapat informasi tentang Order ID, Product, Quantity Order, Price, Order Date, dan Purchase Address. Analisis ini akan dipisahkan menjadi 5 bagian:

  1. Membaca dan periksa data
  2. Data Cleansing
  3. Data eksplorasi
  4. Kesimpulan

Mari telusuri hasil dari data 3 bulan ini.

1.1 Pertanyaan dalam bisnis

Sebelum melangkah lebih jauh, memiliki tujuan yang jelas adalah suatu keharusan dalam analisis. Ada beberapa pertanyaan bisnis sebagai tujuan utama kita yang harus kita jawab.

  1. Berapa harga rata-rata untuk setiap barang di toko teknologi ini?
  2. Bagaimana kondisi penjualan secara umum? Apakah ini baik atau buruk?
  3. Bagaimana detail penjualan setiap bulannya?
  4. Jika pemilik ingin membuat program diskon, hari apa yang terbaik untuk program diskon?
  5. Jika pemilik toko ingin melakukan perluasan, wilayah/wilayah mana yang akan Anda rekomendasikan?

2 Membaca dan periksa data

Pertama, mari kita baca datanya. Data asli dibagi menjadi 3 bagian, mari kita baca dan buat menjadi satu objek.

# MEMBACA DATA
janu <- read.csv("data_input/Sales_January_2019.csv")
febu <- read.csv("data_input/Sales_February_2019.csv")
mare <- read.csv("data_input/Sales_March_2019.csv")

sales <- rbind(janu,febu,mare)

3 Pembersihan Data

3.1 Cek tipe data

Mari kita amati tipe datanya, dan ubah menjadi tipe yang cocok.

str(sales)
## 'data.frame':    36985 obs. of  6 variables:
##  $ Order.ID        : chr  "141234" "141235" "141236" "141237" ...
##  $ Product         : chr  "iPhone" "Lightning Charging Cable" "Wired Headphones" "27in FHD Monitor" ...
##  $ Quantity.Ordered: chr  "1" "1" "2" "1" ...
##  $ Price.Each      : chr  "700" "14.95" "11.99" "149.99" ...
##  $ Order.Date      : chr  "01/22/19 21:25" "01/28/19 14:15" "01/17/19 13:33" "01/05/19 20:33" ...
##  $ Purchase.Address: chr  "944 Walnut St, Boston, MA 02215" "185 Maple St, Portland, OR 97035" "538 Adams St, San Francisco, CA 94016" "738 10th St, Los Angeles, CA 90001" ...

3.2 Mari kita ubah dengan tipe data yang sesuai

#mengkopi data dari data aslinya
sales_clean <- sales

#merubah tipe data
sales_clean$Quantity.Ordered <- as.integer(sales_clean$Quantity.Ordered)
## Warning: NAs introduced by coercion
sales_clean$Price.Each <- as.numeric(sales_clean$Price.Each)
## Warning: NAs introduced by coercion
sales_clean$Product <- as.factor(sales_clean$Product)
sales_clean$Order.Date <- as.POSIXct(sales_clean$Order.Date, format = "%m/%d/%y %H:%M")

Periksa tipe data setelah konversi.

str(sales_clean)
## 'data.frame':    36985 obs. of  6 variables:
##  $ Order.ID        : chr  "141234" "141235" "141236" "141237" ...
##  $ Product         : Factor w/ 21 levels "","20in Monitor",..: 12 15 21 4 21 7 3 19 9 8 ...
##  $ Quantity.Ordered: int  1 1 2 1 1 1 1 1 1 1 ...
##  $ Price.Each      : num  700 14.9 12 150 12 ...
##  $ Order.Date      : POSIXct, format: "2019-01-22 21:25:00" "2019-01-28 14:15:00" ...
##  $ Purchase.Address: chr  "944 Walnut St, Boston, MA 02215" "185 Maple St, Portland, OR 97035" "538 Adams St, San Francisco, CA 94016" "738 10th St, Los Angeles, CA 90001" ...

3.3 Cek nilai yang hilang

Mari amati data kita, dan periksa apakah ada nilai yang hilang.

colSums(is.na(sales_clean))
##         Order.ID          Product Quantity.Ordered       Price.Each 
##                0                0              164              164 
##       Order.Date Purchase.Address 
##              164                0

Ada 164 nilai yang hilang di kolom Order.Date. Mari kita lihat lebih dalam.

isna_data <- is.na(sales_clean)

Data dengan nilai yang hilang adalah data kosong (tanpa informasi), tidak apa-apa jika kita membuang barisnya.

sales_clean <- na.omit(sales_clean)

anyNA(sales_clean)
## [1] FALSE

Sekarang data tidak memiliki baris dengan nilai yang hilang.

4 Eksplorasi Data

Setelah kita mendapatkan data yang bersih, kita dapat memproses data tersebut untuk mendapatkan insight darinya. Kita dapat menggunakan summary() untuk mendapatkan wawasan cepat dari data kita.

summary(sales_clean)
##    Order.ID                             Product      Quantity.Ordered
##  Length:36821       USB-C Charging Cable    : 4455   Min.   :1.000   
##  Class :character   Lightning Charging Cable: 4216   1st Qu.:1.000   
##  Mode  :character   AAA Batteries (4-pack)  : 4051   Median :1.000   
##                     AA Batteries (4-pack)   : 3990   Mean   :1.123   
##                     Wired Headphones        : 3702   3rd Qu.:1.000   
##                     Apple Airpods Headphones: 3132   Max.   :7.000   
##                     (Other)                 :13275                   
##    Price.Each        Order.Date                     Purchase.Address  
##  Min.   :   2.99   Min.   :2019-01-01 03:07:00.00   Length:36821      
##  1st Qu.:  11.95   1st Qu.:2019-01-30 12:38:00.00   Class :character  
##  Median :  14.95   Median :2019-02-21 12:45:00.00   Mode  :character  
##  Mean   : 184.37   Mean   :2019-02-19 13:28:53.86                     
##  3rd Qu.: 150.00   3rd Qu.:2019-03-13 09:14:00.00                     
##  Max.   :1700.00   Max.   :2019-04-01 03:21:00.00                     
## 

Dari ringkasan ini, kita dapat berasumsi bahwa: 1. Ada 36821 transaksi dari Januari hingga Maret 2. Barang termurah yang dijual di toko teknologi ini adalah $2,99 dan yang termahal adalah $1700 - Kami akan mengamati harga untuk setiap item nanti. 3. Produk kuantitas tertinggi yang dijual adalah Kabel Pengisi Daya USB-C - Mungkin orang cenderung membeli kabel charger, karena merupakan salah satu kabel universal yang dapat mengisi daya setiap perangkat yang kita miliki dan tentunya akan lebih baik jika ada cadangan, atau mungkin harga kabel charger cukup terjangkau di toko ini.

4.1 Harga Rata-Rata untuk Setiap Item

# agregasi data
product_price <- aggregate( x = Price.Each ~ Product, data = sales_clean, FUN = mean)

# membuat salinan data secara decending
product_price_ordered <- order(product_price$Price.Each,decreasing = TRUE)
product_price[product_price_ordered,]

Dari tabel agregat tersebut, kita mengetahui bahwa produk yang paling mahal adalah Laptop Macbook Pro, dan barang yang paling murah adalah Baterai AAA (4-pack)

4.2 Bagaimana Kondisi Penjualan di Tech Shop?

Untuk menjawab pertanyaan ini, kita membutuhkan kolom tambahan untuk total penjualan di setiap transaksi. Kolom total_sales ini bisa kita buat dengan mengalikan Price.Each dan Quantity.Ordered

sales_clean$total_sales <- sales_clean$Price.Each * sales_clean$Quantity.Ordered
head(sales_clean)

Sekarang kami memiliki informasi total penjualan untuk setiap transaksi. Mari kita hitung berapa penghasilan toko dalam 3 bulan.

sum(sales_clean$total_sales)
## [1] 6827880

Jika kita mengasumsikan mata uang yang digunakan dalam data adalah USD, maka dalam 3 bulan toko teknologi tersebut telah memperoleh penjualan kumulatif sebesar $6.827.880.

4.3 Bagaimana Kondisi Penjualan Toko tiap waktu nya?

Untuk menjawab pertanyaan ini, kita harus membuat kolom ekstra yang berisi informasi tentang Hari dan Bulan. Untungnya kami memiliki informasi waktu untuk setiap transaksi. Mari ekstrak informasi dari kolom Order.Date. Untuk membantu proses kami, kami akan menggunakan paket lubridate.

library(lubridate)
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
sales_clean$monthname <- month(sales_clean$Order.Date, label = TRUE, abbr = F)
sales_clean$dayname <- wday(sales_clean$Order.Date, label = T)
head(sales_clean)

Sekarang kita bisa membuat tabel agregasi untuk total penjualan setiap bulan atau setiap hari.

4.3.1 Sales Bulanan

monthly_sales <- 
aggregate(x = total_sales~monthname, data = sales_clean, FUN = sum)
monthly_sales

Agar lebih mudah, mari gunakan visualisasi sederhana untuk membandingkan penjualan di setiap bulan.

barplot(height=monthly_sales$total_sales, names=monthly_sales$monthname,xlab = " TOTAL PENJUALAN PERBULAN", border="#69b3a2", col= c("green", "yellow", "red"))

Dari tabel dan grafik diketahui bahwa: - Penjualan dari Januari hingga Maret meningkat - Total penjualan tertinggi adalah pada bulan Maret

4.3.2 Mari kita periksa transaksi harian, apakah ada hari dengan transaksi lebih banyak dari hari lainnya?

dailysales <- data.frame(xtabs(formula = ~dayname, data = sales_clean))
dailysales
# pENJUALAN HARIAN BERDASARKAN FREKUENSI
daily_ordered <- order(dailysales$Freq, decreasing = T)
dailysales <- dailysales[daily_ordered,]
dailysales
barplot(dailysales$Freq, names=dailysales$dayname, xlab = " TOTAL TRANSAKSI PER HARI", col=c("red", "orange", "yellow", "green", "blue", "pink", "purple"))

Dari data tersebut kita mengetahui bahwa: - Orang cenderung berbelanja di akhir pekan (Sabtu dan Minggu)

4.4 Mari kita cek transaksi tiap kota

Pertama, kita harus mengekstrak informasi wilayah dari kolom Purchase.Addres, dan menetapkan wilayah kolom baru di dalamnya.

library(stringr)
sales_clean$region <- word(sales_clean$Purchase.Address, 2, sep = fixed(","))
sales_clean$region <- trimws(sales_clean$region, which = c("left"))
sales_clean$region <- as.factor(sales_clean$region)
head(sales_clean)

Sekarang kita bisa membuat tabel agregasi berdasarkan kota masing-masing.

region_transaction <- data.frame(xtabs(formula = ~region, data = sales_clean))
region_transaction_ordered <- order(region_transaction$Freq, decreasing=TRUE)
region_transaction <- region_transaction[region_transaction_ordered,]
region_transaction
barplot(region_transaction$Freq, names=region_transaction$region, xlab = " TOTAL TRANSAKSI PER KOTA", col=c("red", "orange", "yellow", "green", "blue", "pink", "purple"), horiz = F)

Dari data tersebut diketahui bahwa: - Total transaksi kota San Francisco adalah yang tertinggi, tercatat lebih dari 8000 transaksi dalam 3 bulan.

5 Kesimpulan

Kami memulai analisis kami dengan pertanyaan, sekarang mari kita jawab

  1. Kami sudah membuat tabel harga rata-rata untuk setiap item. Barang termahal adalah laptop macbook pro, dan yang termurah adalah Baterai AAA (4-pack)
  2. Dapat dikatakan kondisi penjualan dalam 3 bulan sangat baik dengan total penjualan kumulatif $6.827.880.
  3. Total penjualan meningkat dari Januari hingga Maret. Tercatat pada bulan Maret total penjualan sebesar $2.807.100,38.
  4. Masyarakat cenderung berbelanja pada akhir pekan (Sabtu dan Minggu) dan tercatat transaksi terendah terjadi pada hari Senin. Mungkin jika kita membuat program diskon di hari Sabtu, Minggu dan Senin (3 hari berturut-turut) akan membuat total transaksi di akhir pekan semakin tinggi dan meningkatkan total transaksi di hari Senin.
  5. Berdasarkan transaksi di setiap kota, San Francisco tercatat sebagai kota dengan total transaksi tertinggi, diikuti oleh Los Angeles. Mungkin 2 wilayah ini bisa dianggap sebagai tempat terbaik untuk memulai ekspansi.

Itu akan menjadi ringkasan dari laporan analisis kami. Penelitian lebih lanjut dengan data yang lebih lengkap dan metode analisis yang tepat sangat mungkin dilakukan.