Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

Pandas में डुप्लिकेट पंक्तियों को कैसे खोजें और फ़िल्टर करें?

डेटा विश्लेषण के दौरान कई बार हमें डुप्लिकेट पंक्तियों को तुरंत हटाने के बजाय उन्हें समझने की आवश्यकता होती है। Pandas में डुप्लिकेट के साथ काम करने के लिए कई उपयोगी मेथड उपलब्ध हैं।

.duplicated() मेथड

यह मेथड DataFrame में डुप्लिकेट पंक्तियों को निकालने की अनुमति देता है। हम डुप्लिकेट वाले एक नए डेटासेट का उपयोग करेंगे। मैंने यहां से HR डेटासेट डाउनलोड किया है।

import pandas as pd
import numpy as np

# केवल आवश्यक कॉलम के साथ HR डेटासेट आयात करें
df = pd.read_csv("https://raw.githubusercontent.com/sasankac/TestDataSet/master/HRDataset.csv", 
                 usecols=["Employee_Name", "PerformanceScore", "Position", "CitizenDesc"])

# कर्मचारी नाम के अनुसार सॉर्ट करें और स्थायी बनाएं
df.sort_values("Employee_Name", inplace=True)
df.head(3)
Employee_NamePositionCitizenDescPerformanceScore
0AdinolfiProduction Technician IUS CitizenExceeds
1AdinolfiSr. DBAUS CitizenFully Meets
2AdinolfiProduction Technician IIUS CitizenFully Meets

duplicated() मेथड डिफ़ॉल्ट रूप से keep पैरामीटर के आधार पर काम करता है। यह पैरामीटर प्रत्येक मान की पहली घटना को नॉन-डुप्लिकेट के रूप में चिह्नित करता है। यह मेथड किसी पंक्ति को डुप्लिकेट के रूप में चिह्नित नहीं करता यदि वह एक से अधिक बार मौजूद है, बल्कि पहली पंक्ति के बाद की प्रत्येक बाद की पंक्ति को डुप्लिकेट के रूप में चिह्नित करता है।

उदाहरण के लिए, यदि टोकरी में 3 सेब हैं, तो यह मेथड पहले सेब को नॉन-डुप्लिकेट और बाकी दो सेबों को डुप्लिकेट के रूप में चिह्नित करेगा।

उदाहरण

df["Employee_Name"].head(3)
0    Adinolfi
1    Adinolfi
2    Adinolfi
Name: Employee_Name, dtype: object

उदाहरण

df["Employee_Name"].duplicated().head(3)
0    False
1    True
2    True
Name: Employee_Name, dtype: bool

अब डुप्लिकेट निकालने के लिए (याद रखें पहली घटना डुप्लिकेट नहीं है बल्कि बाद की घटनाएं डुप्लिकेट हैं और इस मेथड द्वारा आउटपुट की जाएंगी), हमें इस मेथड को DataFrame पर पास करना होगा।

df.shape
(310, 4)
df[df["Employee_Name"].duplicated()]
Employee_NamePositionCitizenDescPerformanceScore
1AdinolfiSr. DBAUS CitizenFully Meets
2AdinolfiProduction Technician IIUS CitizenFully Meets
3AdinolfiProduction Technician IUS CitizenFully Meets
4AdinolfiProduction ManagerUS CitizenFully Meets
6AndersonProduction Technician IUS CitizenExceeds
...............
303WangProduction Technician IIUS CitizenFully Meets
304WangProduction Technician IIUS CitizenFully Meets
305WangProduction Technician IUS CitizenPIP
306WangCIOUS CitizenExceeds
307WangData AnalystUS CitizenFully Meets

79 rows × 4 columns

उपरोक्त आउटपुट से पता चलता है कि 310 पंक्तियों में 79 डुप्लिकेट हैं जिन्हें .duplicated() मेथड द्वारा निकाला गया है।

आर्गुमेंट - "last"

डिफ़ॉल्ट रूप से यह मेथड मान की पहली घटना को नॉन-डुप्लिकेट के रूप में चिह्नित करता है। हम keep="last" आर्गुमेंट पास करके इस व्यवहार को बदल सकते हैं।

