pandas 如何根据clv得分的值创建具有自定义聚类名称的新列,K均值聚类

ijxebb2r  于 2022-12-28  发布在  其他
关注(0)|答案(2)|浏览(91)

这是我拥有的以下数据框
| 集群|CLV评分|
| - ------|- ------|
| 第二章|五十七万一千零三十八|
| 三个|1 474 358人|
| 1个|五十六万八千二百一十一人|
由于该表的上下文是关于客户细分的,因此我希望创建一个新列,其中包含基于clv得分的每个聚类的名称。需要说明的另一点是,用户可以更改用户
输出如下所示
| 集群|CLV评分|群集名称|
| - ------|- ------|- ------|
| 第二章|1 474 358人|金牌客户|
| 1个|五十七万一千零三十八|银级客户|
| 三个|五十六万八千二百一十一人|不活跃客户|
任何帮助或解释都非常感谢谢谢!

zengzsys

zengzsys1#

您可以使用numpy(nested)来检查分数是否在特定值之间,并将其设置为一列。

df["Cluster Name"] = np.where(
  df["CLV Score"] < 570000, "Dormant Customer",
    np.where(df["CLV Score"] < 1400000, "Silver Customer", "Gold Customer")
)
sy5wg1nm

sy5wg1nm2#

这是pd.cut()的工作:

>>> df.assign(cluster_name=pd.cut(df['CLV Score'], bins=3,
...                               labels=['Dormant', 'Silver', 'Gold']))
         CLV Score cluster_name
Cluster                        
2           571038      Dormant
3          1474358         Gold
1           568211      Dormant

当然,您可以自定义存储箱边缘:

>>> df.assign(cluster_name=pd.cut(
...     df['CLV Score'], bins=[0, 0.57e6, 1e6, float('inf')],
...     labels=['Dormant', 'Silver', 'Gold']))
         CLV Score cluster_name
Cluster                        
2           571038       Silver
3          1474358         Gold
1           568211      Dormant

相关问题