Löst: pandor filtrerar rader efter luddiga värden

I en värld av dataanalys är det vanligt att stöta på stora datamängder som kräver datamanipulation och bearbetning. Ett sådant problem som ofta uppstår är att filtrera rader baserat på otydliga värden, särskilt när man hanterar textdata. Pandas, ett populärt Python-bibliotek för datamanipulering, tillhandahåller en elegant lösning för att hjälpa till att ta itu med det här problemet. I den här artikeln kommer vi att dyka ner i hur man använder Pandas för att filtrera rader med luddiga värden, utforska koden steg-för-steg och diskutera relevanta bibliotek och funktioner som kan hjälpa till att lösa liknande problem.

För att börja ta itu med det här problemet kommer vi att utnyttja pandas biblioteket tillsammans med fuzzywuzzy bibliotek som hjälper till att beräkna likheten mellan olika strängar. De fuzzywuzzy biblioteket använder Levenshtein-avståndet, ett mått på likhet baserat på antalet redigeringar (infogningar, borttagningar eller ersättningar) som behövs för att omvandla en sträng till en annan.

Installera och importera nödvändiga bibliotek

För att börja måste vi installera och importera nödvändiga bibliotek. Du kan använda pip för att installera både Pandas och fuzzywuzzy:

pip install pandas
pip install fuzzywuzzy

När du har installerat, importera biblioteken i din Python-kod:

import pandas as pd
from fuzzywuzzy import fuzz, process

Filtrera rader baserat på luddiga värden

Nu när vi har importerat de nödvändiga biblioteken, låt oss skapa en fiktiv datamängd och visa upp hur man filtrerar rader baserat på otydliga värden. I det här exemplet kommer vår datauppsättning att bestå av plaggnamn och deras motsvarande stilar.

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

Om vi ​​antar att vi vill filtrera rader som innehåller plagg med namn som liknar "Tee shirt", måste vi använda fuzzywuzzy-biblioteket för att åstadkomma detta.

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)

I koden ovan definierar vi en funktion filter_rader som tar fyra parametrar: DataFrame, kolumnnamnet, söksträngen och likhetströskeln. Den returnerar en filtrerad DataFrame baserat på den angivna tröskeln, som beräknas med hjälp av fuzz.token_sort_ratio funktion från fuzzywuzzy-biblioteket.

Förstå koden steg-för-steg

  • Först skapar vi en DataFrame som heter df som innehåller vår datamängd.
  • Därefter definierar vi vår söksträng som "T-shirt" och ställer in en likhetströskel på 70. Du kan justera tröskelvärdet efter din önskade likhetsnivå.
  • Vi skapar sedan en funktion som heter filter_rader, som filtrerar DataFrame baserat på Levenshtein-avståndet mellan söksträngen och varje rads värde i den angivna kolumnen.
  • Slutligen kallar vi filter_rader funktion för att få vår filtrerade DataFrame, filtrerad_df.

Sammanfattningsvis är Pandas, i kombination med fuzzywuzzy-biblioteket, ett utmärkt verktyg för att filtrera rader baserat på fuzzy värden. Genom att förstå dessa bibliotek och deras funktioner kan vi effektivt manipulera data och lösa komplexa databearbetningsuppgifter.

Relaterade inlägg:

Lämna en kommentar