Vyřešeno: pandy filtrují řádky podle fuzzy hodnot

Ve světě analýzy dat se běžně setkáváme s velkými soubory dat, které vyžadují manipulaci a zpracování dat. Jedním takovým problémem, který se často objevuje, je filtrování řádků na základě fuzzy hodnot, zejména při práci s textovými daty. Pandas, oblíbená knihovna Pythonu pro manipulaci s daty, poskytuje elegantní řešení, které vám pomůže tento problém vyřešit. V tomto článku se ponoříme do toho, jak používat Pandas k filtrování řádků pomocí fuzzy hodnot, prozkoumáme kód krok za krokem a probereme příslušné knihovny a funkce, které mohou pomoci při řešení podobných problémů.

Chcete-li začít tento problém řešit, využijeme Pandy knihovna spolu s fuzzywuzzy knihovna, která pomáhá vypočítat podobnost mezi různými řetězci. The fuzzywuzzy knihovna používá Levenshteinovu vzdálenost, míru podobnosti založenou na počtu úprav (vložení, odstranění nebo nahrazení) potřebných k transformaci jednoho řetězce na jiný.

Instalace a import požadovaných knihoven

Chcete-li začít, budeme muset nainstalovat a importovat potřebné knihovny. Pip můžete použít k instalaci Pandy i fuzzywuzzy:

pip install pandas
pip install fuzzywuzzy

Po instalaci importujte knihovny do kódu Pythonu:

import pandas as pd
from fuzzywuzzy import fuzz, process

Filtrování řádků na základě fuzzy hodnot

Nyní, když jsme importovali požadované knihovny, vytvoříme fiktivní datovou sadu a předvedeme, jak filtrovat řádky na základě fuzzy hodnot. V tomto příkladu bude naše datová sada sestávat z názvů oděvů a jejich odpovídajících stylů.

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

Za předpokladu, že chceme filtrovat řádky obsahující oděvy s názvy podobnými „Tee shirt“, budeme k tomu muset použít knihovnu 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)

Ve výše uvedeném kódu definujeme funkci řádky_filtru který má čtyři parametry: DataFrame, název sloupce, vyhledávací řetězec a práh podobnosti. Vrací filtrovaný DataFrame na základě zadaného prahu, který se vypočítá pomocí fuzz.token_sort_ratio funkce z knihovny fuzzywuzzy.

Pochopení kódu krok za krokem

  • Nejprve vytvoříme DataFrame tzv df obsahující naši datovou sadu.
  • Dále definujeme náš vyhledávací řetězec jako „Tee shirt“ a nastavíme práh podobnosti 70. Hodnotu prahu můžete upravit podle požadované úrovně podobnosti.
  • Poté vytvoříme funkci tzv řádky_filtru, která filtruje DataFrame na základě Levenshteinovy ​​vzdálenosti mezi hledaným řetězcem a hodnotou každého řádku v určeném sloupci.
  • Nakonec zavoláme řádky_filtru funkce pro získání našeho filtrovaného DataFrame, filter_df.

Závěrem lze říci, že Pandas je v kombinaci s knihovnou fuzzywuzzy vynikajícím nástrojem pro filtrování řádků na základě fuzzy hodnot. Pochopení těchto knihoven a jejich funkcí nám umožňuje efektivně manipulovat s daty a řešit složité úlohy zpracování dat.

Související příspěvky:

Zanechat komentář