我的數據集是一個或者一起工作或者單獨工作的人員列表。製作各種分組
我對每個項目都有一行,並且列出了所有在該項目上工作的人員的姓名。如果第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中很重要。沒有他們,讀者就會猜測你在做什麼。 –