Ratkaistu: pandat suodattavat rivit sumeiden arvojen mukaan

Data-analyysin maailmassa on tavallista kohdata suuria tietojoukkoja, jotka vaativat tietojen käsittelyä ja käsittelyä. Yksi tällainen usein esiin nouseva ongelma on rivien suodattaminen sumeiden arvojen perusteella, erityisesti kun käsitellään tekstidataa. Pandas, suosittu Python-kirjasto tietojen käsittelyyn, tarjoaa tyylikkään ratkaisun tämän ongelman ratkaisemiseen. Tässä artikkelissa perehdymme siihen, kuinka Pandaa käytetään rivien suodattamiseen sumeiden arvojen avulla, tutkitaan koodia vaiheittain ja keskustellaan asiaankuuluvista kirjastoista ja toiminnoista, jotka voivat auttaa ratkaisemaan samanlaisia ​​ongelmia.

Aloitamme tämän ongelman ratkaisemisen hyödyntämällä Panda kirjasto yhdessä sumeaa kirjasto, joka auttaa laskemaan eri merkkijonojen samankaltaisuuden. The sumeaa kirjasto käyttää Levenshtein-etäisyyttä, samankaltaisuuden mittaa, joka perustuu muokkausten (lisäysten, poistojen tai korvausten) määrään, joka tarvitaan merkkijonon muuntamiseen toiseksi.

Vaadittujen kirjastojen asentaminen ja tuonti

Aloittaaksemme meidän on asennettava ja tuotava tarvittavat kirjastot. Voit asentaa sekä Pandas- että fuzzywuzzy-sovelluksen pip:llä:

pip install pandas
pip install fuzzywuzzy

Asennuksen jälkeen tuo Python-koodisi kirjastot:

import pandas as pd
from fuzzywuzzy import fuzz, process

Rivien suodatus sumeiden arvojen perusteella

Nyt kun olemme tuoneet tarvittavat kirjastot, luodaan kuvitteellinen tietojoukko ja esitellään, kuinka rivejä suodatetaan sumeiden arvojen perusteella. Tässä esimerkissä tietojoukkomme koostuu vaatteiden nimistä ja niitä vastaavista tyyleistä.

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

Olettaen, että haluamme suodattaa rivejä, jotka sisältävät vaatteita, joiden nimi on samanlainen kuin "T-paita", meidän on käytettävä fuzzywuzzy-kirjastoa tämän saavuttamiseksi.

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)

Yllä olevassa koodissa määritämme funktion filter_rows joka vaatii neljä parametria: DataFrame, sarakkeen nimi, hakumerkkijono ja samankaltaisuuskynnys. Se palauttaa suodatetun DataFrame-kehyksen, joka perustuu määritettyyn kynnykseen, joka lasketaan käyttämällä fuzz.token_sort_ratio toiminto fuzzywuzzy-kirjastosta.

Koodin ymmärtäminen vaihe vaiheelta

  • Ensin luomme DataFrame-nimisen df joka sisältää tietojoukkomme.
  • Seuraavaksi määritämme hakumerkkijonoksi "T-paita" ja asetamme samankaltaisuuden kynnysarvoksi 70. Voit säätää kynnysarvoa haluamasi samankaltaisuustason mukaan.
  • Luomme sitten funktion nimeltä filter_rows, joka suodattaa DataFramen hakumerkkijonon ja määritetyn sarakkeen jokaisen rivin arvon välisen Levenshtein-etäisyyden perusteella.
  • Lopuksi kutsumme filter_rows toiminto saada suodatettu DataFrame, filtered_df.

Yhteenvetona voidaan todeta, että Pandas yhdistettynä sumea-wuzzy-kirjastoon on erinomainen työkalu rivien suodattamiseen sumeiden arvojen perusteella. Näiden kirjastojen ja niiden toimintojen ymmärtäminen antaa meille mahdollisuuden käsitellä tietoja tehokkaasti ja ratkaista monimutkaisia ​​tietojenkäsittelytehtäviä.

Related viestiä:

Jätä kommentti