Megoldva: pandák szűrik a sorokat fuzzy értékek alapján

Az adatelemzés világában gyakori, hogy nagy adathalmazokkal találkozunk, amelyek adatkezelést és -feldolgozást igényelnek. Az egyik ilyen gyakran felmerülő probléma a sorok fuzzy értékek alapján történő szűrése, különösen szöveges adatok kezelésekor. A Pandas, egy népszerű Python-könyvtár adatkezelésre, elegáns megoldást kínál a probléma megoldására. Ebben a cikkben bemutatjuk, hogyan használhatjuk a Pandákat a sorok fuzzy értékek használatával történő szűrésére, lépésről lépésre fedezzük fel a kódot, és megvitatjuk azokat a releváns könyvtárakat és funkciókat, amelyek segíthetnek hasonló problémák megoldásában.

A probléma kezelésének megkezdéséhez kihasználjuk a pandák könyvtárral együtt a fuzzywuzzy könyvtár, amely segít kiszámítani a hasonlóságot a különböző karakterláncok között. A fuzzywuzzy A könyvtár a Levenshtein távolságot használja, amely a hasonlóság mértéke azon szerkesztések (beszúrások, törlések vagy helyettesítések) számán alapul, amelyek az egyik karakterlánc másikká alakításához szükségesek.

A szükséges könyvtárak telepítése és importálása

A kezdéshez telepítenünk és importálnunk kell a szükséges könyvtárakat. A pip segítségével a Pandákat és a fuzzywuzzy-t is telepítheti:

pip install pandas
pip install fuzzywuzzy

A telepítés után importálja a könyvtárakat a Python-kódban:

import pandas as pd
from fuzzywuzzy import fuzz, process

Sorok szűrése fuzzy értékek alapján

Most, hogy importáltuk a szükséges könyvtárakat, hozzunk létre egy kitalált adatkészletet, és mutassuk be, hogyan szűrhetünk sorokat fuzzy értékek alapján. Ebben a példában az adatkészletünk a ruhanevekből és a hozzájuk tartozó stílusokból áll.

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

Feltételezve, hogy ki akarjuk szűrni a „Tee shirt”-hez hasonló nevű ruhadarabokat tartalmazó sorokat, ehhez a fuzzywuzzy könyvtárat kell használnunk.

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)

A fenti kódban definiálunk egy függvényt filter_rows amely négy paramétert igényel: a DataFrame-et, az oszlop nevét, a keresési karakterláncot és a hasonlósági küszöböt. Egy szűrt DataFrame-et ad vissza a megadott küszöbérték alapján, amely a következővel kerül kiszámításra fuzz.token_sort_ratio függvényt a fuzzywuzzy könyvtárból.

A kód megértése lépésről lépésre

  • Először létrehozunk egy DataFrame nevű keretet df adatkészletünket tartalmazza.
  • Ezután meghatározzuk a keresési karakterláncunkat „Póló”-ként, és beállítunk egy 70-es hasonlósági küszöböt. A küszöbértéket a kívánt hasonlósági szintnek megfelelően módosíthatja.
  • Ezután létrehozunk egy függvényt, melynek neve filter_rows, amely a keresési karakterlánc és a megadott oszlopban lévő egyes sorok értéke közötti Levenshtein távolság alapján szűri a DataFrame-et.
  • Végül hívjuk a filter_rows függvény a szűrt DataFrame beszerzéséhez, szűrt_df.

Összefoglalva, a Pandas a fuzzywuzzy könyvtárral kombinálva kiváló eszköz a sorok fuzzy értékek alapján történő szűrésére. Ezen könyvtárak és funkcióik megértése lehetővé teszi az adatok hatékony kezelését és összetett adatfeldolgozási feladatok megoldását.

Kapcsolódó hozzászólások:

Írj hozzászólást