如何统计数据集内A={Onion}与B={Kidney Beans,Eggs}的出现次数
统计实现方案(Python pandas环境为例)
假设你的数据集为购物篮类数据集,每行对应一条交易记录,记录中的商品以逗号分隔存储:
- 第一步:导入依赖并加载数据集
import pandas as pd # 替换为你的实际数据集路径 df = pd.read_csv("dataset.csv") # 假设存储商品的列名为items,可根据实际字段名修改
- 第二步:定义目标统计集合
set_a = {"Onion"} set_b = {"Kidney Beans", "Eggs"}
- 第三步:编写匹配统计逻辑
集合的出现次数统计规则为:单条交易记录包含集合内所有元素时,计为1次有效出现
def is_contain(target: set, item_str: str) -> bool: # 将每行的商品字符串转为集合后判断子集关系 transaction_items = set([i.strip() for i in item_str.split(",")]) return target.issubset(transaction_items) # 统计集合A出现总次数 count_a = df["items"].apply(lambda x: is_contain(set_a, x)).sum() # 统计集合B出现总次数 count_b = df["items"].apply(lambda x: is_contain(set_b, x)).sum()
- 第四步:查看统计结果
print(f"集合A(Onion)总出现次数:{count_a}") print(f"集合B(Kidney Beans+Eggs同时出现)总次数:{count_b}")
补充:若需统计集合B内单个元素各自的出现次数
# 统计Kidney Beans单独出现次数 count_kidney = df["items"].apply(lambda x: "Kidney Beans" in x).sum() # 统计Eggs单独出现次数 count_eggs = df["items"].apply(lambda x: "Eggs" in x).sum()
其他实现方案(SQL环境为例)
假设交易数据存储在transaction表中,存储商品的字段为items:
- 统计集合A出现次数
SELECT COUNT(*) AS count_a FROM transaction WHERE items LIKE '%Onion%';
- 统计集合B(同时包含两个元素)出现次数
SELECT COUNT(*) AS count_b FROM transaction WHERE items LIKE '%Kidney Beans%' AND items LIKE '%Eggs%';
内容的提问来源于stack exchange,提问作者Shriraj Desai
相关产品推荐
相关产品推荐

