पंडों के डेटाफ़्रेम में डुप्लिकेट मानों को संभालना

पंडों के डेटाफ़्रेम में डुप्लिकेट मानों को संभालना

परिचय

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

डुप्लिकेट मानों की पहचान करना

डुप्लिकेट मानों को संभालने में पहला कदम उनकी पहचान करना है। डुप्लिकेट मानों की पहचान करना डेटा सफ़ाई में एक महत्वपूर्ण कदम है। पांडा डेटाफ़्रेम के भीतर डुप्लिकेट मानों की पहचान करने के लिए कई तरीके प्रदान करता है। इस अनुभाग में, हम चर्चा करेंगे duplicated() समारोह और value_counts() डुप्लिकेट मानों की पहचान करने के लिए फ़ंक्शन।

उसिन डुप्लीकेट ()

RSI duplicated() फ़ंक्शन एक पांडा लाइब्रेरी फ़ंक्शन है जो डेटाफ़्रेम में डुप्लिकेट पंक्तियों की जांच करता है। का आउटपुट duplicated() फ़ंक्शन इनपुट डेटाफ़्रेम के समान लंबाई वाली एक बूलियन श्रृंखला है, जहां प्रत्येक तत्व इंगित करता है कि संबंधित पंक्ति डुप्लिकेट है या नहीं।

आइए इसके एक सरल उदाहरण पर विचार करें duplicated() समारोह:

import pandas as pd data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) df_duplicates = df.duplicated()
print(df_duplicates)

आउटपुट:

0 False
1 False
2 False
3 False
4 False
5 True
dtype: bool

उपरोक्त उदाहरण में, हमने एक डेटाफ़्रेम बनाया जिसमें छात्रों के नाम और उनके कुल अंक शामिल हैं। हमने आह्वान किया duplicated() डेटाफ़्रेम पर, जिसने एक बूलियन श्रृंखला उत्पन्न की False अद्वितीय मूल्यों का प्रतिनिधित्व करना और True डुप्लिकेट मानों का प्रतिनिधित्व करना।

इस उदाहरण में, मान की पहली घटना को अद्वितीय माना जाता है। हालाँकि, क्या होगा यदि हम चाहते हैं कि अंतिम मान को अद्वितीय माना जाए, और हम डुप्लिकेट मानों की पहचान करते समय सभी कॉलमों पर विचार नहीं करना चाहते हैं? यहां, हम इसे संशोधित कर सकते हैं duplicated() पैरामीटर मानों को बदलकर कार्य करें।

पैरामीटर: सबसेट और रखें

RSI duplicated() फ़ंक्शन अपने वैकल्पिक मापदंडों के माध्यम से अनुकूलन विकल्प प्रदान करता है। इसके दो पैरामीटर हैं, जैसा कि नीचे बताया गया है:

  • subset: यह पैरामीटर हमें डुप्लिकेट डिटेक्शन के दौरान विचार करने के लिए कॉलम के सबसेट को निर्दिष्ट करने में सक्षम बनाता है। उपसमुच्चय पर सेट है None डिफ़ॉल्ट रूप से, जिसका अर्थ है कि डेटाफ़्रेम में प्रत्येक कॉलम पर विचार किया जाता है। कॉलम नाम निर्दिष्ट करने के लिए, हम सबसेट को कॉलम नामों की सूची प्रदान कर सकते हैं।

    यहां सबसेट पैरामीटर का उपयोग करने का एक उदाहरण दिया गया है:

    
    df_duplicates = df.duplicated(subset=['StudentName'])
    

    आउटपुट:

    0 False
    1 False
    2 False
    3 False
    4 False
    5 True
    dtype: bool
    
  • keep: यह विकल्प हमें यह चुनने की अनुमति देता है कि डुप्लिकेट पंक्ति के किस उदाहरण को डुप्लिकेट के रूप में चिह्नित किया जाना चाहिए। रखने के संभावित मान हैं:

    • "first": यह इसके लिए डिफ़ॉल्ट मान है keep विकल्प। यह पहली घटना को छोड़कर सभी डुप्लिकेट की पहचान करता है, पहले मान को अद्वितीय मानते हुए।
    • "last": यह विकल्प अंतिम घटना को एक अद्वितीय मान के रूप में पहचानता है। अन्य सभी घटनाओं को डुप्लिकेट माना जाएगा।
    • False: यह विकल्प प्रत्येक इंस्टेंस को डुप्लिकेट मान के रूप में लेबल करता है।

