Data Analyst Project: Business Decision Research
DQLab Career Track Module
Hallo semuanya, bertemu lagi dengan saya di module terakhir dari DQLab Career Track Module, yaitu Data Analyst Project: Business Decision Research. Berbeda dari module-module sebelumnya yang lebih banyak menyajikan latihan, kali ini kita akan disuguhkan dengan proyek baru dari Kroma! Tidak hanya itu aja, di sini kita juga akan dipercaya oleh Seja untuk langsung menanganinya. Wah, benar-benar seperti menghadapi ujian rasanya. Akan tetapi, kita tidak perlu kuatir, karena sebelum kita mengerjakan proyek ini, kita akan diberi rincian dari Data Analytics Test sebagai bekal kita dalam mengerjakan proyek ini. Bagaimana rincian tersebut? Daripada penasaran terus, yuk kita intip selengkapnya di bagian awal yang akan kita bahas ini. :)
Proyek dari Kroma
Di awal, kita sudah tahu bahwa proyek yang akan kita kerjakan memiliki rincian dari Data Analytics Test sebagai panduan kita dalam mengerjakan proyek. Adapun Data Analytics Test ini berisi 2 bagian, yaitu teori dan test coding yang masing-masing terdiri dari:
1. Teori
· Konsep Dasar Data Analytics: Tes ini dimaksudkan untuk menguji pemahaman member tentang data analytics.
2. Coding Test
· Data preparation test: Tes ini dimaksudkan untuk menguji kemampuan member dalam melakukan ETL data. Tes ini dapat dibagi lagi menjadi 2, yaitu:
o Data visualization test: Tes ini dimaksudkan untuk menguji kemampuan member dalam hal visualisasi data.
o Basic Stats Method test: Tes ini dimaksudkan untuk menguji kemampuan member dalam melakukan modeling data menggunakan statistika dasar.
Pengantar
Kali ini, kita akan melakukan churn analysis terhadap produk di salah satu cabang di DQLab sport center . Harapannya adalah kita bisa memberikan rekomendasi dan strategi untuk menurunkan churn dari pelanggan toko tersebut. Ingin tahu kronologi dari churn analysis tersebut? Selengkapnya bisa kalian lihat di bagian selanjutnya, ya. :)
Market Research and Recommendation and Visualization Technique for Business Decision Making — Part 1
DQLab sport center adalah toko yang menjual berbagai kebutuhan olahraga, seperti Jaket, Baju, Tas, dan Sepatu. Toko ini mulai berjualan sejak tahun 2013, sehingga sudah memiliki pelanggan tetap sejak lama dan tetap berusaha untuk mendapatkan pelanggan baru sampai saat ini.
Di awal tahun 2019, manajer toko tersebut merekrut junior DA untuk membantu memecahkan masalah yang ada di tokonya, yaitu menurunnya pelanggan yang membeli kembali ke tokonya. Junior DA tersebut pun diberi kepercayaan mengolah data transaksi yang ada di toko tersebut. Manajer toko mendefinisikan bahwa customer sudah bukan disebut pelanggan lagi (churn) ketika dia sudah tidak bertransaksi ke tokonya lagi sampai dengan 6 bulan terakhir dari update data terakhir yang tersedia.
Manajer toko pun memberikan data transaksi dari tahun 2013 sampai dengan 2019 dalam bentuk csv (comma separated value) bernama data_retail.csv dengan jumlah baris mencapai 100.000 baris data.
Berikut tampilan datanya:
Field yang ada pada data tersebut antara lain:
· No
· Row_Num
· Customer_ID
· Product
· First_Transaction
· Last_Transaction
· Average_Transaction_Amount
· Count_Transaction
Market Research and Recommendation and Visualization Technique for Business Decision Making — Part 2
Dari uraian yang dibahas tadi, bisa disimpulkan bahwa manajer toko dan junior DA di salah satu cabang kita meminta bantuan kita untuk mengurus riset pasar mereka berikut dengan data dan persoalan tadi. Sembari mengerjakan, ada baiknya jika kita membuat laporan kerjanya terlebih dahulu agar bisa diketahui proses analisis datanya untuk mengatasi kasus ini. Rincian laporannya bisa kamu lihat di bawah ini:
1. Data preparation test
o Importing data: Melakukan import data_retail.csv ke Python environment.
o Cleansing data: Melakukan pembersihan dan modifikasi data sehingga siap digunakan untuk analisis lebih lanjut.
2. Data visualization test: Mendapatkan insight dari hasil visualisasi yang telah dibuat.
3. Basic stats method test: Mendapatkan insight dari model dan evaluasi model yang sudah dibuat dan diuji.
Importing Data dan Inspection
Kita import dulu dataset dari https://dqlab-dataset.s3-ap-southeast-1.amazonaws.com/ data_retail.csv, kemudian menginspeksi dataset tersebut dengan:
1. mencetak lima data teratas saja,
2. mencetak info dataset.
Jika dibuka, tampilan datanya akan terlihat seperti berikut ini. Adapun semua kolomnya bertipe numerik, kecuali kolom Product. Untuk nilai null, dataset tersebut sama sekali tidak memilikinya sehingga kita tidak perlu lagi melakukan handling terhadap missing value.
Data Cleansing
Jika kita perhatikan dataset itu lebih teliti, ada dua kolom yang menunjukkan terjadinya transaksi, yaitu First_Transaction dan Last_Transaction dan keduanya tidak bertipe datetime. Supaya lebih mempermudah dalam membuat visualisasi, kita akan mengubah kedua kolom tersebut ke menjadi datetime. Untuk sekedar memastikan, kita bisa mencetak kembali 5 data teratas dari dataframe df dan juga tipe data masing-masing kolomnya.
Nah, kedua kolom tadi sudah berubah tipenya jadi datetime. Kini, kita siap untuk melangkah di bagian selanjutnya. :)
Churn Customers
Untuk menentukan churn customers sesuai definisi yang telah diberikan, kita akan mencari kapan transaksi paling terakhir dilakukan. Lalu, kita akan klasifikasikan mana customer yang berstatus churn dan mana yang tidak.
Setelah kita klasifikasikan customernya, maka tiap datanya akan dimasukkan secara otomatis ke dalam sebuah kolom bernama ‘is_churn’ dengan tipe Boolean.
Menghapus Kolom yang Tidak Diperlukan
Di dataset tersebut, ada 2 kolom yang tidak diperlukan, yaitu no dan RowNum. Untuk itu, kita perlu menghapus kolom-kolom tersebut.
Setelah kita cek kembali datanya, terlihat bahwa kolom no dan Row_Num sudah tidak ada lagi. Jadi, kita bisa langsung ke langkah selanjutnya. :)
Customer Acquisition by Year
Setelah semuanya berjalan lancar, langkah berikutnya adalah membuat visualisasi data berupa trend of customer acquisition by year dengan meggunakan bar chart. Untuk itu, kita akan buat dulu feature/kolom tambahan yang merupakan tahun dari First_Transaction dan tahun dari Last_Transaction masing-masing dengan nama Year_First_Transaction dan Year_Last_Transaction sebelum melakukan visualisasi.
Setelah kita buat chartnya, dapat kita lihat jumlah customer saat melakukan transaksi pertamanya dari tahun ke tahun, dengan jumlah customer paling tinggi dicapai pada tahun 2017.
Transaction by Year
Selanjutnya,setelah mengetahui jumlah trend customer untuk tiap tahunnya, kita akan memvisualisasikan trend jumlah transaksi per tahunnya dengan menggunakan bar chart.
Dari sini, bisa kita lihat bahwa jumlah transaksinya sama untuk tahun 2015 dan 2017, namun sempat mengalami sedikit penurunan di tahun 2016. Meskipun transaksi di tahun 2015 cenderung tinggi, namun jumlah customernya cenderung rendah di tahun yang sama (lihat pada grafik di bagian Customer acquisition by year.
Average Transaction Amount by Year
Dengan menggunakan seaborn pointplot, kali ini kita akan memvisualisasikan tren dari tahun ke tahun rata-rata jumlah transaksi untuk tiap-tiap produknya. Berbeda dengan teknik sebelumnya, kita akan menggunakan seaborn pointplot untuk menampilkan transaksi ini.
Di sini, kita dapat mengamati apa saja produk yang dibeli oleh customer tersebut, dimana rata-rata transaksinya yang paling tinggi dicapai oleh Baju dan terjadi pada tahun 2018. Perlu untuk diperhatikan, meskipun transaksi produk Baju sempat mengalami penurunan di tahun 2019, namun produk tersebut selalu menempati urutan tertinggi diantara produk-produk lainnya. Untuk itu, kita bisa melakukan peningkatan lebih lagi terhadap transaksi produk tersebut. Untuk produk Sepatu, kita bisa mencari cara untuk mempertahankannya dikarenakan jumlah transaksinya yang selalu konstan setiap tahunnya.
Proporsi churned customer untuk setiap produk
Dari sisi churned customer, kita ingin melihat seberapa besar proporsi churned customer untuk tiap-tiap produk. Untuk itu, kita perlu mengetahui insight-nya melalui pie chart. Nah, untuk memenuhi ekspetasi ini, kita akan buat visualisasi pie chartnya untuk keempat produk yang dimaksud.
Setelah kita buat pie chartnya, ternyata jumlah churn yang terjadi rata-rata hampir sama untuk semua produknya, dimana lebih banyak customer yang melakukan churn daripada yang tidak churn.
Distribusi kategorisasi count transaction
Pada bagian Transaction by year, kita sudah mengetahui trend jumlah transaksi dari tahun ke tahun, tapi kita masih belum tahu masuk kategori mana transaksi-transaksi tersebut. Nah, supaya lebih spesifik lagi, kita akan buat visualisasi dari distribusi kategorisasi count transaction. Kategorisasi ini dilakukan dengan mengelompokkan jumlah transaksi seperti yang diperlihatkan oleh tabel berikut:
Setelah menambahkan kolom baru untuk kategori ini dengan nama Count_Transaction _Group, kita akan memvisualisasikannya dengan bar chart.
Sehingga, bar chartnya akan menampilkan jumlah customer untuk tiap kategori transaksi seperti berikut ini. Bisa kita lihat bahwa persebaran jumlah customer yang memiliki rentang jumlah transaksi sebanyak 1 kali adalah yang paling tinggi. Hal ini jelas sekali membuktikan ada begitu banyaknya customers yang melakukan churn.
Distribusi kategorisasi average transaction amount
Tadi, kita sudah mengetahui jumlah customer per kategori jumlah transaksinya. Bagaimana jika seandainya kita ingin tahu jumlah customernya per kategori rata-rata transaksinya? Kita bisa membuat visualisasi dari distribusi kategorisasi average transaction amount. Kategorisasi ini dilakukan dengan mengelompokkan rata-rata besar transaksi seperti yang diperlihatkan oleh tabel berikut:
Cara yang dilakukan hampir sama dengan bagian Distribusi kategorisasi count transaction. Setelah menambahkan kolom baru untuk kategori ini dengan nama Average_Transaction_ Amount_Group, maka kita akan visualisasikan ini dengan bar chart.
Ternyata, meskipun banyak customer yang melakukan churn, terlihat bahwa customer paling banyak melakukan transaksi dengan nilai rata-rata transaksi di atas 1000.000 hingga 2.500.000. Itu artinya, customer dengan daya beli ini harus tetap dipertahankan keberadaannya supaya bisa lebih maksimal ke depannya. :)
Feature Columns dan Target
Di bagian ini, kita akan menentukan feature columns dari dataset yang dimiliki. Di sini, kita memilih kolom Average_Transaction_Amount, Count_Transaction, dan Year_Diff sebagai featurenya. Tapi, kolom terakhir ternyata belum ada. Untuk itu, kita perlu create dulu kolom Year_Diff ini, lalu assign datasetnya dengan feature columns ini sebagai variabel independent X. Untuk targetnya, tentunya kita akan memilih persoalan costumer dengan kondisi churn atau tidak. Nah, untuk itu, kita assign dataset untuk target ini ke dalam variabel dependent y. Asumsikan variabel is_churn sudah kita konversi ke dalam numerik sebelumnya.
Split X dan y ke dalam bagian training dan testing
Setelah variabel independent X dan variabel dependent y selesai dibuat, berikutnya kita akan memecah X dan y ke dalam training dan testing, dengan bagian testingnya 25% dari jumlah entri data.
Train, predict dan evaluate
Langkah selanjutnya, kita akan membuat model menggunakan Linear Regression. Inisialisasi modelnya dulu, fit modelnya, kemudian lakukan evaluasi model dengan menggunakan confusion matrix.
Dari evaluasi model yang sudah kita buat ini, sudah terlihat jelas bahwa lebih banyak yang diprediksi benar-benar churn(16666) daripada yang benar-benar tidak churn (1).
Visualisasi Confusion Matrix
Horeee! Setelah menghitung Confusion matrix pada bagian sebelumnya, kini kita dapat memvisualisasikannya dengan heatmap dari seaborn. Langkah-langkahnya yang dilakukan adalah seperti berikut.
Sehingga, tampilan visualisasi dari confusion matrixnya akan tampak seperti ini:
Accuracy, Precision, dan Recall
Oya, setelah kita buat visualisasinya, kita juga bisa menghitung nilai accuracy, precission dan recall nya berdasarkan nilai target sesungguhnya dan nilai target hasil prediksi. Potongan kodenya adalah seperti berikut ini.
Di sini, terlihat bahwa ternyata nilai dari Accuracy, Precision, dan Recallnya adalah sama semua, yaitu 0.67. Ini artinya, prediksi yang kita buat dengan kemampuan model dalam mendeteksi adanya churn adalah sama, meskipun tingkat accuracy nya lumayan kecil.
Ok, sekian dulu pembahasan module Creer Track terakhir ini. Semoga, pembahasan module ini bisa bermanfaat buatt teman-teman sekalian yang saat ini mendalami aplikasi Python untuk keperluan analisis bisnis. See you di sesi berikutnya dan terimakasih sudah menyimak pembahasan dari saya. :)