Hi, saya akan mencoba membahas tentang Data Analyst Project: Business Decision Research, ini adalah module terakhir dalam rangkaian Data Analyst Career Track (Python) yang terdapat dalam DQLab, Semoga pembahasan ini bisa membuat saya lebih paham mendalami bidang data ini, mari kita langsung saja :)
Data analytics test ini berisi 2 bagian, teori dan test coding yang masing-masing terdiri dari:
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 toko tersebut. Manajer toko mendefinisikan bahwa customer termasuk 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) dengan data_retail.csv dengan jumlah baris 100.000 baris data.
Berikut tampilan datanya:
data source: https://storage.googleapis.com/dqlab-dataset/data_retail.csv
Field yang ada pada data tersebut antara lain:
Setelah mendapatkan arahan test, saya langsung menuliskan beberapa catatan dari awal pengerjaan hingga selesai agar lebih sistematis, seperti ini:
Importlah dataset dari https://storage.googleapis.com/dqlab-dataset/data_retail.csv dan kemudian inspeksilah dataset tersebut dengan
berikut adalah syntax yang digunakan:
berikut adalah output dari console:
Dua kolom yang menunjukkan terjadinya transaksi tidak bertipe datetime, maka ubahlah kedua kolom tersebut ke tipe data datetime. Kemudian cetaklah kembali 5 data teratas dari dataframe df dan juga tipe data masing-masing kolomnya.
berikut adalah syntax yang digunakan:
berikut adalah output dari console:
*Customer Churn adalah persentase pelanggan yang meninggalkan bisnis atau berhenti menggunakan layanan. Tingkat churn dihitung berdasarkan jumlah pelanggan yang meninggalkan bisnis Anda dalam waktu tertentu
Untuk menentukan churn customers sesuai definisi yang telah diberikan, carilah
Setelah itu cetak lima data teratas dan informasi dataset.
berikut adalah syntax yang digunakan:
berikut adalah output dari console:
karena dilihat dari tampilan data, kolom 'no' dan 'Row_Num' itu sama dan tidak terpakai, sebaiknya kita menghapusnya saja.
berikut adalah syntax yang digunakan:
berikut adalah output dari console:
langkah berikutnya adalah membuat visualisasi data berupa trend of customer acquisition by year dengan meggunakan bar chart. Untuk itu buatlah feature/kolom tambahan yang merupakan tahun dari First_Transaction dan tahun dari Last_Transaction masing-masingnya dengan nama Year_First_Transaction dan Year_Last_Transaction sebelum melakukan visualisasi.
berikut adalah syntax yang digunakan:
berikut adalah outputnya:
Berdasarkan visualisasi bar chart, dapat disimpulkan bahwa number of customer tertinggi diraih pada tahun 2017 sebesar 30000. Sedangkan yang memiliki number of customer terendah terjadi pada tahun 2013.
Visualisasikanlah trend jumlah transaksi per tahunnya dengan menggunakan bar chart.
berikut adalah syntax yang digunakan:
berikut adalah outputnya:
Berdasarkan visualisasi bar chart, number of customer sejalan dengan number of transaction. Hal ini terlihat pada tahun 2017 yakni sama sama meningkat baik transaksi maupun konsumennya. Hal serupa juga dialami dan terjadi pada tahun 2015 sebelumnya.
Dengan menggunakan seaborn pointplot, visualisasikanlah tren dari tahun ke tahun rata-rata jumlah transaksi untuk tiap-tiap produknya.
berikut adalah syntax yang digunakan:
berikut adalah outputnya:
Berdasarkan rata-rata transaksi, beberapa produk mengalami kecenderungan naik-turun. Namun juga konstan seperti produk sepatu
Dari sisi churned customer, khususnya untuk melihat seberapa besar proporsi churned customer untuk tiap-tiap produk dapat diketahui insight-nya melalui pie chart. Visualisasikan pie chartnya untuk keempat produk yang dimaksudkan.
berikut adalah syntax yang digunakan:
berikut adalah outputnya:
Berdasarkan visualisasi pie chart, seperti yang telah kita jelaskan sebelumnya bahwa ngka 0 diwakili logika False (bukan customer churn) dan angka 1 diwakili logika True yang artinya tergolong customer churn. Terlihat bahwa hampir keseluruhan produk memiliki customer churn. Artinya adalah konsumen sudah mulai berhenti untuk menggunakan layanan atau menghentikan pembeliannya (sudah bukan pelanggan). Rentang customer churn keseluruhan produk berkisar 60–68%.
Solusi yang bisa dilakukan: kita bisa memanfaatkan 32–40% yang tergolong kedalam bukan customer churn untuk fokus kepada pelanggan setia produk DQLab Sport Center dengan memfokuskan tenaga, biaya, dan juga waktu pada pelanggan yang sudah terbukti setia.
Selanjutnya akan melakukan 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, maka visualisasikanlah dengan bar chart.
berikut adalah syntax yang digunakan:
berikut adalah outputnya:
Setelah diketahui melalui visualisasi bar chart dalam distribusi kategori transaksi yang dilakukan, ternyata jumlah transaksi mereka hanya terjadi sekali (paling dominan). Sedangkan yang terendah adalah konsumen yang melakukan transaksi 7–10 kali dalam pembeliannya.
Selanjutnya, akan melakukan visualisasi dari distribusi kategorisasi average transaction amount. Kategorisasi ini dilakukan dengan mengelompokkan rata-rata besar transaksi seperti yang diperlihatkan oleh tabel berikut:
Setelah ditambahkan kolom baru untuk kategori ini dengan nama Average_Transaction_Amount_Group, maka visualisasikanlah dengan bar chart.
berikut adalah syntax yang digunakan:
berikut adalah outputnya:
Berdasarkan output visualisasi bar chart, rata-rata besar transaksi terjadi pada rentang angka > 1.000.000 hingga 2.500.000.
Di bagian ini, selanjutnya akan menentukan feature columns dari dataset yang dimiliki, di sini dipilih kolom Average_Transaction_Amount, Count_Transaction, dan Year_Diff. Akan tetapi, kolom terakhir belum ada. Silakan dicreate dahulu kolom Year_Diff ini dan kemudian assign dataset dengan feature columns ini sebagai variabel independent X.
Untuk target tentunya persoalan costumer dengan kondisi churn atau tidak, assign dataset untuk target ini ke dalam variabe dependent y.
berikut adalah syntax yang digunakan:
berikut adalah output dari console:
Setelah variabel independent X dan variabel dependent y selesai dilakukan, maka pecahlah X dan y ke dalam bagian training dan testing. Bagian testing 25% dari jumlah entri data.
Langkah selanjutnya akan membuat model menggunakan Logistic Regression, inisialisasilah model, fit, dan kemudian evaluasi model dengan menggunakan confusion matrix.
Confusion matrix yang telah dihitung sebelumnya dapat divisualisasikan dengan menggunakan heatmap dari seaborn. Untuk itu tampilkanlah visualisasi dari confusion matrix ini.
berikut adalah syntax yang digunakan:
berikut adalah outputnya:
Hitunglah nilai accuracy, precission dan recall berdasarkan nilai target sesungguhnya dan nilai target hasil prediksi.
berikut adalah syntax yang digunakan:
berikut adalah output dari console:
Dalam “dunia” pengenalan pola (pattern recognition) dan temu kembali informasi (information retrieval), precision dan recall adalah dua perhitungan yang banyak digunakan untuk mengukur kinerja dari sistem / metode yang digunakan. Precision adalah tingkat ketepatan antara informasi yang diminta oleh pengguna dengan jawaban yang diberikan oleh sistem. Sedangkan recall adalah tingkat keberhasilan sistem dalam menemukan kembali sebuah informasi.
Sedangkan di “dunia lain” seperti dunia statistika dikenal juga istilah accuray. Accuracy didefinisikan sebagai tingkat kedekatan antara nilai prediksi dengan nilai aktual. Ilustrasi berikut ini memberikan gambaran perbedaan antara accuracy dan precision. Dengan demikian, nilai precision, recall, dan accuracy memiliki nilai yang sama sebesar 0,66668.
Tidak terasa seluruh materi dalam Data Analyst Career Track telah selesai kupelajari dengan baik. Ini adalah permulaan agar aku dapat melangkah menjadi seorang data analyst.
Aku mengingat apa saja kompetensi yang telah aku capai ya dalam Data Analyst Track ini, yaitu
Semangat!!!
Data Analyst Project: Business Decision Research
Pemateri: Wahyu Herlambang, Senior Data Analyst Traveloka
https://github.com/dimasnurulloh/belajar-data