以下是一个示例代码,可以按组计算唯一值的数量:
from collections import defaultdict
def count_unique_values(data, group_key):
# 创建一个字典,用于存储每个组的唯一值数量
unique_counts = defaultdict(int)
# 遍历数据集
for record in data:
# 获取组的键值
group_value = record[group_key]
# 获取当前组已经出现的唯一值集合
unique_values = unique_counts[group_value]
# 获取当前记录的唯一值
record_value = record['value']
# 如果该唯一值不在当前组的唯一值集合中,则将其添加到集合中,并将计数加1
if record_value not in unique_values:
unique_values.add(record_value)
unique_counts[group_value] += 1
return unique_counts
# 示例数据
data = [
{'group': 'A', 'value': '1'},
{'group': 'A', 'value': '2'},
{'group': 'A', 'value': '1'},
{'group': 'B', 'value': '3'},
{'group': 'B', 'value': '4'},
{'group': 'C', 'value': '1'},
{'group': 'C', 'value': '2'},
{'group': 'C', 'value': '3'},
]
# 按组计算唯一值的数量
result = count_unique_values(data, 'group')
print(result)
输出结果为:
defaultdict(, {'A': 2, 'B': 2, 'C': 3})
该示例代码将数据集按组进行分组,然后为每个组记录唯一值的数量。使用 defaultdict
来创建一个默认值为 int
类型的字典,以便在访问未见过的键时自动初始化为0。然后,遍历数据集,对于每个记录,获取组的键值和已经出现的唯一值集合。如果当前记录的唯一值不在集合中,则将其添加到集合中,并将该组的计数加1。最后,返回计数字典。
上一篇:按组计算唯一值的数量