RFM Menggunakan Python – Part 2

Pada modul ini kita akan mempersiapkan data agar bisa digunakan oleh RFM model.

Membuat kolom sales.

#Creating Sales column
data['sales'] = data['Quantity'] * data['UnitPrice']

Transform variable date dan mengambil snapshot_date.

#Dates - Transform Date variable
data['InvoiceDate'] = pd.to_datetime(data['InvoiceDate'])

#Get last date available
snapshot_date = data['InvoiceDate'].max() + timedelta(days = 1)
snapshot_date

Melakukan agregasi untuk customer level.

#Aggregate on Customer Level
df = data.groupby(['CustomerID']).agg({
    'InvoiceDate': lambda x: (snapshot_date - x.max()).days,
    'InvoiceNo': 'count',
    'sales': 'sum'
})

Membuat basket (variable untuk Monetary).

#Create basket / Monetary variable
df['monetary'] = df.sales / df.InvoiceNo

Karena tidak akan digunakan, kita buang kolom sales.

df = df.drop(columns = "sales")

Mengubah nama kolom agar jelas maksudnya.

df.rename(columns = {'InvoiceDate': 'Recency',
                     'InvoiceNo': 'Frequency'}, inplace = True)

Sampai disini kita sudah selesai melakukan persiapan data. Pada modul selanjutnya kita akan melakukan persiapan untuk keperluan RFM model.

Sharing is caring: