Распараллеливание процесса связывания записей в Python - PullRequest
0 голосов
/ 17 октября 2018

Я работал над двумя большими наборами данных переписи, чтобы связать их, и мне очень нужна помощь.Поскольку размер этих наборов данных достаточно велик, мне нужно распараллелить код связывания записей.Я использую инструментарий связывания записей Python для вычисления векторов признаков пар записей, используя функцию блокировки, а затем функцию сравнения, которая также включает в себя пользовательскую функцию сравнения для столбца Семейное положение.До сих пор я искал много способов, но я не мог успешно применить эти методы (даже предоставил аргумент количества рабочих мест в функции сравнения).Вот мой код (я не включил все столбцы только несколько)

 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...