# 对R、F、M进行分段打分 rfm_data['R_score'] = pd.cut(rfm_data['R'], bins=[-float('inf'), 30, 60, 90, float('inf')], labels=[4, 3, 2, 1], right=False) rfm_data['F_score'] = pd.cut(rfm_data['F'], bins=[-float('inf'), 1, 2, 3, float('inf')], labels=[1, 2, 3, 4], right=False) rfm_data['M_score'] = pd.cut(rfm_data['M'], bins=[-float('inf'), 1000, 2000, 3000, float('inf')], labels=[1, 2, 3, 4], right=False) # 计算RFM得分 rfm_data['RFM_score'] = rfm_data['R_score'].astype(str) + rfm_data['F_score'].astype(str) + rfm_data['M_score'].astype(str) # 打印RFM得分数据 print(rfm_data) 修改上述代码,使得: 对于 F 和 M 变量来讲,值越⼤代表购买频率越⾼、订单⾦额越⾼ 但对 R 来讲,值越⼩代表离截⽌时间节点越近,因此值越好 对R、F、M分别使⽤五分位(三分位也可以,分位数越多划分得越详细)法做数据分区 需要注意的是,对于R来讲需要倒过来划分,离截⽌时间越近的值划分越⼤ 这样就得到每个⽤户的R、F、M三个变量的分位数值
时间: 2024-01-21 17:01:54 浏览: 147
RFM2g_Sender.rar_rfm api_rfm2g_rfm2g_receiver_rmf2g控件_rockneu
修改后的代码如下所示:
```python
import pandas as pd
# 对R、F、M进行分段打分
rfm_data['R_score'] = pd.qcut(rfm_data['R'], q=5, labels=False, duplicates='drop')
rfm_data['F_score'] = pd.qcut(rfm_data['F'], q=5, labels=False, duplicates='drop')
rfm_data['M_score'] = pd.qcut(rfm_data['M'], q=5, labels=False, duplicates='drop')
# 对R进行倒序处理
rfm_data['R_score'] = 4 - rfm_data['R_score']
# 打印RFM得分数据
print(rfm_data)
```
这段代码使用了`pd.qcut()`函数对R、F、M进行分位数划分,其中`q=5`表示将数据分为5个分位数。对于R变量,通过将划分后的值减去4来实现倒序处理。最后,打印出RFM得分数据。
阅读全文