Riješeno: pande filtriraju retke po nejasnim vrijednostima

U svijetu analize podataka uobičajeno je naići na velike skupove podataka koji zahtijevaju manipulaciju i obradu podataka. Jedan takav problem koji se često pojavljuje je filtriranje redaka na temelju neizrazitih vrijednosti, osobito kada se radi s tekstualnim podacima. Pandas, popularna Python biblioteka za manipulaciju podacima, pruža elegantno rješenje za rješavanje ovog problema. U ovom ćemo članku zaroniti u to kako koristiti Pande za filtriranje redaka pomoću neizrazitih vrijednosti, istražiti kod korak po korak i raspravljati o relevantnim bibliotekama i funkcijama koje mogu pomoći u rješavanju sličnih problema.

Da bismo počeli rješavati ovaj problem, iskoristit ćemo pande knjižnica zajedno s nejasno biblioteka koja pomaže izračunati sličnost između različitih nizova. The nejasno knjižnica koristi Levenshteinovu udaljenost, mjeru sličnosti koja se temelji na broju izmjena (umetanja, brisanja ili zamjena) potrebnih za transformaciju jednog niza u drugi.

Instaliranje i uvoz potrebnih biblioteka

Za početak ćemo morati instalirati i uvesti potrebne biblioteke. Možete koristiti pip da instalirate i Pandas i fuzzywuzzy:

pip install pandas
pip install fuzzywuzzy

Nakon instalacije, uvezite biblioteke u svoj Python kod:

import pandas as pd
from fuzzywuzzy import fuzz, process

Filtriranje redaka na temelju neizrazitih vrijednosti

Sada kada smo uvezli potrebne biblioteke, stvorimo fiktivni skup podataka i pokažimo kako filtrirati retke na temelju nejasnih vrijednosti. U ovom primjeru, naš skup podataka sastojat će se od naziva odjevnih predmeta i njihovih odgovarajućih stilova.

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

Pod pretpostavkom da želimo filtrirati retke koji sadrže odjevne predmete s nazivima sličnim "Majica", morat ćemo upotrijebiti fuzzywuzzy biblioteku da to postignemo.

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)

U gornjem kodu definiramo funkciju filter_redovi koji uzima četiri parametra: DataFrame, naziv stupca, niz za pretraživanje i prag sličnosti. Vraća filtrirani DataFrame na temelju navedenog praga, koji se izračunava pomoću fuzz.token_sort_ratio funkcija iz fuzzywuzzy biblioteke.

Razumijevanje koda korak po korak

  • Prvo, kreiramo DataFrame tzv df koji sadrži naš skup podataka.
  • Zatim definiramo naš niz za pretraživanje kao "Majica" i postavljamo prag sličnosti od 70. Možete prilagoditi vrijednost praga prema željenoj razini sličnosti.
  • Zatim kreiramo funkciju tzv filter_redovi, koji filtrira DataFrame na temelju Levenshteinove udaljenosti između niza za pretraživanje i vrijednosti svakog retka u navedenom stupcu.
  • Na kraju pozivamo filter_redovi funkcija za dobivanje našeg filtriranog DataFramea, filtrirani_df.

Zaključno, Pandas, u kombinaciji s fuzzywuzzy bibliotekom, izvrstan je alat za filtriranje redaka na temelju neizrazitih vrijednosti. Razumijevanje ovih biblioteka i njihovih funkcija omogućuje nam učinkovito manipuliranje podacima i rješavanje složenih zadataka obrade podataka.

Povezani postovi:

Ostavite komentar