Analisis Data Ritel pada PT. XYZ
Profil Perusahaan
PT XYZ Tbk didirikan pada bulan November 2013. Sesuai dengan Anggaran Dasar Perusahaan, ruang lingkup kegiatan Perseroan antara lain bergerak dalam bidang perdagangan umum yaitu perdagangan toserba atau minimart (Ezy Mart).
Konsep Ezy Mart diciptakan untuk menyesuaikan perubahan belanja konsumen dari belanja bulanan menjadi belanja mingguan/harian.
Dinamika bisnis ritel terus mengalami perkembangan seiring dengan pertumbuhan segmen middle market. Oleh karena itu, Perseroan perlu melakukan analisis data terkait perkembangan penjualan selama tahun 2014 – 2017, yang bertujuan untuk meningkatkan profit dan rencana pengembangan usaha.
- Sumber Foto Ilustrasi : https://shorturl.at/ackEJ
Tahap Persiapan
Dataset dalam format CSV, maka perlu dilakukan pembacaan (import) ke dalam R dan di olah, agar lebih mudah untuk di analisis.
1. Data Penjualan
- format awal = 'CSV'
- nama file = 'xyz.csv'
- nama object = 'xyz'
- fungsi di R
- membaca data/import = `read.csv()`
- menampilkan data = 'head()' atau 'tail()'
#> Row.ID Order.ID Order.Date Ship.Date Ship.Mode Customer.ID Segment
#> 1 1 CA-2016-152156 11/8/16 11/11/16 Second Class CG-12520 Consumer
#> 2 2 CA-2016-152156 11/8/16 11/11/16 Second Class CG-12520 Consumer
#> 3 3 CA-2016-138688 6/12/16 6/16/16 Second Class DV-13045 Corporate
#> Product.ID Category Sub.Category
#> 1 FUR-BO-10001798 Furniture Bookcases
#> 2 FUR-CH-10000454 Furniture Chairs
#> 3 OFF-LA-10000240 Office Supplies Labels
#> Product.Name Sales Quantity
#> 1 Bush Somerset Collection Bookcase 261.96 2
#> 2 Hon Deluxe Fabric Upholstered Stacking Chairs, Rounded Back 731.94 3
#> 3 Self-Adhesive Address Labels for Typewriters by Universal 14.62 2
#> Discount Profit
#> 1 0 41.9136
#> 2 0 219.5820
#> 3 0 6.8714
2. Cek tipe data
Tahapan ini perlu dilakukan pengecekan tipe data agar pengolahan datanya lebih mudah, efektif dan cepat. Dalam R ada beberapa fungsi untuk melakukan cek tipe data.
2.1. Opsi A
Salah satu fungsi untuk mengecek tipe data, sebagai berikut:
- fungsi di R
- cek tipe data = `str()`
#> 'data.frame': 9994 obs. of 15 variables:
#> $ Row.ID : int 1 2 3 4 5 6 7 8 9 10 ...
#> $ Order.ID : chr "CA-2016-152156" "CA-2016-152156" "CA-2016-138688" "US-2015-108966" ...
#> $ Order.Date : chr "11/8/16" "11/8/16" "6/12/16" "10/11/15" ...
#> $ Ship.Date : chr "11/11/16" "11/11/16" "6/16/16" "10/18/15" ...
#> $ Ship.Mode : chr "Second Class" "Second Class" "Second Class" "Standard Class" ...
#> $ Customer.ID : chr "CG-12520" "CG-12520" "DV-13045" "SO-20335" ...
#> $ Segment : chr "Consumer" "Consumer" "Corporate" "Consumer" ...
#> $ Product.ID : chr "FUR-BO-10001798" "FUR-CH-10000454" "OFF-LA-10000240" "FUR-TA-10000577" ...
#> $ Category : chr "Furniture" "Furniture" "Office Supplies" "Furniture" ...
#> $ Sub.Category: chr "Bookcases" "Chairs" "Labels" "Tables" ...
#> $ Product.Name: chr "Bush Somerset Collection Bookcase" "Hon Deluxe Fabric Upholstered Stacking Chairs, Rounded Back" "Self-Adhesive Address Labels for Typewriters by Universal" "Bretford CR4500 Series Slim Rectangular Table" ...
#> $ Sales : num 262 731.9 14.6 957.6 22.4 ...
#> $ Quantity : int 2 3 2 5 2 7 4 6 3 5 ...
#> $ Discount : num 0 0 0 0.45 0.2 0 0 0.2 0.2 0 ...
#> $ Profit : num 41.91 219.58 6.87 -383.03 2.52 ...
2.2. Opsi B
Terdapat fungsi lain untuk mengecek tipe data, namun perlu menginstal library, seperti dibawah ini:
- library = 'dplyr'
- fungsi di R
- cek tipe data = `glimpse()`
#> Rows: 9,994
#> Columns: 15
#> $ Row.ID <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17…
#> $ Order.ID <chr> "CA-2016-152156", "CA-2016-152156", "CA-2016-138688", "US…
#> $ Order.Date <chr> "11/8/16", "11/8/16", "6/12/16", "10/11/15", "10/11/15", …
#> $ Ship.Date <chr> "11/11/16", "11/11/16", "6/16/16", "10/18/15", "10/18/15"…
#> $ Ship.Mode <chr> "Second Class", "Second Class", "Second Class", "Standard…
#> $ Customer.ID <chr> "CG-12520", "CG-12520", "DV-13045", "SO-20335", "SO-20335…
#> $ Segment <chr> "Consumer", "Consumer", "Corporate", "Consumer", "Consume…
#> $ Product.ID <chr> "FUR-BO-10001798", "FUR-CH-10000454", "OFF-LA-10000240", …
#> $ Category <chr> "Furniture", "Furniture", "Office Supplies", "Furniture",…
#> $ Sub.Category <chr> "Bookcases", "Chairs", "Labels", "Tables", "Storage", "Fu…
#> $ Product.Name <chr> "Bush Somerset Collection Bookcase", "Hon Deluxe Fabric U…
#> $ Sales <dbl> 261.9600, 731.9400, 14.6200, 957.5775, 22.3680, 48.8600, …
#> $ Quantity <int> 2, 3, 2, 5, 2, 7, 4, 6, 3, 5, 9, 4, 3, 3, 5, 3, 6, 2, 2, …
#> $ Discount <dbl> 0.00, 0.00, 0.00, 0.45, 0.20, 0.00, 0.00, 0.20, 0.20, 0.0…
#> $ Profit <dbl> 41.9136, 219.5820, 6.8714, -383.0310, 2.5164, 14.1694, 1.…
3. Ubah & Cek tipe data
Setelah dilakukan pengecekan tipe data, kolom/field yang perlu diubah tipe datanya ke dalam DATE dan FACTOR yaitu:
- Order.Date, Ship.Date –> semula CHR diubah menjadi DATE
- Ship.Mode, Segment, Category, Sub.Category –> semula CHR diubah menjadi FACTOR
3.1. Ubah menjadi DATE
Untuk merubah data dari CHR ke DATE menggunakan fungsi sebagai berikut:
- fungsi di R
- ubah tipe data DATE = `as.Date()`
3.2. Ubah menjadi FACTOR
Untuk merubah data dari CHR ke FACTOR menggunakan fungsi sebagai berikut:
- fungsi di R
- ubah tipe data FACTOR = `as.factor()`
3.3. Cek tipe data
Setelah dilakukan perubahan tipe data, maka perlu dicek kembali tipe datanya, apakah sudah sesuai yang diharapkan
#> 'data.frame': 9994 obs. of 15 variables:
#> $ Row.ID : int 1 2 3 4 5 6 7 8 9 10 ...
#> $ Order.ID : chr "CA-2016-152156" "CA-2016-152156" "CA-2016-138688" "US-2015-108966" ...
#> $ Order.Date : Date, format: "2016-11-08" "2016-11-08" ...
#> $ Ship.Date : Date, format: "2016-11-11" "2016-11-11" ...
#> $ Ship.Mode : Factor w/ 4 levels "First Class",..: 3 3 3 4 4 4 4 4 4 4 ...
#> $ Customer.ID : chr "CG-12520" "CG-12520" "DV-13045" "SO-20335" ...
#> $ Segment : Factor w/ 3 levels "Consumer","Corporate",..: 1 1 2 1 1 1 1 1 1 1 ...
#> $ Product.ID : chr "FUR-BO-10001798" "FUR-CH-10000454" "OFF-LA-10000240" "FUR-TA-10000577" ...
#> $ Category : Factor w/ 3 levels "Furniture","Office Supplies",..: 1 1 2 1 2 1 2 3 2 2 ...
#> $ Sub.Category: Factor w/ 17 levels "Accessories",..: 5 6 11 17 15 10 3 14 4 2 ...
#> $ Product.Name: chr "Bush Somerset Collection Bookcase" "Hon Deluxe Fabric Upholstered Stacking Chairs, Rounded Back" "Self-Adhesive Address Labels for Typewriters by Universal" "Bretford CR4500 Series Slim Rectangular Table" ...
#> $ Sales : num 262 731.9 14.6 957.6 22.4 ...
#> $ Quantity : int 2 3 2 5 2 7 4 6 3 5 ...
#> $ Discount : num 0 0 0 0.45 0.2 0 0 0.2 0.2 0 ...
#> $ Profit : num 41.91 219.58 6.87 -383.03 2.52 ...
4. Cek data kosong
Untuk memastikan hasil pengolahan data sesuai yang diharapkan, maka perlu dilakukan pengecekan kondisi data yang kosong/hilang pada setiap kolom
4.1. Opsi A
Untuk menguji apakah suatu vektor (atau objek lain) mengandung nilai yang hilang
- fungsi di R
- cek nilai kosong/hilang = `anyNA()`
#> [1] FALSE
4.2. Opsi B
Dan fungsi lain untuk menguji apakah suatu vektor (atau objek lain) mengandung nilai yang hilang dan kemudian dijumlahkan
- fungsi di R
- cek nilai kosong/hilang = `is.na()`
- jumlahkan nilai pada kolom = 'colSums()'
#> 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
Berdasarkan pengecekan diatas, tidak ditemukan data yang bernilai kosong
Data Exploration
Proses eksplorasi data untuk mengidentifikasi pola, anomali, hipotesis, hubungan, dan informasi yang tersembunyi di dalam data.
Statistik Sederhana
Dalam menganalisis data, data exploration sangat penting karena dapat memberikan gambaran awal tentang data dan membantu dalam menentukan pendekatan analisis data yang tepat.
- fungsi di R
- statistik sederhan = `summary()`
#> Row.ID Order.ID Order.Date Ship.Date
#> Min. : 1 Length:9994 Min. :2014-01-03 Min. :2014-01-07
#> 1st Qu.:2499 Class :character 1st Qu.:2015-05-23 1st Qu.:2015-05-27
#> Median :4998 Mode :character Median :2016-06-26 Median :2016-06-29
#> Mean :4998 Mean :2016-04-30 Mean :2016-05-03
#> 3rd Qu.:7496 3rd Qu.:2017-05-14 3rd Qu.:2017-05-18
#> Max. :9994 Max. :2017-12-30 Max. :2018-01-05
#>
#> Ship.Mode Customer.ID Segment Product.ID
#> First Class :1538 Length:9994 Consumer :5191 Length:9994
#> Same Day : 543 Class :character Corporate :3020 Class :character
#> Second Class :1945 Mode :character Home Office:1783 Mode :character
#> Standard Class:5968
#>
#>
#>
#> Category Sub.Category Product.Name
#> Furniture :2121 Binders :1523 Length:9994
#> Office Supplies:6026 Paper :1370 Class :character
#> Technology :1847 Furnishings: 957 Mode :character
#> Phones : 889
#> Storage : 846
#> Art : 796
#> (Other) :3613
#> Sales Quantity Discount Profit
#> Min. : 0.444 Min. : 1.00 Min. :0.0000 Min. :-6599.978
#> 1st Qu.: 17.280 1st Qu.: 2.00 1st Qu.:0.0000 1st Qu.: 1.729
#> Median : 54.490 Median : 3.00 Median :0.2000 Median : 8.666
#> Mean : 229.858 Mean : 3.79 Mean :0.1562 Mean : 28.657
#> 3rd Qu.: 209.940 3rd Qu.: 5.00 3rd Qu.:0.2000 3rd Qu.: 29.364
#> Max. :22638.480 Max. :14.00 Max. :0.8000 Max. : 8399.976
#>
Analisa sederhana
Berdasarkan eksplorasi data menggunakan fungsi ‘summary()’ dapat ditampilkan analisa sedarhana sebagai berikut:
- Jumlah data penjualan PT. XYZ
- sebanyak 9.994 baris/data
- Tanggal Pemesanan
- Tgl pertama 3 Januari 2014
- Tgl terakhir 30 Desember 2017
- Tanggal Pengiriman
- Tgl pertama 7 Januari 2014
- Tgl terakhir 5 Januari 2018
- Metode pengiriman terbanyak-terkecil yaitu :
- Standard Class =5.968,
- Second Class = 1.945,
- First Class = 1.538 dan
- Same Day = 543
- Kategori pelanggan terbanyak-te
- pertama dari pelanggan Consumer sebanyak 51% atau 5.191,
- kedua dari pelanggan Corporate sebesar 3.020,
- ketiga dari pelanggan Home Office sebesar 1.783
- Nilai penjualan
- terbesar USD 22,638.480
- dengan rata-rata USD 229.858
- Jumlah diskon terbesar adalah 80%
- Jumlah keuntungan
- terbesar USD 8.399,976
- dengan rata-rata USD 28.657
- namun ada 1 penjualan yang minus (- USD 6,599.978)
Data Explanation
Statistik yang dihasilkan dari PT. XYZ
Grafik
Kategori
Berikut adalah grafik penjualan berdasarkan kategori, dimana penjualan Office Supplies yang terbesar
#> [1] 2121 15
#> [1] 6026 15
#> [1] 1847 15
Segment
Grafik penjualan berdasarkan Segment, dimana penjualan ke Segment Consumer yang terbesar
#> [1] 5191 15
#> [1] 3020 15
#> [1] 1783 15
Pilihan Pengiriman
Jika dilihat dari grafik dibawah ini, metode pengiriman yang terbesar melalui pengiriman ‘Standard Class’ karena adanya ongkos kirim gratis
#> [1] 1538 15
#> [1] 543 15
#> [1] 1945 15
#> [1] 5968 15
Persentase
Berdasarkan tabel dibawah ini, penggunaan metode pengiriman ‘Same Day’ masih kecil dibandingkan ‘First Class’, namun dari sisi biaya lebih besar dan kecepatan tidak terlalu beda jauh.
#> , , = Furniture
#>
#>
#> Consumer Corporate Home Office
#> First Class 1.6409846 1.0406244 0.5903542
#> Same Day 0.6603962 0.2801681 0.2501501
#> Second Class 2.3614169 1.2107264 0.7004203
#> Standard Class 6.4738843 3.9323594 2.0812487
#>
#> , , = Office Supplies
#>
#>
#> Consumer Corporate Home Office
#> First Class 4.5627376 2.9117470 1.6309786
#> Same Day 1.9311587 0.6904142 0.6403842
#> Second Class 6.0336202 3.7222333 1.7710626
#> Standard Class 18.7612568 10.8865319 6.7540524
#>
#> , , = Technology
#>
#>
#> Consumer Corporate Home Office
#> First Class 1.4908945 0.9005403 0.6203722
#> Same Day 0.5803482 0.1701021 0.2301381
#> Second Class 1.8110867 1.1606964 0.6904142
#> Standard Class 5.6333800 3.3119872 1.8811287
Profit
Profit
Profit yang dihasilkan untuk setiap Category
#> Category
#> Furniture Office Supplies Technology
#> 18451.27 122490.80 145454.95
Profit yang dihasilkan untuk setiap Segment
#> Segment
#> Consumer Corporate Home Office
#> 134119.21 91979.13 60298.68
Profit Minus
Furniture
#> [1] 714 15
Office Supplies
#> [1] 886 15
Technology
#> [1] 271 15
Rata2 Sales
Nilai rata-rata Sales untuk setiap Segment
#> Segment Sales
#> 1 Consumer 223.7336
#> 2 Corporate 233.8233
#> 3 Home Office 240.9720
Nilai rata-rata Sales untuk setiap Segment dan Category
#> Segment Category Sales
#> 1 Consumer Furniture 351.3471
#> 2 Corporate Furniture 354.5198
#> 3 Home Office Furniture 336.8251
#> 4 Consumer Office Supplies 116.3902
#> 5 Corporate Office Supplies 126.7453
#> 6 Home Office Office Supplies 115.3090
#> 7 Consumer Technology 427.3395
#> 8 Corporate Technology 444.8558
#> 9 Home Office Technology 535.9767
Rekomendasi
Penjualan terbanyak pada kategori Office Supplies, oleh karena itu perlu ditingkat penjualan untuk kategori Furniture & Technology melalui pemasang iklan dan promosi
Metode pengiriman terbanyak melalui ‘Standard Class’ karena ada promo gratis ongkir. Untuk meningkatkan kepuasan konsumen dengan mempercepat proses pengiriman yang semula 3-4 hari, menjadi 1-2 melalui kerjasama dengan beberapa perusahaan kurir, agar biaya paket pengiriman ‘Second Class’ lebih terjangkau.
Tidak selamanya pemberian diskon yang besar menguntungkan, perlu strategi promo yang tepat untuk tetap ada keuntungan (tidak rugi)