यह पैरामीटर पहले दो सेबों को डुप्लिकेट और अंतिम को नॉन-डुप्लिकेट के रूप में चिह्नित करेगा।

df[df["Employee_Name"].duplicated(keep="last")]
Employee_NamePositionCitizenDescPerformanceScore
0AdinolfiProduction Technician IUS CitizenExceeds
1AdinolfiSr. DBAUS CitizenFully Meets
2AdinolfiProduction Technician IIUS CitizenFully Meets
3AdinolfiProduction Technician IUS CitizenFully Meets
5AndersonProduction Technician IUS CitizenFully Meets
...............
302WangProduction Technician IIUS CitizenExceeds
303WangProduction Technician IIUS CitizenFully Meets
304WangProduction Technician IIUS CitizenFully Meets
305WangProduction Technician IUS CitizenPIP
306WangCIOUS CitizenExceeds

आर्गुमेंट - False

keep पैरामीटर एक अतिरिक्त आर्गुमेंट False भी स्वीकार करता है जो एक से अधिक बार आने वाले सभी मानों को डुप्लिकेट के रूप में चिह्नित करेगा। हमारे मामले में सभी 3 सेब डुप्लिकेट के रूप में चिह्नित होंगे, न कि केवल पहला या अंतिम।

नोट – False पैरामीटर निर्दिष्ट करते समय कोट्स का उपयोग न करें।

df[df["Employee_Name"].duplicated(keep=False)]
Employee_NamePositionCitizenDescPerformanceScore
0AdinolfiProduction Technician IUS CitizenExceeds
1AdinolfiSr. DBAUS CitizenFully Meets
2AdinolfiProduction Technician IIUS CitizenFully Meets
3AdinolfiProduction Technician IUS CitizenFully Meets
4AdinolfiProduction ManagerUS CitizenFully Meets
...............
303WangProduction Technician IIUS CitizenFully Meets
304WangProduction Technician IIUS CitizenFully Meets
305WangProduction Technician IUS CitizenPIP
306WangCIOUS CitizenExceeds
307WangData AnalystUS CitizenFully Meets

अंत में, डेटासेट से यूनिक मान निकालने के लिए हम ~ (टिल्डा) सिंबल का उपयोग करके मानों को निगेट कर सकते हैं।

df_unique = ~df["Employee_Name"].duplicated(keep=False)
df[df_unique]
Employee_NamePositionCitizenDescPerformanceScore
7AndreolaSoftware EngineerUS CitizenFully Meets
25BozziProduction ManagerUS CitizenFully Meets
26BramanteDirector of OperationsUS CitizenExceeds
27BrillProduction Technician IUS CitizenFully Meets
34BurkettProduction Technician IIUS CitizenFully Meets
...............
276SweetwaterSoftware EngineerUS CitizenExceeds
277SzaboProduction Technician INon-CitizenFully Meets
278TavaresProduction Technician IIUS CitizenFully Meets
308ZhouProduction Technician IUS CitizenFully Meets
309ZimaNaNNaNNaN

drop_duplicates() मेथड

यह मेथड पिछले मेथड के समान है, लेकिन यह एक सीरीज के बजाय DataFrame पर लागू किया जा सकता है।

नोट: यह मेथड DataFrame के सभी कॉलम पर डुप्लिकेट पंक्तियों को खोजता है और उन्हें हटाता है।

len(df)
310
len(df.drop_duplicates())
290

सबसेट पैरामीटर

subset पैरामीटर स्ट्रिंग मान के रूप में कॉलम नामों की एक सूची स्वीकार करता है जिसमें हम डुप्लिकेट की जांच कर सकते हैं।

df1 = df.drop_duplicates(subset=["Employee_Name"], keep="first")
df1
Employee_NamePositionCitizenDescPerformanceScore
0AdinolfiProduction Technician IUS CitizenExceeds
5AndersonProduction Technician IUS CitizenFully Meets
7AndreolaSoftware EngineerUS CitizenFully Meets
14AthwalProduction Technician IUS CitizenFully Meets
20BeakProduction Technician IUS CitizenFully Meets
...............
293Von MassenbachProduction Technician IIUS CitizenFully Meets
295WallaceProduction Technician IUS CitizenNeeds Improvement
300WangProduction Technician IEligible NonCitizenFully Meets
308ZhouProduction Technician IUS CitizenFully Meets
309ZimaNaNNaNNaN

