我的数据集是一起工作或单独工作的人员列表。
我为每个项目设置了一行,并在列中列出了参与该项目的所有人员的姓名。如果第 2 列是一行中的第一个空列,则它是一个单独的工作。如果第 4 列是连续的第一个空列,则有 3 个人一起工作。
我有找到所有对的代码。在输出数据集中,创建了一个 N x N 的正方形,每个参与者都标记了列和行。单元格 (A,B) 和 (B,A) 包含该对一起工作的次数。A 与 B 一起工作的处理方式与 B 与 A 一起工作的处理方式相同。
以逗号分隔的输入数据示例:
A,.,.
A,B,.
B,C,E
B,F,.
D,F,.
A,B,C
D,B,.
E,C,B
X,D,A
F,D,.
B,.,.
F,.,.
F,X,C
C,F,D
我正在使用 Python 3.2。执行此操作的代码:
import csv
import collections
import itertools
grid = collections.Counter()
with open("connect.csv", "r") as fp:
reader = csv.reader(fp)
for line in reader:
# clean empty names
line = [name.strip() for name in line if name.strip()]
# count single works
if len(line) == 1:
grid[line[0], line[0]] += 1
# do pairwise counts
for pair in itertools.combinations(line, 2):
grid[pair] += 1
grid[pair[::-1]] += 1
actors = sorted(set(pair[0] for pair in grid))
with open("connection_grid.csv", "w") as fp:
writer = csv.writer(fp)
writer.writerow([''] + actors)
for actor in actors:
line = [actor,] + [grid[actor, other] for other in actors]
writer.writerow(line)
我的问题是:
如果我有一个包含月份和年份的列,是否可以为每个月份制作一个矩阵电子表格?(即,对于 2011 年,我将有 12 个矩阵)?
对于我使用的任何细分,是否可以创建一个变量,使变量名是所有一起工作的人的组合?例如,“ABD”表示 A、B 和 D 一起工作的项目,并且等于 ABD 作为三人一组工作的次数,无论顺序如何。项目最多可容纳 20 人,因此必须能够以 2 到 20 人为一组。此外,如果变量应按字母顺序排列,那将是最简单的。