如何在Databricks中使用PySpark新增列标记高频退货客户
PySpark(Databricks平台)实现客户退货行为统计与标记
实现思路
- 按
customerID分组聚合,统计每个客户的总退货次数、总购买订单数 - 自定义「经常退货」判定规则(支持按绝对退货次数/退货率两种逻辑),使用
when函数新增标记列
完整代码示例
from pyspark.sql import functions as F # 1. 分组统计每个客户的退货相关指标 customer_return_stats = train.groupBy("customerID") \ .agg( F.sum("returnShipment").alias("total_return_cnt"), # 统计总退货次数 F.count("itemID").alias("total_order_cnt") # 统计总购买订单数 ) # 2. 新增「经常退货客户」标记,两种规则二选一即可 # 规则1:按绝对退货次数判定,例:退货次数≥3即为经常退货 result = customer_return_stats.withColumn( "is_frequent_return", F.when(F.col("total_return_cnt") >= 3, "是").otherwise("否") ) # 规则2:按退货率判定,例:退货率≥30%即为经常退货 # result = customer_return_stats.withColumn( # "return_rate", # F.round(F.col("total_return_cnt") / F.col("total_order_cnt"), 2) # ).withColumn( # "is_frequent_return", # F.when(F.col("return_rate") >= 0.3, "是").otherwise("否") # ) # 查看最终结果 result.show()
测试数据输出样例
使用规则1(退货次数≥3判定为经常退货),对应你提供的测试数据输出如下:
+----------+----------------+---------------+------------------+ |customerID|total_return_cnt|total_order_cnt|is_frequent_return| +----------+----------------+---------------+------------------+ | 794| 2| 3| 否| | 850| 7| 7| 是| +----------+----------------+---------------+------------------+
自定义调整说明
- 可修改
when条件中的阈值,适配自身业务对「经常退货」的定义 - 标记值也可根据需求替换为布尔值
True/False或者数字编码1/0
内容的提问来源于stack exchange,提问作者JAdel
相关产品推荐
相关产品推荐

