打印函数结果Python

2024-05-14 07:42:55 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我想问一下,我有这样一个代码,确定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'])


Tags: anddfreturnfinalintscoreapplyfrequency

热门问题