我一直在研究两个大型人口普查数据集,以便将它们链接在一起,并且急需帮助。由于这些数据集的大小很大,因此我需要并行化记录链接代码。我正在使用python记录链接工具包,使用阻止和比较功能(包括针对婚姻状况列的自定义比较功能)来计算记录对的特征向量。到目前为止,我已经寻找了很多方法,但是我无法成功应用这些方法(即使在比较函数中提供了Jobs参数的数量)。这是我的代码(我并没有包括所有的列)
def featureVectors():
df1==pd.read_csv('deduplicatedfinal71.csv',encoding='utf8')
df2=pd.read_csv('deduplicatednew81.csv',encoding='utf8',delimiter=',')
pcl = recordlinkage.index.Block(left_on=
['PR_NAME_SURN','PR_NAME_GN'],right_on=['SNAMLAST','SNAMFRST'])
pairs= pcl.index(df1,df2)
compare_cl = recordlinkage.Compare(n_jobs=16)
compare_cl.string('PR_NAME_GN', 'SNAMFRST',
method='jarowinkler',threshold=0.80,label='FirstJW')
compare_cl.string('PR_NAME_SURN', 'SNAMLAST',
method='jarowinkler',threshold=0.80,label='LastJW')
compare_cl.string('PR_NAME_SURN','SNAMLAST',
method='levenshtein',threshold=0.80,label='LastNEditD')
compare_cl.string('PR_NAME_GN','SNAMFRST',
method='levenshtein',threshold=0.80,label='FirstNEditD')
def marital_compare(s1,s2):
concat=pd.concat([s1,s2],axis=1, ignore_index=True)
def inner_apply(x):
val1=x[0]
val2=x[1]
if (val1==6 and val2==1):
return(1)
elif (val1==1 and (val2==4 or val2== 5)):
return(1)
elif(val1==val2):
return(1)
else:
return(0)
return concat.apply(inner_apply, axis=1)
compare_cl.compare_vectorized(marital_compare,'MARITAL_STATUS','MARST',
label='MARITAL_STATUS')
features = compare_cl.compute(pairs, df1,df2)
features=pd.DataFrame(features)
features.to_csv('featureVector.csv',index=False)