यहाँ का उपयोग करने का एक उदाहरण दिया गया है keep पैरामीटर:


df_duplicates = df.duplicated(keep='last')
print(df_duplicates)

आउटपुट:

0 True
1 False
2 False
3 False
4 False
5 False
dtype: bool
डुप्लिकेट मानों को विज़ुअलाइज़ करें

RSI value_counts() फ़ंक्शन डुप्लिकेट की पहचान करने का दूसरा तरीका है। value_counts() फ़ंक्शन किसी कॉलम में प्रत्येक अद्वितीय मान के प्रकट होने की संख्या की गणना करता है। लगाने से value_counts() एक विशिष्ट कॉलम में फ़ंक्शन, प्रत्येक मान की आवृत्ति की कल्पना की जा सकती है।

यहाँ का उपयोग करने का एक उदाहरण दिया गया है value_counts() समारोह:

import matplotlib.pyplot as plt
import pandas as pd data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) name_counts = df['StudentName'].value_counts()
print(name_counts)

आउटपुट:

Mark 2
Ali 1
Bob 1
John 1
Johny 1
Name: StudentName, dtype: int64

आइए अब एक बार ग्राफ़ के साथ डुप्लिकेट मानों की कल्पना करें। हम बार चार्ट का उपयोग करके डुप्लिकेट मानों की आवृत्ति को प्रभावी ढंग से देख सकते हैं।


name_counts.plot(kind='bar')
plt.xlabel('Student Name')
plt.ylabel('Frequency')
plt.title('Duplicate Name Frequencies')
plt.show()

डुप्लिकेट मान

डुप्लिकेट मानों को संभालना

डुप्लिकेट मानों की पहचान करने के बाद, उन्हें संबोधित करने का समय आ गया है। इस अनुभाग में, हम पांडा का उपयोग करके डुप्लिकेट मानों को हटाने और अद्यतन करने के लिए विभिन्न रणनीतियों का पता लगाएंगे drop_duplicates() और replace() कार्य. इसके अतिरिक्त, हम का उपयोग करके डुप्लिकेट मानों के साथ डेटा एकत्र करने पर चर्चा करेंगे groupby() समारोह.

डुप्लिकेट मान हटाना

डुप्लिकेट को संभालने का सबसे आम तरीका उन्हें डेटाफ़्रेम से हटाना है। डेटाफ़्रेम से डुप्लिकेट रिकॉर्ड को खत्म करने के लिए, हम इसका उपयोग करेंगे drop_duplicates() समारोह। डिफ़ॉल्ट रूप से, यह फ़ंक्शन प्रत्येक डुप्लिकेट पंक्ति का पहला उदाहरण रखता है और बाद की घटनाओं को हटा देता है। यह सभी कॉलम मानों के आधार पर डुप्लिकेट मानों की पहचान करता है; हालाँकि, हम सबसेट मापदंडों का उपयोग करके विचार किए जाने वाले कॉलम को निर्दिष्ट कर सकते हैं।

का सिंटैक्स drop_duplicates() पैरामीटर में डिफ़ॉल्ट मान इस प्रकार है:

dataFrame.drop_duplicates(subset=None, keep='first', inplace=False)

RSI subset और keep पैरामीटर्स की व्याख्या भी वैसी ही है जैसी कि इसमें है duplicates(). यदि हम तीसरा पैरामीटर सेट करते हैं inplace सेवा मेरे True, सभी संशोधन सीधे मूल डेटाफ़्रेम पर किए जाएंगे, जिसके परिणामस्वरूप विधि वापस आ जाएगी None और मूल डेटाफ़्रेम को संशोधित किया जा रहा है। डिफ़ॉल्ट रूप से, inplace is False.

यहाँ का एक उदाहरण है drop_duplicates() समारोह:


df.drop_duplicates(keep='last', inplace=True)
print(df)

आउटपुट:

 StudentName Score
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45

