Rezolvat: panda filtrează rândurile după valori neclare

Ultima actualizare: 09/11/2023

În lumea analizei datelor, este obișnuit să întâlniți seturi mari de date care necesită manipulare și procesare a datelor. O astfel de problemă care apare adesea este filtrarea rândurilor pe baza valorilor neclare, în special atunci când se ocupă de date textuale. Pandas, o bibliotecă populară Python pentru manipularea datelor, oferă o soluție elegantă pentru a ajuta la rezolvarea acestei probleme. În acest articol, vom descoperi cum să folosiți Pandas pentru a filtra rândurile folosind valori neclare, vom explora codul pas cu pas și vom discuta despre bibliotecile și funcțiile relevante care pot ajuta la rezolvarea unor probleme similare.

Pentru a începe să rezolvăm această problemă, vom folosi funcția ursi panda bibliotecă împreună cu fuzzywuzzy bibliotecă care ajută la calcularea similitudinii dintre diferitele șiruri. The fuzzywuzzy biblioteca folosește distanța Levenshtein, o măsură a similitudinii bazată pe numărul de editări (inserții, ștergeri sau înlocuiri) necesare pentru a transforma un șir în altul.

Instalarea și importarea bibliotecilor necesare

Pentru a începe, va trebui să instalăm și să importam bibliotecile necesare. Puteți folosi pip pentru a instala atât Pandas, cât și fuzzywuzzy:

pip install pandas
pip install fuzzywuzzy

Odată instalat, importați bibliotecile în codul dvs. Python:

import pandas as pd
from fuzzywuzzy import fuzz, process

Filtrarea rândurilor pe baza valorilor neclare

Acum că am importat bibliotecile necesare, să creăm un set de date fictiv și să arătăm cum să filtram rândurile pe baza valorilor neclare. În acest exemplu, setul nostru de date va consta din numele articolelor de îmbrăcăminte și stilurile lor corespunzătoare.

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

Presupunând că dorim să filtram rândurile care conțin articole de îmbrăcăminte cu nume similare cu „Tricou”, va trebui să folosim biblioteca fuzzywuzzy pentru a realiza acest lucru.

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)

În codul de mai sus, definim o funcție filter_rows care ia patru parametri: DataFrame, numele coloanei, șirul de căutare și pragul de similaritate. Returnează un DataFrame filtrat pe baza pragului specificat, care este calculat folosind fuzz.token_sort_ratie funcția din biblioteca fuzzywuzzy.

Înțelegerea codului pas cu pas

  • Mai întâi, creăm un DataFrame numit df care conține setul nostru de date.
  • În continuare, definim șirul nostru de căutare ca „Tricou” și setăm un prag de similaritate de 70. Puteți ajusta valoarea pragului în funcție de nivelul dorit de similitudine.
  • Apoi creăm o funcție numită filter_rows, care filtrează DataFrame pe baza distanței Levenshtein dintre șirul de căutare și valoarea fiecărui rând din coloana specificată.
  • În cele din urmă, numim filter_rows funcție pentru a obține DataFrame-ul nostru filtrat, filtrat_df.

În concluzie, Pandas, în combinație cu biblioteca fuzzywuzzy, este un instrument excelent pentru filtrarea rândurilor pe baza valorilor fuzzy. Înțelegerea acestor biblioteci și funcțiile lor ne permite să manipulăm eficient datele și să rezolvăm sarcini complexe de procesare a datelor.

Postări asemănatoare: