Customer Segmentation in Python
Karolis Urbonas
Head of Data Science, Amazon
R, F, M
r_labels = range(4, 0, -1)r_quartiles = pd.qcut(datamart['Recency'], 4, labels = r_labels)datamart = datamart.assign(R = r_quartiles.values)

f_labels = range(1,5) m_labels = range(1,5)f_quartiles = pd.qcut(datamart['Frequency'], 4, labels = f_labels) m_quartiles = pd.qcut(datamart['MonetaryValue'], 4, labels = m_labels)datamart = datamart.assign(F = f_quartiles.values) datamart = datamart.assign(M = m_quartiles.values)

RFM_SegmentRFM_Scoredef join_rfm(x): return str(x['R']) + str(x['F']) + str(x['M'])datamart['RFM_Segment'] = datamart.apply(join_rfm, axis=1)datamart['RFM_Score'] = datamart[['R','F','M']].sum(axis=1)

Customer Segmentation in Python