सर्वोत्तम प्रथाओं, उद्योग-स्वीकृत मानकों और शामिल चीट शीट के साथ, Git सीखने के लिए व्यावहारिक मार्गदर्शिका देखें। Googling Git कमांड को रोकें और वास्तव में सीखना यह!

उपरोक्त उदाहरण में, पहली प्रविष्टि हटा दी गई थी क्योंकि वह डुप्लिकेट थी।

डुप्लिकेट मान बदलें या अपडेट करें

डुप्लिकेट को संभालने की दूसरी विधि में पांडा का उपयोग करके मूल्य को बदलना शामिल है replace() समारोह। replace() फ़ंक्शन हमें डेटाफ़्रेम में विशिष्ट मानों या पैटर्न को नए मानों से बदलने की अनुमति देता है। डिफ़ॉल्ट रूप से, यह मान के सभी उदाहरणों को प्रतिस्थापित कर देता है। हालाँकि, सीमा पैरामीटर का उपयोग करके, हम प्रतिस्थापनों की संख्या को सीमित कर सकते हैं।

यहाँ उपयोग करने का एक उदाहरण है replace() समारोह:


df['StudentName'].replace('Mark', 'Max', limit=1, inplace=True)
print(df)

आउटपुट:

 StudentName Score
0 Max 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45

यहां, पहले मान को बदलने के लिए सीमा का उपयोग किया गया था। यदि हम अंतिम घटना को प्रतिस्थापित करना चाहें तो क्या होगा? इस मामले में, हम गठबंधन करेंगे duplicated() और replace() कार्य. का उपयोग करते हुए duplicated(), हम प्रत्येक डुप्लिकेट मान के अंतिम उदाहरण को इंगित करेंगे, का उपयोग करके पंक्ति संख्या प्राप्त करेंगे loc फ़ंक्शन, और फिर इसका उपयोग करके इसे बदलें replace() समारोह। यहां उपयोग का एक उदाहरण दिया गया है duplicated() और replace() एक साथ कार्य करता है.


last_occurrences = df.duplicated(subset='StudentName', keep='first') last_occurrences_rows = df[last_occurrences] df.loc[last_occurrences, 'StudentName'] = df.loc[last_occurrences, 'StudentName'].replace('Mark', 'Max') print(df)

आउटपुट:

 StudentName Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Max 45

जटिल प्रतिस्थापनों के लिए कस्टम फ़ंक्शन

कुछ मामलों में, डुप्लिकेट मानों को संभालने के लिए उन्हें हटाने या अपडेट करने की तुलना में अधिक जटिल प्रतिस्थापन की आवश्यकता होती है। कस्टम फ़ंक्शंस हमें हमारी आवश्यकताओं के अनुरूप विशिष्ट प्रतिस्थापन नियम बनाने में सक्षम बनाते हैं। पांडा का उपयोग करके apply() फ़ंक्शन, हम अपने डेटा पर कस्टम फ़ंक्शन लागू कर सकते हैं।

उदाहरण के लिए, मान लें कि "छात्रनाम" कॉलम में डुप्लिकेट नाम हैं। हमारा लक्ष्य एक कस्टम फ़ंक्शन का उपयोग करके डुप्लिकेट को प्रतिस्थापित करना है जो डुप्लिकेट मानों के अंत में एक संख्या जोड़ता है, जिससे उन्हें अद्वितीय बना दिया जाता है।


def add_number(name, counts): if name in counts: counts[name] += 1 return f'{name}_{counts[name]}' else: counts[name] = 0 return name name_counts = {} df['is_duplicate'] = df.duplicated('StudentName', keep=False)
df['StudentName'] = df.apply(lambda x: add_number(x['StudentName'], name_counts) if x['is_duplicate'] else x['StudentName'], axis=1)
df.drop('is_duplicate', axis=1, inplace=True)
print(df)

आउटपुट:

 StudentName Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark_1 45

डुप्लिकेट मानों के साथ डेटा एकत्र करें

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

यहाँ उपयोग करने का एक उदाहरण है groupby() तरीका:


grouped = df.groupby(['StudentName']) df_aggregated = grouped.sum()
print(df_aggregated)

