Diselesaikan: panda memfilter baris dengan nilai fuzzy

Dalam dunia analisis data, sangat umum untuk menemukan kumpulan data besar yang memerlukan manipulasi dan pemrosesan data. Salah satu masalah yang sering muncul adalah memfilter baris berdasarkan nilai fuzzy, khususnya ketika berhadapan dengan data tekstual. Pandas, pustaka Python populer untuk manipulasi data, memberikan solusi elegan untuk membantu mengatasi masalah ini. Dalam artikel ini, kita akan mendalami cara menggunakan Panda untuk memfilter baris menggunakan nilai fuzzy, menjelajahi kode langkah demi langkah, dan mendiskusikan pustaka dan fungsi relevan yang dapat membantu memecahkan masalah serupa.

Untuk mulai mengatasi masalah ini, kami akan memanfaatkan Panda perpustakaan bersama dengan kaburwuzzy perpustakaan yang membantu menghitung kesamaan antara string yang berbeda. Itu kaburwuzzy perpustakaan menggunakan jarak Levenshtein, ukuran kesamaan berdasarkan jumlah pengeditan (penyisipan, penghapusan, atau penggantian) yang diperlukan untuk mengubah satu string menjadi string lainnya.

Memasang dan Mengimpor Pustaka yang Diperlukan

Untuk memulai, kita perlu menginstal dan mengimpor pustaka yang diperlukan. Anda dapat menggunakan pip untuk menginstal Panda dan fuzzywuzzy:

pip install pandas
pip install fuzzywuzzy

Setelah diinstal, impor pustaka dalam kode Python Anda:

import pandas as pd
from fuzzywuzzy import fuzz, process

Memfilter Baris Berdasarkan Nilai Fuzzy

Sekarang setelah kita mengimpor pustaka yang diperlukan, mari buat kumpulan data fiktif dan tunjukkan cara memfilter baris berdasarkan nilai fuzzy. Dalam contoh ini, kumpulan data kami akan terdiri dari nama garmen dan gaya yang sesuai.

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

Dengan asumsi kita ingin memfilter baris yang berisi garmen dengan nama yang mirip dengan "Tee shirt", kita perlu menggunakan library fuzzywuzzy untuk melakukannya.

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)

Pada kode di atas, kita mendefinisikan sebuah fungsi filter_baris yang membutuhkan empat parameter: DataFrame, nama kolom, string pencarian, dan ambang kemiripan. Ini mengembalikan DataFrame yang difilter berdasarkan ambang yang ditentukan, yang dihitung menggunakan fuzz.token_sort_ratio fungsi dari perpustakaan fuzzywuzzy.

Memahami Kode Langkah-demi-Langkah

  • Pertama, kami membuat DataFrame bernama df berisi kumpulan data kami.
  • Selanjutnya, kami mendefinisikan string pencarian kami sebagai "Kaos" dan menetapkan ambang kesamaan 70. Anda dapat menyesuaikan nilai ambang sesuai dengan tingkat kesamaan yang Anda inginkan.
  • Kami kemudian membuat fungsi yang disebut filter_baris, yang memfilter DataFrame berdasarkan jarak Levenshtein antara string pencarian dan nilai setiap baris di kolom yang ditentukan.
  • Akhirnya, kami menyebutnya filter_baris berfungsi untuk mendapatkan DataFrame kami yang difilter, difilter_df.

Kesimpulannya, Panda, dikombinasikan dengan perpustakaan fuzzywuzzy, adalah alat yang sangat baik untuk memfilter baris berdasarkan nilai fuzzy. Memahami pustaka ini dan fungsinya memungkinkan kita memanipulasi data secara efisien dan menyelesaikan tugas pemrosesan data yang kompleks.

Pos terkait:

Tinggalkan Komentar