You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于多列条件统计归属不同类型组合的Homes去重计数方案

多条件组合维度去重计数实现

需求背景

基于月度-家庭-类型的明细数据,按月度分组统计:

  • 仅归属单个Type的唯一Homes数量
  • 仅归属任意两个Type组合的唯一Homes数量

样例明细数据

Month   Homes   Type
Jul     HH1     Cat1
Jul     HH2     Cat2
Jul     HH2     Cat3
Jul     HH3     Cat2
Jul     HH4     Cat3
Jul     HH5     Cat2
Jul     HH6     Cat2
Jul     HH6     Cat3
Jul     HH7     Cat2
Jul     HH8     Cat3
Jul     HH9     Cat1

实现方案

1. SQL实现(支持Hive/Spark SQL/MySQL 8.0+)

核心思路:先按Month+Homes分组生成每个家庭的唯一Type组合标识,再按组合标识分组计数后行转列输出。

WITH home_type_group AS (
    SELECT 
        Month,
        Homes,
        -- 排序后拼接Type避免同组合生成不同标识
        GROUP_CONCAT(DISTINCT Type ORDER BY Type SEPARATOR '+') AS type_combination
    FROM your_table_name
    GROUP BY Month, Homes
    -- 过滤仅保留单Type和双Type组合
    HAVING COUNT(DISTINCT Type) <=2
)
SELECT
    Month,
    COUNT(CASE WHEN type_combination = 'Cat1' THEN 1 END) AS Cat1,
    COUNT(CASE WHEN type_combination = 'Cat2' THEN 1 END) AS Cat2,
    COUNT(CASE WHEN type_combination = 'Cat3' THEN 1 END) AS Cat3,
    COUNT(CASE WHEN type_combination = 'Cat1+Cat2' THEN 1 END) AS `Cat1+Cat2`,
    COUNT(CASE WHEN type_combination = 'Cat2+Cat3' THEN 1 END) AS `Cat2+Cat3`,
    COUNT(CASE WHEN type_combination = 'Cat1+Cat3' THEN 1 END) AS `Cat3+Cat1`
FROM home_type_group
GROUP BY Month;

2. Python Pandas实现

import pandas as pd

# 读取明细数据
df = pd.read_csv('your_data_path.csv', sep='\s+')

# 生成每个家庭的Type组合标识
home_group = df.groupby(['Month', 'Homes'])['Type'].apply(
    lambda x: '+'.join(sorted(x.unique()))
).reset_index(name='type_combination')

# 过滤仅保留单/双Type组合
home_group = home_group[home_group['type_combination'].str.split('+').str.len() <=2]

# 统计各组合数量并输出宽表
result = pd.crosstab(home_group['Month'], home_group['type_combination']).reset_index()
# 补全缺失的组合列,对齐输出格式
expected_cols = ['Month', 'Cat1', 'Cat2', 'Cat3', 'Cat1+Cat2', 'Cat2+Cat3', 'Cat3+Cat1']
result = result.reindex(columns=expected_cols, fill_value=0)

输出结果

Month   Cat1    Cat2    Cat3    Cat1+Cat2   Cat2+Cat3   Cat3+Cat1
Jul       2       3      2           0          2           0

内容的提问来源于stack exchange,提问作者ExelIQ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 22:57:03