0% found this document useful (0 votes)
4 views2 pages

RFM Analysis in Python Code

The document contains an R function that calculates RFM (Recency, Frequency, Monetary) scores for customer segmentation. It creates a data frame with customer IDs and their corresponding R, M, and F scores based on quantiles of the input data. The final output includes a loyalty classification based on the total RFM score.

Uploaded by

modem40203
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as RTF, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views2 pages

RFM Analysis in Python Code

The document contains an R function that calculates RFM (Recency, Frequency, Monetary) scores for customer segmentation. It creates a data frame with customer IDs and their corresponding R, M, and F scores based on quantiles of the input data. The final output includes a loyalty classification based on the total RFM score.

Uploaded by

modem40203
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as RTF, PDF, TXT or read online on Scribd

rfm_scores <-

function(ID,Recency,Monetary,Frequency){

rfm_df2<-[Link](ID,Recency,Monetary,Frequency)

quart<- quantile(rfm_df$Recency,.25)

mid<-quantile(rfm_df$Recency,.50)

tquart<-quantile(rfm_df$Recency,.75)

for (r in 1:nrow(rfm_df2)){

rfm_df2$R_score <- 0

rfm_df2$R_score[rfm_df2$Recency >= tquart] <- 1

rfm_df2$R_score[rfm_df2$Recency >= mid & rfm_df2$Recency <tquart] <- 2

rfm_df2$R_score[rfm_df2$Recency >= quart & rfm_df2$Recency <mid] <- 3

rfm_df2$R_score[rfm_df2$Recency < quart ] <- 4

quart<- quantile(rfm_df$Monetary,.25)

mid<-quantile(rfm_df$Monetary,.50)

tquart<-quantile(rfm_df$Monetary,.75)

for (m in 1:nrow(rfm_df2)){
rfm_df2$M_score<-0

rfm_df2$M_score[rfm_df2$Monetary >= tquart] <- 4

rfm_df2$M_score[rfm_df2$Monetary < tquart & rfm_df2$Monetary >= mid] <- 3

rfm_df2$M_score[rfm_df2$Monetary >= quart & rfm_df2$Monetary < mid] <- 2

rfm_df2$M_score[rfm_df2$Monetary <quart] <- 1

quart<- quantile(rfm_df2$Frequency,.25)

mid<-quantile(rfm_df2$Frequency,.50)

tquart<-quantile(rfm_df2$Frequency,.75)

for (f in 1:ncol( rfm_df2)){

rfm_df2$F_score<- 0

rfm_df2$F_score[rfm_df2$Frequency >=tquart ] <- 4

rfm_df2$F_score[rfm_df2$Frequency <tquart & rfm_df$Frequency >= mid] <- 3

rfm_df2$F_score[rfm_df2$Frequency <mid & rfm_df$Frequency >= quart] <- 2

rfm_df2$F_score[rfm_df2$Frequency <quart] <- 1

rfm_df2$score <- rfm_df2$R_score+rfm_df2$F_score+rfm_df2$M_score

rfm_df2$loyalty <- cut(rfm_df2$score,breaks = c(0,3,6,9,12),labels = c('bronze','silver','gold','platinum'))

rfm_df2

You might also like