用于检测重复记录的工具或python库

2024-05-12 18:32:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过python在单个csv文件中查找重复项,因此通过搜索我找到了dedupe.io,这是一个使用python和机器学习算法检测重复记录的平台,但它不是免费工具。但是,我不想使用传统的方法来指定比较列。我想找到一种方法来检测重复与高精度。因此,是否有任何工具或python库来查找文本数据集的副本

  • 下面是一个例子,可以说明:

      Title, Authors, Venue, Year
      1- Clustering validity checking methods: part II, Maria Halkidi, Yannis Batistakis, Michalis Vazirgiannis, ACM SIGMOD Record, 2002
      2- Cluster validity methods: part I, Yannis Batistakis, Michalis Vazirgiannis, ACM SIGMOD Record, 2002
      3- Book reviews, Karl Aberer, ACM SIGMOD Record, 2003
      4- Book review column, Karl Aberer, ACM SIGMOD Record, 2003
      5- Book reviews, Leonid Libkin, ACM SIGMOD Record, 2003
    

因此,我们可以确定记录1和记录2不重复,即使它们包含几乎相似的数据,但在标题列中略有不同。记录3和4重复,但记录5指的不是同一实体


Tags: 工具数据方法记录recordmethodspartacm
2条回答

谢谢@JPI93的回答,但仍有一些副本存在,没有删除。我认为这种方法适用于精确复制;如果是这样的话,那不是我要找的。我想应用记录链接,它标识引用同一实体的记录,然后可以删除这些记录

Pandas提供了一种非常简单的方法来实现这个pandas.DataFrame.drop_duplicates

给定存储在当前工作目录中的以下文件(data.csv

name,age,salary
John Doe,25,50000
Jayne Doe,20,80000
Tim Smith,40,100000
John Doe,25,50000
Louise Jones,25,50000

以下脚本可用于删除重复记录,将处理后的数据写入当前工作目录(processed_data.csv)中的csv文件

import pandas as pd

df = pd.read_csv("data.csv")
df = df.drop_duplicates()
df.to_csv("processed_data.csv", index=False)

本例中的结果输出如下所示:

name,age,salary
John Doe,25,50000
Jayne Doe,20,80000
Tim Smith,40,100000
Louise Jones,25,50000

pandas.DataFrame.drop_duplicates还允许从特定列中删除重复的属性(而不仅仅是整行的重复属性),使用subset参数指定列名

例如

import pandas as pd

df = pd.read_csv("data.csv")
df = df.drop_duplicates(subset=["age"])
df.to_csv("processed_data.csv", index=False)

将删除age列中的所有重复值,只保留第一条记录,该记录包含在以后记录的age字段中重复的值

在本例中,输出为:

name,age,salary
John Doe,25,50000
Jayne Doe,20,80000
Tim Smith,40,100000

相关问题 更多 >