gpt4 book ai didi

python - 使用模糊匹配标准匹配多列数据

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:52 24 4
gpt4 key购买 nike

我正在做一个与此类似的项目:Data matching algorithm

其中,我有一个包含客户详细信息的数据框 (dataset1),没有特殊的唯一 ID,然后将其与具有相同字段和特殊唯一 ID 的数据框 2 (dataset2) 进行匹配。

示例:Dataset1 列包括:

头衔、姓氏、名字、中间名/其他姓名、地址、出生日期、性别、医疗​​保健号码

dataset2 列包括:

唯一 ID、头衔、姓氏、名字、中间名/其他姓名、地址、出生日期、性别、医疗​​保健号码

我的计划:

我的数据集 1 大约有 500,000 行,大约 11 列 - 如果需要,可以拆分行数。数据集 2 约为 2,000,000

基于企业的匹配标准,例如。 >5 列必须匹配,并且可能是模糊组件,例如在一个数据集中用连字符连接的名称(包括其他特殊字符),但在另一个数据集中则不然。

根据近似匹配,此 ID 和数据集 2 中的字段以及总体匹配百分比将复制到数据集 1 的相邻列中。

然后,业务可以提取并检查总体匹配百分比范围。

我计划将 Panda 与 Fuzzywuzzy 一起使用。我在根据代码逻辑规划技术方法时遇到困难。

我是否应该在第一个字段中查找匹配项,然后向下筛选下一列,依此类推?我想是的,但是循环如何在两个比较数据集中的列之间移动?我是否需要将每个比较操作写回到数据集中进行存储,或者可以将其保存在其他地方吗?

另一种可行的方法是,我将所有列连接到一个列中,然后将这些列进行匹配,并返回匹配的 ID、其他字段和匹配的 %。

我正在寻找最好的方向,以及最佳方法的一般逻辑。

最佳答案

一般来说:尝试、观察、调整和重复。

在使用 Fuzzywuzzy 之前,可能值得探索任何小的调整来标准化并使数据尽可能一致。

  • 某些数据集可以使用 555-555-5555、0 或 - 表示空电话号码,或使用 Jan 1, 1970 表示空白出生日期。 Dataframe.replace({column:{to_replace:replace_val}) 可以帮助清理这些内容。

  • Python 的 dateutil.parser 有助于标准化各种日期格式。

  • 在分析之前尝试包裹模糊率并删除姓氏中的标点符号。

  • 地址:Pandas.column.str.upper() 可用于应用一致的大小写。也尝试不使用标点符号。

  • 连接所有字段可能是精确匹配的良好第一步。第二遍可以评估不太重要的字段(例如“性别”和“头衔”)是否缺少数据。

一般来说,您可能需要分层处理,删除直接匹配,然后删除最确定的匹配,重新评估,直到下一波所需的工作量接近您认为该项目的 yield 递减的程度。

如果您按列进行处理,您可能需要删除某些匹配项,然后从姓氏开始,然后创建下一个最具确定性的列的选择列表,并使用 fuzzywuzzy 的 process.extract 来协助决策树。可能还有我不知道的更好的方法!

关于python - 使用模糊匹配标准匹配多列数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49397732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com