Išspręsta: pandos filtruoja eilutes pagal neaiškias reikšmes

Duomenų analizės pasaulyje įprasta susidurti su dideliais duomenų rinkiniais, kuriems reikia manipuliuoti ir apdoroti duomenis. Viena iš tokių dažnai kylančių problemų yra eilučių filtravimas pagal neaiškias reikšmes, ypač kai kalbama apie tekstinius duomenis. Pandas, populiari Python biblioteka, skirta manipuliuoti duomenimis, yra elegantiškas sprendimas, padedantis išspręsti šią problemą. Šiame straipsnyje apžvelgsime, kaip naudoti Pandas filtruojant eilutes naudojant neaiškias reikšmes, žingsnis po žingsnio išnagrinėsime kodą ir aptarsime atitinkamas bibliotekas ir funkcijas, kurios gali padėti išspręsti panašias problemas.

Norėdami pradėti spręsti šią problemą, pasinaudosime Pandas biblioteka kartu su neaiškus biblioteka, kuri padeda apskaičiuoti skirtingų eilučių panašumą. The neaiškus biblioteka naudoja Levenshtein atstumą – panašumo matą, pagrįstą pakeitimų (įterpimų, ištrynimų ar pakeitimų), reikalingų vienai eilutei paversti kita, skaičiumi.

Reikalingų bibliotekų diegimas ir importavimas

Norėdami pradėti, turėsime įdiegti ir importuoti reikiamas bibliotekas. Galite naudoti pip, kad įdiegtumėte ir Pandas, ir fuzzywuzzy:

pip install pandas
pip install fuzzywuzzy

Įdiegę importuokite bibliotekas į savo Python kodą:

import pandas as pd
from fuzzywuzzy import fuzz, process

Eilučių filtravimas pagal neaiškias reikšmes

Dabar, kai importavome reikiamas bibliotekas, sukurkime išgalvotą duomenų rinkinį ir parodykime, kaip filtruoti eilutes pagal neaiškias reikšmes. Šiame pavyzdyje mūsų duomenų rinkinį sudarys drabužių pavadinimai ir juos atitinkantys stiliai.

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

Darant prielaidą, kad norime filtruoti eilutes, kuriose yra drabužių, kurių pavadinimai yra panašūs į „Marškinėliai“, norėdami tai padaryti, turėsime naudoti neaiškią biblioteką.

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)

Aukščiau pateiktame kode apibrėžiame funkciją filtras_eilutės Tam reikalingi keturi parametrai: DataFrame, stulpelio pavadinimas, paieškos eilutė ir panašumo slenkstis. Jis grąžina filtruotą duomenų rėmelį pagal nurodytą slenkstį, kuris apskaičiuojamas naudojant fuzz.token_sort_ratio funkcija iš fuzzywuzzy bibliotekos.

Kodo supratimas žingsnis po žingsnio

  • Pirmiausia sukuriame DataFrame, vadinamą df kuriame yra mūsų duomenų rinkinys.
  • Tada apibrėžiame savo paieškos eilutę kaip „Marškinėliai“ ir nustatome 70 panašumo slenkstį. Galite koreguoti slenksčio reikšmę pagal norimą panašumo lygį.
  • Tada sukuriame funkciją, vadinamą filtras_eilutės, kuri filtruoja DataFrame pagal Levenshtein atstumą tarp paieškos eilutės ir kiekvienos eilutės reikšmės nurodytame stulpelyje.
  • Galiausiai mes vadiname filtras_eilutės funkcija gauti mūsų filtruotą duomenų rėmelį, filtruotas_df.

Apibendrinant galima pasakyti, kad Pandas kartu su fuzzywuzzy biblioteka yra puikus įrankis filtruoti eilutes pagal neaiškias reikšmes. Šių bibliotekų ir jų funkcijų supratimas leidžia efektyviai manipuliuoti duomenimis ir spręsti sudėtingas duomenų apdorojimo užduotis.

Susijusios naujienos:

Palikite komentarą