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.