Vyriešené: pandy filtrujú riadky podľa fuzzy hodnôt

Vo svete analýzy údajov sa bežne stretávame s veľkými súbormi údajov, ktoré vyžadujú manipuláciu a spracovanie údajov. Jedným z takýchto problémov, ktorý často vzniká, je filtrovanie riadkov na základe fuzzy hodnôt, najmä pri práci s textovými údajmi. Pandas, populárna knižnica Python na manipuláciu s údajmi, poskytuje elegantné riešenie, ktoré vám pomôže tento problém vyriešiť. V tomto článku sa ponoríme do toho, ako používať Pandas na filtrovanie riadkov pomocou fuzzy hodnôt, krok za krokom preskúmame kód a prediskutujeme relevantné knižnice a funkcie, ktoré môžu pomôcť pri riešení podobných problémov.

Ak chcete začať riešiť tento problém, využijeme pandy knižnica spolu s fuzzywuzzy knižnica, ktorá pomáha vypočítať podobnosť medzi rôznymi reťazcami. The fuzzywuzzy knižnica používa Levenshteinovu vzdialenosť, čo je miera podobnosti založená na počte úprav (vložení, vymazania alebo nahradenia) potrebných na transformáciu jedného reťazca na iný.

Inštalácia a import požadovaných knižníc

Ak chcete začať, budeme musieť nainštalovať a importovať potrebné knižnice. Pip môžete použiť na inštaláciu Pandy aj fuzzywuzzy:

pip install pandas
pip install fuzzywuzzy

Po inštalácii importujte knižnice do kódu Pythonu:

import pandas as pd
from fuzzywuzzy import fuzz, process

Filtrovanie riadkov na základe fuzzy hodnôt

Teraz, keď sme importovali požadované knižnice, poďme vytvoriť fiktívny súbor údajov a ukázať, ako filtrovať riadky na základe fuzzy hodnôt. V tomto príklade bude naša množina údajov pozostávať z názvov odevov a ich zodpovedajúcich štýlov.

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

Za predpokladu, že chceme filtrovať riadky obsahujúce odevy s názvami podobnými ako „Tričko“, budeme na to musieť použiť knižnicu fuzzywuzzy.

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)

Vo vyššie uvedenom kóde definujeme funkciu filter_rows ktorý má štyri parametre: DataFrame, názov stĺpca, hľadaný reťazec a prah podobnosti. Vracia filtrovaný DataFrame na základe špecifikovaného prahu, ktorý sa vypočíta pomocou fuzz.token_sort_ratio funkcie z knižnice fuzzywuzzy.

Pochopenie kódexu krok za krokom

  • Najprv vytvoríme DataFrame tzv df obsahujúce náš súbor údajov.
  • Ďalej definujeme náš vyhľadávací reťazec ako „Tričko“ a nastavíme prah podobnosti na 70. Prahovú hodnotu môžete upraviť podľa požadovanej úrovne podobnosti.
  • Potom vytvoríme funkciu tzv filter_rows, ktorá filtruje DataFrame na základe Levenshteinovej vzdialenosti medzi hľadaným reťazcom a hodnotou každého riadka v zadanom stĺpci.
  • Nakoniec zavoláme filter_rows funkcia na získanie nášho filtrovaného DataFrame, filter_df.

Záverom možno povedať, že Pandas v kombinácii s knižnicou fuzzywuzzy je vynikajúci nástroj na filtrovanie riadkov na základe fuzzy hodnôt. Pochopenie týchto knižníc a ich funkcií nám umožňuje efektívne manipulovať s údajmi a riešiť zložité úlohy spracovania údajov.

Súvisiace príspevky:

Pridať komentár