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

如何用Python Itertools统计CSV中高频二人组/三人组?

解决方案:统计CSV中出现次数最多的二人组与三人组

嘿,我完全懂你的处境——Excel确实搞不定这种不考虑姓名顺序的组合统计,而Python的itertools模块又有点让人摸不着头脑。别慌,我给你准备了一套现成的代码,步骤清晰,你跟着做就行,不需要太深入懂原理!

准备工作

你只需要确保你的电脑装了Python(现在大部分电脑都自带,没有的话装个最新版就行),然后把你的CSV文件和下面的代码放在同一个文件夹里。

完整代码

import csv
from itertools import combinations
from collections import defaultdict

# 初始化计数字典:键是排序后的组合,值是出现次数
pair_counts = defaultdict(int)
triple_counts = defaultdict(int)

# 读取CSV文件(把这里的'your_file.csv'改成你实际的文件名)
with open('your_file.csv', 'r', encoding='utf-8') as file:
    reader = csv.reader(file)
    next(reader)  # 跳过表头行(如果你的CSV没有表头,就删掉这一行)
    
    for row in reader:
        # 获取当前行的三个姓名,去掉空白字符
        people = [name.strip() for name in row if name.strip()]
        # 确保当前行有三个有效姓名(避免空值影响统计)
        if len(people) != 3:
            continue
        
        # 统计二人组:生成所有两两组合,排序后作为唯一键
        for pair in combinations(people, 2):
            sorted_pair = tuple(sorted(pair))
            pair_counts[sorted_pair] += 1
        
        # 统计三人组:排序后作为唯一键
        sorted_triple = tuple(sorted(people))
        triple_counts[sorted_triple] += 1

# 找出出现次数最多的二人组和三人组
most_common_pair = max(pair_counts.items(), key=lambda x: x[1])
most_common_triple = max(triple_counts.items(), key=lambda x: x[1])

# 打印结果
print(f"出现次数最多的二人组:{most_common_pair[0]},共出现{most_common_pair[1]}次")
print(f"出现次数最多的三人组:{most_common_triple[0]},共出现{most_common_triple[1]}次")

怎么用?

  1. 把代码里的'your_file.csv'改成你实际的CSV文件名(比如'names_data.csv')
  2. 如果你的CSV没有表头行(第一行就是数据),删掉代码里的next(reader)这一行
  3. 打开命令行,进入代码所在的文件夹,运行python count_groups.py(把count_groups.py改成你保存代码的文件名)

关键逻辑说明

  • 为什么要排序?因为(PersonA, PersonB)和(PersonB, PersonA)其实是同一个组合,排序后就能统一成同一个键,确保统计准确
  • combinations用来生成所有可能的两两组合,不用自己手动写循环
  • defaultdict是Python自带的工具,方便我们计数,不用手动判断键是否存在

要是运行时遇到小问题(比如文件找不到、编码错误),可以调整代码里的encoding参数(比如改成gbk),或者检查文件名有没有写错~

内容的提问来源于stack exchange,提问作者Michael T Johnson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:09:24