हम कई कॉलम निर्दिष्ट कर सकते हैं और पिछले खंड में चर्चा किए गए सभी keep पैरामीटर्स का उपयोग कर सकते हैं।

df1 = df.drop_duplicates(subset=["Employee_Name", "CitizenDesc"], keep=False)
df1
Employee_NamePositionCitizenDescPerformanceScore
7AndreolaSoftware EngineerUS CitizenFully Meets
16BeakProduction Technician IEligible NonCitizenFully Meets
25BozziProduction ManagerUS CitizenFully Meets
26BramanteDirector of OperationsUS CitizenExceeds
27BrillProduction Technician IUS CitizenFully Meets
...............
287TejedaNetwork EngineerEligible NonCitizenFully Meets
286TejedaSoftware EngineerNon-CitizenFully Meets
300WangProduction Technician IEligible NonCitizenFully Meets
308ZhouProduction Technician IUS CitizenFully Meets
309ZimaNaNNaNNaN

unique() मेथड

unique मेथड एक सीरीज में यूनिक मान ढूंढता है और उन्हें एक ऐरे के रूप में लौटाता है। यह मेथड मिसिंग मानों को बाहर नहीं करता।

len(df["Employee_Name"])
310
df["Employee_Name"].unique()
array(['Adinolfi', 'Anderson', 'Andreola', ..., 'Zhou', 'Zima'], dtype=object)
len(df["Employee_Name"].unique())
231

.nunique() मेथड

यह मेथड एक सीरीज में यूनिक मानों की संख्या लौटाता है। यह मेथड डिफ़ॉल्ट रूप से dropna=True पैरामीटर का उपयोग करके मिसिंग मानों को बाहर करता है।

आप dropna पैरामीटर में False पास करके मिसिंग मानों को शामिल कर सकते हैं।

df["Employee_Name"].nunique()
231
df["Employee_Name"].nunique(dropna=False)
231
  1. त्वरित गाइड: विंडोज 11 में डुप्लिकेट फ़ाइलों का पता लगाएं और हटाएं त्वरित गाइड: विंडोज 11 में डुप्लिकेट फ़ाइलों का पता लगाएं और हटाएं

    क्या आप विंडोज 11 में डुप्लिकेट फ़ाइलों को हटाने का तरीका सीखना चाहते हैं? पढ़ते रहें। कोई फर्क नहीं पड़ता कि आप किस ऑपरेटिंग सिस्टम का उपयोग करते हैं, कंप्यूटर उपयोगकर्ता हमेशा इस बात से परेशान रहेंगे कि डुप्लिकेट फ़ाइलों को कैसे खोजा जाए। और रोमांचक तथ्य यह है कि यह बग या त्रुटि नहीं है बल्कि पीसी

  1. विंडोज में डुप्लीकेट फोटो हटाएं: स्टोरेज खाली करने के लिए चरण-दर-चरण गाइड विंडोज में डुप्लीकेट फोटो हटाएं: स्टोरेज खाली करने के लिए चरण-दर-चरण गाइड

    डिजिटल छवियों की सीमाओं में से एक डुप्लीकेट फोटो हैं जो अनावश्यक स्टोरेज स्पेस घेरते हैं। स्टोरेज पर सीमाओं के साथ, हम अपने पीसी से फ़ाइलों को हटाने के विभिन्न तरीकों की तलाश करते हैं। जगह हासिल करने के सर्वोत्तम तरीकों में से एक है उन डुप्लीकेट छवियों को हटाना जिनकी आपको किसी भी कारण से आवश्यकता नह

  1. अपने पीसी पर घुमाई गई और फ़्लिप की गई डुप्लीकेट फोटोज का आसानी से पता लगाएं अपने पीसी पर घुमाई गई और फ़्लिप की गई डुप्लीकेट फोटोज का आसानी से पता लगाएं

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