在Python中统计跨门店购物客户数并查询对应门店名称
解决方案
核心思路
要显示门店实际名称并定位对应9.5K客户数的跨店组合,核心是先按客户ID分组提取每个客户的门店访问集合,再对这些集合进行分组统计,直接关联门店名称与客户数量。
具体实现(以SQL为例)
假设数据表为customer_purchases,包含customer_id(客户唯一ID)、store_name(门店名称)字段:
1. 提取每个客户的门店组合
先整理每个客户去过的门店,通过有序拼接确保相同门店组合的一致性:
WITH customer_store_groups AS ( SELECT customer_id, STRING_AGG(DISTINCT store_name, ', ' ORDER BY store_name) AS store_combination FROM customer_purchases GROUP BY customer_id )
2. 统计双门店组合的客户数并定位目标
直接筛选仅包含两家门店的组合,同时匹配9500的客户数:
WITH customer_store_groups AS ( SELECT customer_id, STRING_AGG(DISTINCT store_name, ', ' ORDER BY store_name) AS store_combination FROM customer_purchases GROUP BY customer_id ) SELECT store_combination, COUNT(DISTINCT customer_id) AS unique_customers FROM customer_store_groups -- 仅保留双门店组合 WHERE ARRAY_LENGTH(STRING_TO_ARRAY(store_combination, ', '), 1) = 2 AND COUNT(DISTINCT customer_id) = 9500 GROUP BY store_combination;
关键细节
- 用
ORDER BY排序拼接门店名称,避免"Store A, Store B"和"Store B, Store A"被误判为不同组合。 - 如果用Python Pandas处理,可通过
groupby('customer_id')['store_name'].agg(lambda x: ', '.join(sorted(set(x))))生成门店组合,再用value_counts()统计数量,逻辑完全一致。
内容的提问来源于stack exchange,提问作者xit_123
相关产品推荐
相关产品推荐

