Lahendatud: pandad filtreerivad ridu hägusate väärtuste järgi

Andmeanalüüsi maailmas on tavaline kohata suuri andmekogumeid, mis nõuavad andmetega manipuleerimist ja töötlemist. Üks selline probleem, mis sageli ilmneb, on ridade filtreerimine häguste väärtuste alusel, eriti kui tegemist on tekstiandmetega. Pandas, populaarne Pythoni teek andmetega manipuleerimiseks, pakub elegantset lahendust selle probleemi lahendamiseks. Selles artiklis uurime, kuidas kasutada Pandasid hägusate väärtuste abil ridade filtreerimiseks, uurime koodi samm-sammult ning arutame asjakohaseid teeke ja funktsioone, mis võivad aidata sarnaste probleemide lahendamisel.

Selle probleemi lahendamise alustamiseks kasutame Pandad raamatukogu koos hägune raamatukogu, mis aitab arvutada erinevate stringide sarnasust. The hägune raamatukogu kasutab Levenshteini kaugust, sarnasuse mõõdikut, mis põhineb ühe stringi teiseks muutmiseks vajalike muudatuste (sisestuste, kustutamiste või asenduste) arvul.

Nõutavate teekide installimine ja importimine

Alustuseks peame installima ja importima vajalikud teegid. Pip-i saate kasutada nii Pandade kui ka fuzzywuzzy installimiseks:

pip install pandas
pip install fuzzywuzzy

Pärast installimist importige oma Pythoni koodi teegid:

import pandas as pd
from fuzzywuzzy import fuzz, process

Ridade filtreerimine hägusate väärtuste alusel

Nüüd, kui oleme nõutavad teegid importinud, loome väljamõeldud andmestiku ja näitame, kuidas filtreerida ridu ähmaste väärtuste alusel. Selles näites koosneb meie andmekogum rõivanimedest ja neile vastavatest stiilidest.

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

Eeldades, et tahame filtreerida ridu, mis sisaldavad rõivaid, mille nimed on sarnased "T-särgiga", peame selle saavutamiseks kasutama fuzzywuzzy teeki.

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)

Ülaltoodud koodis määratleme funktsiooni filter_rows mis võtab neli parameetrit: DataFrame, veeru nimi, otsingustring ja sarnasuse lävi. See tagastab filtreeritud DataFrame'i, mis põhineb määratud lävel, mis arvutatakse kasutades fuzz.token_sort_ratio funktsioon fuzzywuzzy raamatukogust.

Koodist samm-sammult arusaamine

  • Esiteks loome DataFrame'i nimega df mis sisaldab meie andmekogumit.
  • Järgmiseks määrame oma otsingustringiks "T-särk" ja määrame sarnasuse läveks 70. Saate läve väärtust kohandada vastavalt soovitud sarnasustasemele.
  • Seejärel loome funktsiooni nimega filter_rows, mis filtreerib DataFrame'i, lähtudes Levenshteini kaugusest otsingustringi ja iga rea ​​väärtuse vahel määratud veerus.
  • Lõpuks helistame filter_rows funktsioon, et saada meie filtreeritud DataFrame, filtreeritud_df.

Kokkuvõtteks võib öelda, et Pandas koos fuzzywuzzy teegiga on suurepärane tööriist häguste väärtuste põhjal ridade filtreerimiseks. Nende teekide ja nende funktsioonide mõistmine võimaldab meil andmeid tõhusalt manipuleerida ja keerulisi andmetöötlusülesandeid lahendada.

Seonduvad postitused:

Jäta kommentaar