Praktik Cohort Analisis menggunakan Python

Praktik ini menggunakan Google Colab dan menggunakan bahasa Python.

Dataset yang digunakan berasal dari Kaggle : https://www.kaggle.com/datasets/carrie1/ecommerce-data?resource=download

Cohort adalah sekumpulan objek yang dikelompokan berdasarkan karakteristik yang serupa.

Cohort Analysis adalah proses analisis digunakan untuk memahami perubahan user engagement dari waktu ke waktu.

Berikut langkah-langkah analisi cohort menggunakan google colab:

1. Upload dan menampilkan data.

Dataset yang sudah di download dari Kaggle tersebut maka bisa di upload dengan cara :

1.       Buka google colab dan klik pada Folder


2.       Klik ikon “Upload File” lalu silahkan pilih file e-commerce(file dataset yang sudah di download, biasanya hasilnya masih zip maka harus di ekstark terlebih dahulu). Mohon ditunggu sampai dataset terupload dengan baik.

3.       Ketika data sudah berhasil terupload, maka Namanya akan berubah menjadi “data.csv” (csv merupakan jenis file, atau kepanjangan dari Comma Separated Values).

4.       Setelah terupload maka langkah selanjutnya adalah menampilkan data.

 


Import pandas as pd

Import numpy as np

 

Data=pd.read_csv(‘data.csv’, engine=’python’, encoding=’ISO-8859-1’)

Data.head()

 

Ket :

- Pandas dan Numpy merupakan library yang akan digunakan dalam praktik ini.

- “Data.csv” merupakan file yang diupload pada step ke 3

- “Data =” adalah perumpamaan (istilah singkat) apabila ingin memanggil data e-commerce tersebut pada tahap selanjutnya ketika ingin memanggil data e-commerce hanya perlu menuliskan “data” saja tanpa harus menulis panjang lebar.

- Data.head() adalah codingan ketika ingin menampilkan 5 data teratas dari data tersebut. 


Hasilnya menajdi :



2. Reformat Timestamp

Reformat TimeStamp  diperlukan dalam pembuatan cohort analysis karena data yang diambil biasanya tersedia dalam format waktu yang lebih detail seperti bulanan, mingguan atau bahkan harian. Jika data dalam format waktu ini tidak direformat maka akan dulit untuk mengelompokkan pengguna ke dalam kohor berdasarkan bulan atau minggu tertentu, yang merupakan bagian penting dari analisis kohor.

Codingan untuk melakukan reformat :

import dateutil

from datetime import datetime as dt

from pytz import utc


data['datetime']=data['InvoiceDate'].apply(lambda x:dateutil.parser.parse(x).timestamp())

data['month'] = data['datetime'].apply(lambda x: dt.fromtimestamp(x,utc).month)

data['year'] = data['datetime'].apply(lambda x: dt.fromtimestamp(x,utc).year)

#untuk menampilkan data

data.head()



hasilnya adalah




3. Membuat Cohort

Berikut adalah codingan membuat cohort 

#'AUG 2010'

#'2010 AUG'

#AUG 2010 -> 201008

data['cohort'] = data.apply(lambda row: (row['year']*100) + (row['month']), axis =1)

#2010*100 = 201000

#aug -> 201000 + 08 = 201008

cohorts = data.groupby('CustomerID')['cohort'].min().reset_index()

cohort.columns = ['CustomerID', 'first_cohort']

data = data.merge(cohorts, on='CustomerID', how='left')


#untuk menampilkan data

data.head()



hasilnya adalah 


4. Membuat Header untuk setiap Cohort

Membuat header untuk setiap cohort berguna untuk memberikan konteks dan informasi yang lebih jelas tentang cohort yang sedang dianalisis.

Berikut adalah codingan untuk membuat header pada setiap cohort :

headers = data['cohort'].value_counts().reset_index()

headers.columns = ['Cohorts', 'Count']

headers.head()

headers = headers.sort_values(['Cohorts'])['Cohorts'].to_list()


#untuk menunjukan hasil header

headers


hasilnya adalah 



5. Pivot data berdasarkan Cohort

Melakukan pivot data berdasarkan cohort berguna untuk memperoleh informasi lebih terperinci tentang karakteristik pelanggan dan kinerja bisnis pada setiap cohort.

menampilkan tabel data dengan coding 

data.head()


data.dropna(inplace=True)

data.dropna(inplace.=True) adalah fungsi pada library pandas di Python yang digunakan untuk menghapus baris atau kolom yang memiliki nilai null atau NaN (not a number). Parameter inplace=True artinya perubahan dilakukan pada data asli tidak dibuat salinan data baru.

data['cohort_distance'] = data.apply(lambda row:(headers.index(row['cohort'] - headers.index(row['first_cohort'])) if (row['first_cohort'] !=0 and row['cohort'] !=0 else np.nan, axis=1)

kode tersebut merupakan implementasi terkait dengan perhitungan jarak atau selisih antara tanggan bergabung pertama (first_cohort) dengan tanggal bergabung kembali(cohort).

'cohort_distance' berfungsi untuk menambahkan kolom baru dimana setiap barus dihitung dengan rumus yang ada di dalam fungsi lambda.

#untuk menampilkan data

data.head ()

data.dropna(inplace=True)

data['cohort_distance'] = data.apply(lambda row:
(headers.index(row['cohort']) - headers.index(row['first_cohort']))
if (row['first_cohort'] != 0 and row['cohort'] != 0)
else np.nan, axis=1)

data.head()

hasilnya 



cohort_pivot = pd.pivot_table(data,
index='first_cohort',
columns='cohort_distance',
values='CustomerID',
aggfunc=pd.Series.nunique)

cohort_pivot = pd.pivot_table(data,
index='first_cohort',
columns='cohort_distance',
values='CustomerID',
aggfunc=pd.Series.nunique)

code diatas untuk membuat pivot table berdasarkan data yang sudah di proses.
index='first_cohort' = menjadikan kolom 'first_cohort' sebagai index pada pivot table
columns='cohort_distance' = menjadikan kolom cohort_distance sebagai kolom pada pivot table
values='CustomerID' = nilai pada pivot table diisi dengan jumlah CustomerID yang termasuk ke dalam masing-masing kolom cohort_distance dan index first_cohort.
aggfunc=pd.Series.nunique = menjumlahkan semua CustomerID yang unik pada setiap sel dalam pivot table.

menampilkan data cohort

cohort_pivot
cohort_pivot

hasilnya


cohort_pivot=cohort_pivot.div(cohort_pivot[0],axis=0)

cohort_pivot = cohort_pivot.div(cohort_pivot[0],axis=0)

co  coding tersebut bertujuan untuk memperoleh nilai persentase dari jumlah customer yang masih aktif pada setiap periode berdasarkan jumlah customer yang bergabung pada periode awal.

c   cohort_pivot



6. Menampilkan kedalam HeatMap

imimport seaborn as sns

    import matplotlib.pyplot as plt

bdfig_dims=(12,8)

    fig, ax = plt.subplots(figsize=fig_dims)

    sns.heatmap(cohort_pivot, annot=True, fmt='.0%',

    mask=cohort_pivot.isnull(), ax=ax, square=True, linewidths=5,

    cmap=sns.cubehelix_palette(8))

    plt.show()


cocode ini bertujuan untuk memvisualisasikan hasil pivot data dalam bentuk heatmap menggunakan library seaborn dan matplotlib di Python.




*sumber dari pelajaran di MySkill



  



Komentar

Postingan populer dari blog ini

Pengalaman Kelas satu di MAN IC

pengalaman di mts kelas 2