嗨,我想问一下,我有这样一个代码,确定RFM分数:
每当我试着运行它时,它总是说
Exception has occurred: NameError name 'rfm_segmentation_final' is not defined
我试过几种解决办法,但都不管用
我想打印最终的分段级别
感谢您的帮助
Timesbooked = int(1)
Promoused = int(1)
Date = int(250)
input_predict = pd.DataFrame({
'Frequency' : [Timesbooked],
'Score' : [Promoused],
'Recency' : [Date]
})
def RScore(x,p,d):
if x <= d[p][0.25]:
return 4
elif x <= d[p][0.50]:
return 3
elif x <= d[p][0.75]:
return 2
else:
return 1
def FMScore(x,p,d):
if x <= d[p][0.25]:
return 1
elif x <= d[p][0.50]:
return 2
elif x <= d[p][0.75]:
return 3
else:
return 4
quantiles = pd.read_excel('aa.xlsx')
quantiles1 = quantiles.quantile(q=[0.25,0.5,0.75])
rfm_df = input_predict
rfm_df['R_Quartile'] = rfm_df['Recency'].apply(RScore, args=('Recency',quantiles1,))
rfm_df['F_Quartile'] = rfm_df['Frequency'].apply(FMScore, args=('Frequency',quantiles1,))
rfm_df['M_Quartile'] = rfm_df['Score'].apply(FMScore, args=('Score',quantiles1,))
rfm_segmentation_final = rfm_df
#Creating RFM segmentation table
rfm_segmentation_final['RFMScore'] = rfm_segmentation_final.R_Quartile.map(str) \
+ rfm_segmentation_final.F_Quartile.map(str) \
+ rfm_segmentation_final.M_Quartile.map(str)
rfm_segmentation_final['RFM_Score'] = rfm_segmentation_final['R_Quartile'] + rfm_segmentation_final['F_Quartile'] + rfm_segmentation_final['M_Quartile']
def rfm_level(rfm_segmentation_final):
if rfm_segmentation_final['RFM_Score'] >= 9:
return "Opulence"
elif ((rfm_segmentation_final['RFM_Score'] >= 8) and (rfm_segmentation_final['RFM_Score'] < 9)):
return 'Champions'
elif ((rfm_segmentation_final['RFM_Score'] >= 7) and (rfm_segmentation_final['RFM_Score'] < 8)):
return 'Loyal'
elif ((rfm_segmentation_final['RFM_Score'] >= 6) and (rfm_segmentation_final['RFM_Score'] < 7)):
return 'Potential'
elif ((rfm_segmentation_final['RFM_Score'] >= 5) and (rfm_segmentation_final['RFM_Score'] < 6)):
return 'Promising'
elif ((rfm_segmentation_final['RFM_Score'] >= 4) and (rfm_segmentation_final['RFM_Score'] < 5)):
return 'Needs Attention'
else:
return 'Require Activation'
rfm_segmentation_final['RFM_Level'] = rfm_segmentation_final.apply(rfm_level, axis=1)
print(rfm_segmentation_final['RFM_Level'])
目前没有回答
相关问题 更多 >
编程相关推荐