Tools oder Python-Bibliotheken zum Erkennen doppelter Datensätze
Ich versuche, Duplikate in einer einzelnen CSV-Datei mit Python zu finden. Bei meiner Suche habe ich dedupe.io gefunden, eine Plattform, die Python- und maschinelle Lernalgorithmen verwendet, um doppelte Datensätze zu erkennen, aber kein kostenloses Tool. Ich möchte jedoch nicht die traditionelle Methode verwenden, die in den verglichenen Spalten angegeben werden sollte. Ich möchte einen Weg finden, um Duplikate mit hoher Genauigkeit zu erkennen. Gibt es daher ein Tool oder eine Python-Bibliothek, um Duplikate für Textdatensätze zu finden?
Hier ist ein Beispiel, das dies verdeutlichen könnte:
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
Wir können also entscheiden, dass die Datensätze 1 und 2 nicht doppelt vorhanden sind, obwohl sie fast ähnliche Daten enthalten, sich jedoch in der Spalte Titel geringfügig unterscheiden. Die Datensätze 3 und 4 sind doppelt vorhanden, aber Datensatz 5 bezieht sich nicht auf dieselbe Entität.
Antworten
Pandasbietet eine sehr einfache Möglichkeit, diese pandas.DataFrame.drop_duplicates zu erreichen .
Angesichts der folgenden Datei ( data.csv) im aktuellen Arbeitsverzeichnis gespeichert.
name,age,salary
John Doe,25,50000
Jayne Doe,20,80000
Tim Smith,40,100000
John Doe,25,50000
Louise Jones,25,50000
Das folgende Skript kann verwendet werden, um doppelte Datensätze zu entfernen und die verarbeiteten Daten in eine CSV-Datei im aktuellen Arbeitsverzeichnis ( processed_data.csv) zu schreiben .
import pandas as pd
df = pd.read_csv("data.csv")
df = df.drop_duplicates()
df.to_csv("processed_data.csv", index=False)
Die resultierende Ausgabe in diesem Beispiel sieht folgendermaßen aus:
name,age,salary
John Doe,25,50000
Jayne Doe,20,80000
Tim Smith,40,100000
Louise Jones,25,50000
pandas.DataFrame.drop_duplicates ermöglicht auch das Löschen doppelter Attribute aus einer bestimmten Spalte (anstatt nur Duplikate ganzer Zeilen). Spaltennamen werden mithilfe des subsetArguments angegeben.
z.B
import pandas as pd
df = pd.read_csv("data.csv")
df = df.drop_duplicates(subset=["age"])
df.to_csv("processed_data.csv", index=False)
Entfernt alle doppelten Werte aus der ageSpalte, wobei nur der erste Datensatz beibehalten wird, der einen Wert enthält, der im ageFeld späterer Datensätze dupliziert wurde .
In diesem Beispiel wäre die Ausgabe:
name,age,salary
John Doe,25,50000
Jayne Doe,20,80000
Tim Smith,40,100000
Vielen Dank an JPI93 für Ihre Antwort, aber es gibt noch einige Duplikate, die nicht entfernt wurden. Ich denke, diese Methode funktioniert für das genaue Duplikat; Wenn dies der Fall ist, ist es nicht das, wonach ich suche. Ich möchte eine Datensatzverknüpfung anwenden, die die Datensätze identifiziert, die sich auf dieselbe Entität beziehen und dann entfernt werden können.