如何为RFM模型输出的Recency、Frequency数据新增对应分段标签列
RFM分段标签生成实现方案
你可以直接用pandas的cut分箱函数实现批量分段,全程不需要循环判断,效率很高,适配大批量数据场景。
完整代码示例
import pandas as pd # 1. 读取你的csv数据,替换为你实际的文件路径即可 # df_rf = pd.read_csv("你的rfm结果文件路径.csv") # 这里直接用你给出的示例数据做演示 df_rf = pd.DataFrame({ "frequency": [1,1,1,2,2], "recency": [179,158,61,82,314] }) # 2. Recency分段:完全匹配你给出的规则 r_bins = [0, 30, 60, 120, 180, 360] r_labels = ["R5", "R4", "R3", "R2", "R1"] df_rf["Recency_label"] = pd.cut(df_rf["recency"], bins=r_bins, labels=r_labels, right=True) # 3. Frequency分段:完全匹配你给出的规则 f_bins = [0, 1, 5, 9, 11, float("inf")] f_labels = ["F1", "F2", "F3", "F4", "F5"] df_rf["Frequency_label"] = pd.cut(df_rf["frequency"], bins=f_bins, labels=f_labels, right=True) # 输出结果查看,如需保存到新csv执行下一行即可 # df_rf.to_csv("带标签的rfm结果.csv", index=False) print(df_rf)
输出结果验证
运行后得到的结果和你期望的完全一致:
frequency recency Recency_label Frequency_label 0 1 179 R2 F1 1 1 158 R2 F1 2 1 61 R3 F1 3 2 82 R3 F2 4 2 314 R1 F2
边界值说明
- 如果你的recency存在超过360天的数据,可以把r_bins的上限从360改成
float("inf"),新增对应标签即可 - 分箱默认采用左开右闭规则,完全适配你给出的区间划分要求,比如180天属于R2、181天属于R1,12次购买属于F5
内容的提问来源于stack exchange,提问作者adey27
相关产品推荐
相关产品推荐

