Gelöst: Pandas filtern Zeilen nach Fuzzy-Werten

In der Welt der Datenanalyse ist es üblich, auf große Datensätze zu stoßen, die eine Datenmanipulation und -verarbeitung erfordern. Ein häufig auftretendes Problem ist das Filtern von Zeilen basierend auf Fuzzy-Werten, insbesondere wenn es sich um Textdaten handelt. Pandas, eine beliebte Python-Bibliothek zur Datenmanipulation, bietet eine elegante Lösung, um dieses Problem anzugehen. In diesem Artikel befassen wir uns mit der Verwendung von Pandas zum Filtern von Zeilen mit Fuzzy-Werten, erkunden den Code Schritt für Schritt und diskutieren relevante Bibliotheken und Funktionen, die bei der Lösung ähnlicher Probleme helfen können.

Um dieses Problem anzugehen, nutzen wir die Pandas Bibliothek zusammen mit der Durcheinander Bibliothek, die hilft, die Ähnlichkeit zwischen verschiedenen Zeichenfolgen zu berechnen. Der Durcheinander Die Bibliothek verwendet die Levenshtein-Distanz, ein Maß für die Ähnlichkeit, das auf der Anzahl der Bearbeitungen (Einfügungen, Löschungen oder Ersetzungen) basiert, die erforderlich sind, um eine Zeichenfolge in eine andere umzuwandeln.

Installieren und Importieren erforderlicher Bibliotheken

Zunächst müssen wir die erforderlichen Bibliotheken installieren und importieren. Sie können pip verwenden, um sowohl Pandas als auch fuzzywuzzy zu installieren:

pip install pandas
pip install fuzzywuzzy

Importieren Sie nach der Installation die Bibliotheken in Ihren Python-Code:

import pandas as pd
from fuzzywuzzy import fuzz, process

Filtern von Zeilen basierend auf Fuzzy-Werten

Nachdem wir nun die erforderlichen Bibliotheken importiert haben, erstellen wir einen fiktiven Datensatz und zeigen, wie Zeilen basierend auf Fuzzy-Werten gefiltert werden. In diesem Beispiel besteht unser Datensatz aus Kleidungsstücknamen und den entsprechenden Stilen.

data = {'Garment': ['T-shirt', 'Polo shirt', 'Jeans', 'Leather jacket', 'Winter coat'],
        'Style': ['Casual', 'Casual', 'Casual', 'Biker', 'Winter']}
df = pd.DataFrame(data)

Angenommen, wir möchten Zeilen filtern, die Kleidungsstücke mit ähnlichen Namen wie „T-Shirt“ enthalten, müssen wir die fuzzywuzzy-Bibliothek verwenden, um dies zu erreichen.

search_string = "Tee shirt"
threshold = 70

def filter_rows(df, column, search_string, threshold):
    return df[df[column].apply(lambda x: fuzz.token_sort_ratio(x, search_string)) >= threshold]

filtered_df = filter_rows(df, 'Garment', search_string, threshold)

Im obigen Code definieren wir eine Funktion filter_rows die vier Parameter benötigt: den DataFrame, den Spaltennamen, die Suchzeichenfolge und den Ähnlichkeitsschwellenwert. Es gibt einen gefilterten DataFrame basierend auf dem angegebenen Schwellenwert zurück, der mithilfe von berechnet wird fuzz.token_sort_ratio Funktion aus der fuzzywuzzy-Bibliothek.

Den Code Schritt für Schritt verstehen

  • Zuerst erstellen wir einen DataFrame namens df enthält unseren Datensatz.
  • Als nächstes definieren wir unsere Suchzeichenfolge als „T-Shirt“ und legen einen Ähnlichkeitsschwellenwert von 70 fest. Sie können den Schwellenwert entsprechend Ihrem gewünschten Ähnlichkeitsgrad anpassen.
  • Dann erstellen wir eine Funktion namens filter_rows, die den DataFrame basierend auf dem Levenshtein-Abstand zwischen der Suchzeichenfolge und dem Wert jeder Zeile in der angegebenen Spalte filtert.
  • Schließlich nennen wir die filter_rows Funktion, um unseren gefilterten DataFrame zu erhalten, gefiltert_df.

Zusammenfassend lässt sich sagen, dass Pandas in Kombination mit der Fuzzywuzzy-Bibliothek ein hervorragendes Tool zum Filtern von Zeilen basierend auf Fuzzy-Werten ist. Das Verständnis dieser Bibliotheken und ihrer Funktionen ermöglicht es uns, Daten effizient zu manipulieren und komplexe Datenverarbeitungsaufgaben zu lösen.

Zusammenhängende Posts:

Hinterlasse einen Kommentar