我的数据集是一个或者一起工作或者单独工作的人员列表。制作各种分组
我对每个项目都有一行,并且列出了所有在该项目上工作的人员的姓名。如果第2列是连续第一个空列,那么这是一个独奏作业。如果第4列是连续第一个空列,则有3个人一起工作。
我有代码找到所有对。在输出数据集中,每个角色标注行和列都会创建一个正方形N x N。单元格(A,B)和(B,A)包含该对单元一起工作的次数。与B A工作被视为与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个小组。另外,如果变量应按字母顺序排列,这将是最容易的。
快速推荐/请求。请返回并更正“打开”代码块中的缩进。如您所知,缩进在Python中很重要。没有他们,读者就会猜测你在做什么。 –