Chapter 2
Chapter 2
monetary (RFM)
segmentation
C U S T O M E R S E G M E N TAT I O N I N P Y T H O N
Karolis Urbonas
Head of Data Science, Amazon
What is RFM segmentation?
Behavioral customer segmentation based on three metrics:
Recency (R)
Frequency (F)
Monetary Value (M)
Karolis Urbonas
Head of Data Science, Amazon
Definitions
Recency - days since last customer transaction
Frequency - number of transactions in the last 12 months
print('Min:{}; Max:{}'.format(min(online.InvoiceDate),
max(online.InvoiceDate)))
Min:2010-12-10; Max:2011-12-09
Karolis Urbonas
Head of Data Science, Amazon
Data
Dataset we created previously
Will calculate quartile value for each column and name then R , F , M
Karolis Urbonas
Head of Data Science, Amazon
Largest RFM segments
datamart.groupby('RFM_Segment').size().sort_values(ascending=False)[:10]
datamart[datamart['RFM_Segment']=='111'][:5]
def segment_me(df):
if df['RFM_Score'] >= 9:
return 'Gold'
elif (df['RFM_Score'] >= 5) and (df['RFM_Score'] < 9):
return 'Silver'
else:
return 'Bronze'
datamart['General_Segment'] = datamart.apply(segment_me, axis=1)
datamart.groupby('General_Segment').agg({
'Recency': 'mean',
'Frequency': 'mean',
'MonetaryValue': ['mean', 'count']}).round(1)