#确定分析数据的截至日期dead_day=pd.to_datetime('2026-06-06')#计算R、F、M的数值,使用分组聚合rmf=df.groupby('userid').agg( R=('orderdate',lambda x:(dead_day-x.max()).days), F=('orderid','count'), M=('amount','sum') ).reset_index()#求R、F、M三列的均值,用查询与均值比较,分成高为1,低位0两类R_med=rmf['R'].median()rfm['R_value']=np.where(rmf['R']<=R_med,1,0)#将分层标签3个维度拼接起来rfm['rfm_label'] =rfm['R_value'].astype(str) +rfm['F_value'].astype(str) +rfm['M_value'].astype(str)#将三位数的数字映射成客户类型rfm['customer_type']=rfm['rfm_label'].map({ '111':'重要价值客户', #金主 '011':'重要保持客户', #唤回来,大额优惠券 '001':'重要挽留客户', #沉睡了,大额优惠吸引 '101':'重要发展客户', #促复购(优惠劵) '110':'一般价值客户',#提高消费额,满减券 '100':'一般发展客户',#小额无门槛券 '010':'一般保持客户',#通用小券 '000':'流失客户' #算了吧,随缘}) #分别为最后一次购买日期、买的次数,消费的金额。#只要是消费高的都是重要客户