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

如何按属性分组统计特定属性值的出现次数(排除0值)

需求说明
  • 按attribute维度分组
  • 统计各attribute对应值的出现频次,统计时排除值为0的记录
  • 使用的数据集预览:
    数据集样例
  • 期望输出结果格式:
AttributeCount of
Q5_10
Q5_23
Q5_31
Q5_41
Q5_50
Q5_60
Q5_70
实现方案

Python Pandas 方案

适用于本地文件(Excel/CSV等)数据集处理,代码如下:

import pandas as pd

# 替换为实际的数据读取代码,例如df = pd.read_csv("your_data.csv")
df = pd.read_your_dataset()

# 提取所有Q5开头的属性列
attribute_cols = [col for col in df.columns if col.startswith("Q5_")]

# 逐列统计非0值数量
stat_result = pd.DataFrame({
    "Attribute": attribute_cols,
    "Count of": [(df[col] != 0).sum() for col in attribute_cols]
})

# 打印或导出结果
print(stat_result)

执行后输出结果和预期格式完全匹配。

SQL 方案

如果数据存储在数据库中,分两种表结构处理:

  1. 长表结构(表中存在attribute字段存储Q5_x类属性名,val字段存储对应数值)
SELECT
  attribute AS Attribute,
  SUM(IF(val != 0, 1, 0)) AS `Count of`
FROM your_table_name
WHERE attribute LIKE 'Q5_%'
GROUP BY attribute
ORDER BY attribute;
  1. 宽表结构(每个Q5_x为独立列),先逆透视成长表再统计,以MySQL为例:
SELECT
  attribute AS Attribute,
  SUM(IF(val != 0, 1, 0)) AS `Count of`
FROM (
  SELECT 'Q5_1' attribute, Q5_1 val FROM your_table_name
  UNION ALL SELECT 'Q5_2', Q5_2 FROM your_table_name
  UNION ALL SELECT 'Q5_3', Q5_3 FROM your_table_name
  UNION ALL SELECT 'Q5_4', Q5_4 FROM your_table_name
  UNION ALL SELECT 'Q5_5', Q5_5 FROM your_table_name
  UNION ALL SELECT 'Q5_6', Q5_6 FROM your_table_name
  UNION ALL SELECT 'Q5_7', Q5_7 FROM your_table_name
) t
GROUP BY attribute
ORDER BY attribute;

内容的提问来源于stack exchange,提问作者Žan Fras

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:09:24