हल: पांडा फ़ज़ी मानों द्वारा पंक्तियों को फ़िल्टर करते हैं

डेटा विश्लेषण की दुनिया में, बड़े डेटा सेट का सामना करना आम बात है जिसके लिए डेटा हेरफेर और प्रोसेसिंग की आवश्यकता होती है। एक ऐसी समस्या जो अक्सर उत्पन्न होती है, फ़ज़ी वैल्यू के आधार पर पंक्तियों को फ़िल्टर करना है, विशेष रूप से टेक्स्ट डेटा के साथ काम करते समय। पंडों, डेटा हेरफेर के लिए एक लोकप्रिय पायथन पुस्तकालय, इस समस्या से निपटने में मदद करने के लिए एक सुंदर समाधान प्रदान करता है। इस लेख में, हम फ़ज़ी वैल्यू का उपयोग करके पंक्तियों को फ़िल्टर करने के लिए पंडों का उपयोग करने, कोड को चरण-दर-चरण एक्सप्लोर करने और प्रासंगिक लाइब्रेरी और फ़ंक्शंस पर चर्चा करने के बारे में जानेंगे, जो समान समस्याओं को हल करने में सहायता कर सकते हैं।

इस समस्या का समाधान शुरू करने के लिए, हम इसका लाभ उठाएंगे पांडा पुस्तकालय के साथ फ़ज़ीवुज़ी पुस्तकालय जो विभिन्न तारों के बीच समानता की गणना करने में मदद करता है। फ़ज़ीवुज़ी पुस्तकालय 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)

उपरोक्त कोड में, हम एक फ़ंक्शन को परिभाषित करते हैं फ़िल्टर_पंक्तियाँ इसमें चार पैरामीटर होते हैं: डेटाफ़्रेम, कॉलम नाम, खोज स्ट्रिंग और समानता सीमा। यह निर्दिष्ट सीमा के आधार पर फ़िल्टर किए गए डेटाफ़्रेम को लौटाता है, जिसकी गणना का उपयोग करके की जाती है फ़ज़.टोकन_सॉर्ट_अनुपात फ़ज़ीवज़ी लाइब्रेरी से कार्य करता है।

कोड को चरण-दर-चरण समझना

  • सबसे पहले, हम नामक एक DataFrame बनाते हैं df जिसमें हमारा डेटा सेट है।
  • अगला, हम अपनी खोज स्ट्रिंग को "टी शर्ट" के रूप में परिभाषित करते हैं और 70 की समानता सीमा निर्धारित करते हैं। आप अपनी वांछित स्तर की समानता के अनुसार सीमा मान को समायोजित कर सकते हैं।
  • फिर हम नामक एक फंक्शन बनाते हैं फ़िल्टर_पंक्तियाँ, जो निर्दिष्ट कॉलम में खोज स्ट्रिंग और प्रत्येक पंक्ति के मान के बीच Levenshtein दूरी के आधार पर DataFrame को फ़िल्टर करता है।
  • अंत में, हम कहते हैं फ़िल्टर_पंक्तियाँ हमारे फ़िल्टर किए गए डेटाफ़्रेम को प्राप्त करने के लिए कार्य करें, फ़िल्टर्ड_डीएफ.

अंत में, पंडों, फ़ज़ीवज़ी लाइब्रेरी के संयोजन में, फ़ज़ी मूल्यों के आधार पर पंक्तियों को फ़िल्टर करने के लिए एक उत्कृष्ट उपकरण है। इन पुस्तकालयों और उनके कार्यों को समझने से हम कुशलतापूर्वक डेटा में हेरफेर कर सकते हैं और जटिल डेटा प्रोसेसिंग कार्यों को हल कर सकते हैं।

संबंधित पोस्ट:

एक टिप्पणी छोड़ दो