आउटपुट:

 Score
StudentName Ali 65
Bob 76
John 44
Johny 39
Mark 90

उन्नत तकनीकों

अधिक जटिल परिदृश्यों को संभालने और सटीक विश्लेषण सुनिश्चित करने के लिए, कुछ उन्नत तकनीकें हैं जिनका हम उपयोग कर सकते हैं। यह अनुभाग अस्पष्ट डुप्लिकेट, समय श्रृंखला डेटा में दोहराव और डुप्लिकेट इंडेक्स मानों से निपटने पर चर्चा करेगा।

फजी डुप्लिकेट

फ़ज़ी डुप्लिकेट ऐसे रिकॉर्ड होते हैं जो सटीक मेल नहीं खाते हैं लेकिन समान होते हैं, और वे विभिन्न कारणों से हो सकते हैं, जिनमें डेटा इनपुट गलतियाँ, गलत वर्तनी और फ़ॉर्मेटिंग में भिन्नताएं शामिल हैं। हम उपयोग करेंगे fuzzywuzzy स्ट्रिंग समानता मिलान का उपयोग करके डुप्लिकेट की पहचान करने के लिए पायथन लाइब्रेरी।

यहां अस्पष्ट मानों को संभालने का एक उदाहरण दिया गया है:

import pandas as pd
from fuzzywuzzy import fuzz def find_fuzzy_duplicates(dataframe, column, threshold): duplicates = [] for i in range(len(dataframe)): for j in range(i+1, len(dataframe)): similarity = fuzz.ratio(dataframe[column][i], dataframe[column][j]) if similarity >= threshold: duplicates.append(dataframe.iloc[[i, j]]) if duplicates: duplicates_df = pd.concat(duplicates) return duplicates_df else: return pd.DataFrame() data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) threshold = 70 fuzzy_duplicates = find_fuzzy_duplicates(df, 'StudentName', threshold)
print("Fuzzy duplicates:")
print(fuzzy_duplicates.to_string(index=False))

इस उदाहरण में, हम एक कस्टम फ़ंक्शन बनाते हैं find_fuzzy_duplicates यह इनपुट के रूप में एक डेटाफ़्रेम, एक कॉलम नाम और एक समानता सीमा लेता है। फ़ंक्शन डेटाफ़्रेम में प्रत्येक पंक्ति के माध्यम से पुनरावृत्त होता है और इसका उपयोग करके बाद की पंक्तियों के साथ तुलना करता है fuzz.ratio से विधि fuzzywuzzy पुस्तकालय। यदि समानता स्कोर सीमा से अधिक या उसके बराबर है, तो डुप्लिकेट पंक्तियाँ एक सूची में जोड़ दी जाती हैं। अंत में, फ़ंक्शन फ़ज़ी डुप्लिकेट युक्त डेटाफ़्रेम लौटाता है।

आउटपुट:

Fuzzy duplicates:
StudentName Score Mark 45 Mark 45 John 44 Johny 39

उपरोक्त उदाहरण में, अस्पष्ट डुप्लिकेट की पहचान "स्टूडेंटनेम" कॉलम में की जाती है। 'Find_fuzzy_dulicates' फ़ंक्शन का उपयोग करके स्ट्रिंग के प्रत्येक जोड़े की तुलना करता है fuzzywuzzy पुस्तकालय का fuzz.ratio फ़ंक्शन, जो लेवेनशेटिन दूरी के आधार पर समानता स्कोर की गणना करता है। हमने सीमा 70 निर्धारित की है, जिसका अर्थ है कि 70 से अधिक मिलान अनुपात वाला कोई भी नाम अस्पष्ट मान माना जाएगा। अस्पष्ट मानों की पहचान करने के बाद, हम उन्हें "हैंडलिंग डुप्लिकेट" शीर्षक वाले अनुभाग में उल्लिखित विधि का उपयोग करके प्रबंधित कर सकते हैं।

समय श्रृंखला डेटा डुप्लिकेट को संभालना

