我需要在大型数据集中查找重复项,因此我正在测试重复数据删除python 库。
我知道建议用于小型数据集,所以我认为使用好的机器可以提高性能。我有一台具有 56 GB RAM 的机器,并且正在针对包含 200000 行的数据集运行类似于“csv_example”的测试。它可以工作,但内存使用率非常低,处理(CPU)也非常低。
阻塞阶段似乎花费了太长的时间:
INFO:dedupe.blocking:10000, 110.6458142 seconds
INFO:dedupe.blocking:20000, 300.6112282 seconds
INFO:dedupe.blocking:30000, 557.1010122 seconds
INFO:dedupe.blocking:40000, 915.3087222 seconds
Run Code Online (Sandbox Code Playgroud)
谁能帮助我改进使用情况,或者告诉我是否有任何库/设置可以使程序使用更多可用资源?
我有一个2维numpy数组:
A = np.zeros(16).reshape(4,4)
Run Code Online (Sandbox Code Playgroud)
我希望(1, 1), (1,3), (3,1),并且(3,3)单元格的值为1.
A[[1,3], [1:3]] = 1
Run Code Online (Sandbox Code Playgroud)
只分配1 (1,1)和(3,3).
A[[1,3], :][:, [1, 3]] = 1
Run Code Online (Sandbox Code Playgroud)
不起作用,因为它使数据的副本不是视图.这样做的正确方法是什么?
我的团队一直坚持在两个大型数据集上运行模糊逻辑算法。第一个(子集)大约有 180K 行,包含我们需要在第二个(超集)中匹配的人员的姓名、地址和电子邮件。超集包含 250 万条记录。两者具有相同的结构,并且数据已经被清理,即解析地址、标准化名称等。
- 联系人ID int,
- 全名 varchar(150),
- 地址 varchar(100),
- 电子邮件 varchar(100)
目标是将子集中的行中的值与超集中的相应值进行匹配,因此输出将组合子集和超集以及每个字段(标记)的相应相似性百分比。
- 联系方式,
- 查找联系人ID,
- 全名,
- 查找全名,
- 全名_相似度,
- 地址,
- 查找地址,
- 地址_相似度,
- 电子邮件,
- 查找电子邮件,
- 电子邮件_相似度
为了首先简化和测试代码,我们连接了字符串,并且我们知道代码可以在非常小的超集上运行;然而,一旦我们增加记录数量,它就会陷入困境。我们尝试了不同的算法,Levenshtein、FuzzyWuzzy 等,但均无济于事。在我看来,问题在于 Python 是逐行执行的;不过,我不确定。我们甚至尝试使用流式传输在 Hadoop 集群上运行它;然而,它尚未取得任何积极成果。
#!/usr/bin/env python
import sys
from fuzzywuzzy import fuzz
import datetime
import time
import Levenshtein
#init for comparison
with open('normalized_set_record_set.csv') as normalized_records_ALL_file:
# with open('delete_this/xab') as normalized_records_ALL_file:
normalized_records_ALL_dict = {}
for line in normalized_records_ALL_file:
key, value = line.strip('\n').split(':', 1)
normalized_records_ALL_dict[key] = value
# normalized_records_ALL_dict[contact_id] = concat_record
def score_it_bag(target_contact_id, target_str, ALL_records_dict): …Run Code Online (Sandbox Code Playgroud) python fuzzy-logic fuzzy-comparison fuzzywuzzy record-linkage
我有一个 numpy 数组
a = numpy.array([1,2,3,0])
Run Code Online (Sandbox Code Playgroud)
我想做类似的事情
a == numpy.array([0,1,2,3])
Run Code Online (Sandbox Code Playgroud)
并得到
[[False, True, False, False],
[False, False, True, False],
[False, False, False, True ],
[True, False, False, False]]
Run Code Online (Sandbox Code Playgroud)
换句话说,我希望第 i 列显示 的每个元素是否a等于 i。这感觉就像 numpy 可能会变得容易的事情。有任何想法吗?
我正在编写一个爬虫来获取某些网站的内容,但内容可以重复,我想避免这种情况.所以我需要一个函数可以在两个文本之间返回相同的百分比来检测两个内容可能重复示例:
比较函数将文本2作为相同的文本1返回5/8%(其中5是文本的字数2相同的文本1(按字顺序比较),8是文本2的总字数).如果删除"some text",则将文本2作为相同的文本1(我需要检测情况).我该怎么做?
我正在使用Dedupe库将人员记录彼此匹配。我的数据包括姓名,出生日期,地址,电话号码和其他个人身份信息。
这是我的问题:例如,如果两个记录具有匹配的名称和电话号码,我总是希望100%置信度匹配它们。
这是我的一些代码示例:
fields = [
{'field' : 'LAST_NM', 'variable name' : 'last_nm', 'type': 'String'},
{'field' : 'FRST_NM', 'variable name' : 'frst_nm', 'type': 'String'},
{'field' : 'FULL_NM', 'variable name' : 'full_nm', 'type': 'Name'},
{'field' : 'BRTH_DT', 'variable name' : 'brth_dt', 'type': 'String'},
{'field' : 'SEX_CD', 'type': 'Exact'},
{'field' : 'FULL_US_ADDRESS', 'variable name' : 'us_address', 'type': 'Address'},
{'field' : 'APT_NUM', 'type': 'Exact'},
{'field' : 'CITY', 'type': 'ShortString'},
{'field' : 'STATE', 'type': 'ShortString'},
{'field' : 'ZIP_CD', 'type': 'ShortString'},
{'field' : 'HOME_PHONE', 'variable …Run Code Online (Sandbox Code Playgroud) python ×5
arrays ×2
numpy ×2
algorithm ×1
duplicates ×1
fuzzy-logic ×1
fuzzywuzzy ×1
pyspark ×1