Решено: панде филтрирају редове према нејасним вредностима

У свету анализе података, уобичајено је наићи на велике скупове података који захтевају манипулацију и обраду података. Један такав проблем који се често јавља је филтрирање редова на основу нејасних вредности, посебно када се ради о текстуалним подацима. Пандас, популарна Питхон библиотека за манипулацију подацима, пружа елегантно решење за решавање овог проблема. У овом чланку ћемо уронити у то како да користимо Пандас за филтрирање редова користећи нејасне вредности, истражићемо код корак по корак и разговарати о релевантним библиотекама и функцијама које могу помоћи у решавању сличних проблема.

Да бисмо почели да решавамо овај проблем, искористићемо панде библиотека заједно са фуззивуззи библиотека која помаже у израчунавању сличности између различитих стрингова. Тхе фуззивуззи библиотека користи Левенштајнову дистанцу, меру сличности засновану на броју измена (уметања, брисања или замена) потребних за трансформацију једног стринга у други.

Инсталирање и увоз потребних библиотека

За почетак, мораћемо да инсталирамо и увеземо потребне библиотеке. Можете користити пип да инсталирате и Панде и фуззивуззи:

pip install pandas
pip install fuzzywuzzy

Након инсталације, увезите библиотеке у свој Питхон код:

import pandas as pd
from fuzzywuzzy import fuzz, process

Филтрирање редова на основу нејасних вредности

Сада када смо увезли потребне библиотеке, хајде да направимо измишљени скуп података и покажемо како да филтрирамо редове на основу нејасних вредности. У овом примеру, наш скуп података ће се састојати од назива одеће и њихових одговарајућих стилова.

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

Под претпоставком да желимо да филтрирамо редове који садрже одећу са називима сличним „Тее схирт“, мораћемо да употребимо фуззивуззи библиотеку да бисмо ово постигли.

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)

У горњем коду дефинишемо функцију филтер_ровс који узима четири параметра: ДатаФраме, име колоне, стринг за претрагу и праг сличности. Враћа филтрирани ДатаФраме на основу наведеног прага, који се израчунава помоћу фузз.токен_сорт_ратио функција из фуззивуззи библиотеке.

Разумевање кода корак по корак

  • Прво, креирамо ДатаФраме под називом df који садржи наш скуп података.
  • Затим дефинишемо наш стринг за претрагу као „Тее схирт“ и постављамо праг сличности од 70. Можете подесити вредност прага према жељеном нивоу сличности.
  • Затим креирамо функцију под називом филтер_ровс, који филтрира ДатаФраме на основу Левенштајнове удаљености између стринга за претрагу и вредности сваког реда у наведеној колони.
  • Коначно, зовемо филтер_ровс функцију за добијање нашег филтрираног оквира података, филтеред_дф.

У закључку, Пандас, у комбинацији са фуззивуззи библиотеком, је одличан алат за филтрирање редова на основу фуззи вредности. Разумевање ових библиотека и њихових функција омогућава нам да ефикасно манипулишемо подацима и решавамо сложене задатке обраде података.

Релатед постс:

Оставите коментар