जब एक ही टाइमस्टैम्प पर एकाधिक अवलोकन रिकॉर्ड किए जाते हैं तो डुप्लिकेट हो सकते हैं। अगर इन मूल्यों को ठीक से नियंत्रित नहीं किया गया तो ये पक्षपातपूर्ण परिणाम दे सकते हैं। समय श्रृंखला डेटा में डुप्लिकेट मानों को संभालने के कुछ तरीके यहां दिए गए हैं।

  • सटीक डुप्लिकेट छोड़ना: इस विधि में, हम का उपयोग करके समान पंक्तियों को हटा देते हैं drop_duplicates पंडों में कार्य करें।
  • विभिन्न मूल्यों के साथ डुप्लिकेट टाइमस्टैम्प: यदि हमारे पास एक ही टाइमस्टैम्प है लेकिन अलग-अलग मान हैं, तो हम डेटा को एकत्रित कर सकते हैं और इसका उपयोग करके अधिक जानकारी प्राप्त कर सकते हैं groupby(), या हम सबसे हालिया मान का चयन कर सकते हैं और उपयोग करने वाले अन्य को हटा सकते हैं drop_duplicates() साथ keep पैरामीटर 'अंतिम' पर सेट है।

डुप्लिकेट सूचकांक मानों को संभालना

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

जैसा कि इसके नाम से पता चलता है, reset_index() पंडों में फ़ंक्शन का उपयोग डेटाफ़्रेम के सूचकांक को रीसेट करने के लिए किया जाता है। आवेदन करते समय reset_index() फ़ंक्शन, वर्तमान सूचकांक स्वचालित रूप से खारिज कर दिया जाता है, जिसका अर्थ है कि प्रारंभिक सूचकांक मान खो जाते हैं। निर्दिष्ट करके drop पैरामीटर के रूप में False में reset_index() फ़ंक्शन, हम इंडेक्स को रीसेट करते समय मूल इंडेक्स मान को बरकरार रख सकते हैं।

यहां उपयोग का एक उदाहरण दिया गया है reset_index():

import pandas as pd data = { 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data, index=['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark']) df.reset_index(inplace=True)
print(df)

आउटपुट:

 index Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45

सर्वोत्तम प्रथाएं

  • डुप्लिकेट डेटा की प्रकृति को समझें: कोई भी कार्रवाई करने से पहले, यह समझना महत्वपूर्ण है कि डुप्लिकेट मान क्यों मौजूद हैं और वे क्या दर्शाते हैं। मूल कारण की पहचान करें और फिर उनसे निपटने के लिए उचित कदम निर्धारित करें।

  • डुप्लिकेट को संभालने के लिए एक उपयुक्त विधि का चयन करें: जैसा कि पिछले अनुभागों में चर्चा की गई है, डुप्लिकेट को संभालने के कई तरीके हैं। आपके द्वारा चुनी गई विधि डेटा की प्रकृति और आपके द्वारा किए जाने वाले विश्लेषण पर निर्भर करती है।

  • दृष्टिकोण का दस्तावेजीकरण करें: डुप्लिकेट मानों का पता लगाने और उन्हें संबोधित करने की प्रक्रिया का दस्तावेजीकरण करना महत्वपूर्ण है, जिससे दूसरों को विचार प्रक्रिया को समझने में मदद मिल सके।

  • व्यायाम सावधानी: जब भी हम डेटा हटाते हैं या संशोधित करते हैं, तो हमें यह सुनिश्चित करना चाहिए कि डुप्लिकेट को हटाने से विश्लेषण में त्रुटियां या पूर्वाग्रह न आएं। विवेक परीक्षण करें और प्रत्येक क्रिया के परिणामों को मान्य करें।

  • मूल डेटा सुरक्षित रखें: डेटा पर कोई भी ऑपरेशन करने से पहले, मूल डेटा की एक बैकअप प्रतिलिपि बनाएं।

  • भविष्य के डुप्लिकेट को रोकें: भविष्य में डुप्लिकेट होने से रोकने के लिए उपाय लागू करें। इसमें डेटा प्रविष्टि के दौरान डेटा सत्यापन, डेटा क्लींजिंग रूटीन, या विशिष्टता लागू करने के लिए डेटाबेस बाधाएं शामिल हो सकती हैं।

निष्कर्ष

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

समय टिकट:

से अधिक स्टैकब्यूज