সমাধান করা হয়েছে: অস্পষ্ট মান দ্বারা পান্ডা ফিল্টার সারি

সর্বশেষ আপডেট: 09/11/2023

ডেটা বিশ্লেষণের জগতে, বড় ডেটা সেটগুলির মুখোমুখি হওয়া সাধারণ যেগুলির জন্য ডেটা ম্যানিপুলেশন এবং প্রক্রিয়াকরণের প্রয়োজন হয়৷ এরকম একটি সমস্যা যা প্রায়শই দেখা দেয় তা হল অস্পষ্ট মানগুলির উপর ভিত্তি করে সারি ফিল্টার করা, বিশেষ করে যখন পাঠ্য ডেটা নিয়ে কাজ করা হয়। পান্ডাস, ডেটা ম্যানিপুলেশনের জন্য একটি জনপ্রিয় পাইথন লাইব্রেরি, এই সমস্যাটি মোকাবেলায় সহায়তা করার জন্য একটি মার্জিত সমাধান প্রদান করে। এই প্রবন্ধে, আমরা কীভাবে অস্পষ্ট মান ব্যবহার করে সারিগুলি ফিল্টার করতে পান্ডাস ব্যবহার করব, ধাপে ধাপে কোডটি অন্বেষণ করব এবং প্রাসঙ্গিক লাইব্রেরি এবং ফাংশনগুলি নিয়ে আলোচনা করব যা অনুরূপ সমস্যা সমাধানে সহায়তা করতে পারে।

এই সমস্যা মোকাবেলা শুরু করার জন্য, আমরা লিভারেজ করব পান্ডাস সঙ্গে লাইব্রেরি অগোছালো লাইব্রেরি যা বিভিন্ন স্ট্রিংগুলির মধ্যে সাদৃশ্য গণনা করতে সহায়তা করে। দ্য অগোছালো লাইব্রেরি Levenshtein দূরত্ব ব্যবহার করে, একটি স্ট্রিংকে অন্য স্ট্রিংয়ে রূপান্তর করার জন্য প্রয়োজনীয় সম্পাদনার সংখ্যা (সন্নিবেশ, মুছে ফেলা বা প্রতিস্থাপন) এর উপর ভিত্তি করে সাদৃশ্যের একটি পরিমাপ।

প্রয়োজনীয় লাইব্রেরি ইনস্টল এবং আমদানি করা

শুরু করতে, আমাদের প্রয়োজনীয় লাইব্রেরিগুলি ইনস্টল এবং আমদানি করতে হবে৷ আপনি পান্ডা এবং ফাজিউজি উভয় ইনস্টল করতে পিপ ব্যবহার করতে পারেন:

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)

উপরের কোডে, আমরা একটি ফাংশন সংজ্ঞায়িত করি ফিল্টার_সারি যেটি চারটি পরামিতি নেয়: ডেটাফ্রেম, কলামের নাম, অনুসন্ধান স্ট্রিং এবং মিল থ্রেশহোল্ড। এটি নির্দিষ্ট থ্রেশহোল্ডের উপর ভিত্তি করে একটি ফিল্টার করা ডেটাফ্রেম প্রদান করে, যা ব্যবহার করে গণনা করা হয় fuzz.token_sort_ratio ফাজিউজি লাইব্রেরি থেকে ফাংশন।

ধাপে ধাপে কোড বোঝা

  • প্রথমে আমরা একটি DataFrame তৈরি করি যার নাম df আমাদের ডেটা সেট ধারণকারী।
  • এরপরে, আমরা আমাদের সার্চ স্ট্রিংটিকে "Tee shirt" হিসাবে সংজ্ঞায়িত করি এবং 70-এর একটি মিল থ্রেশহোল্ড সেট করি৷ আপনি আপনার পছন্দসই মিলের স্তর অনুযায়ী থ্রেশহোল্ড মান সামঞ্জস্য করতে পারেন৷
  • আমরা তারপর নামক একটি ফাংশন তৈরি করি ফিল্টার_সারি, যা সার্চ স্ট্রিং এবং নির্দিষ্ট কলামে প্রতিটি সারির মানের মধ্যে Levenshtein দূরত্বের উপর ভিত্তি করে ডেটাফ্রেম ফিল্টার করে।
  • অবশেষে, আমরা কল ফিল্টার_সারি আমাদের ফিল্টার করা ডেটাফ্রেম পেতে ফাংশন, filtered_df.

উপসংহারে, পান্ডাস, অস্পষ্ট লাইব্রেরির সংমিশ্রণে, অস্পষ্ট মানগুলির উপর ভিত্তি করে সারিগুলি ফিল্টার করার জন্য একটি দুর্দান্ত সরঞ্জাম। এই লাইব্রেরিগুলি এবং তাদের ফাংশনগুলি বোঝা আমাদের দক্ষতার সাথে ডেটা ম্যানিপুলেট করতে এবং জটিল ডেটা প্রক্রিয়াকরণের কাজগুলি সমাধান করতে দেয়।

সম্পর্কিত পোস্ট: