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.