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

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

कभी-कभी हमारे डेटा विश्लेषण के दौरान, हमें अपने डेटा को सीधे छोड़ने के बजाय उसके बारे में अधिक समझने के लिए डुप्लिकेट पंक्तियों को देखने की आवश्यकता होती है।

सौभाग्य से, पांडा में डुप्लिकेट के साथ खेलने के लिए हमारे पास कुछ तरीके हैं।

.duplciated()

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

import pandas as pd
import numpy as np

# Import HR Dataset with certain columns
df = pd.read_csv("https://raw.githubusercontent.com/sasankac/TestDataSet/master/HRDataset.csv",
usecols = ("Employee_Name""PerformanceScore","Position","CitizenDesc"))

#Sort the values on employee name and make it permanent
df.sort_values("Employee_Name"inplace = True)
df.head(3)


<थड> <टीडी> सीनियर डीबीए

<वें>कर्मचारी_नाम
<वें>स्थिति
<वें>नागरिक विवरण
<वें>प्रदर्शन स्कोर
0
एडिनोल्फी
उत्पादन तकनीशियन I
अमेरिकी नागरिक
अधिक
1
एडिनोल्फी
अमेरिकी नागरिक
पूरी तरह से मिलता है
2
एडिनोल्फी
उत्पादन तकनीशियन II
अमेरिकी नागरिक
पूरी तरह से मिलता है


जिस तरह से डुप्लिकेट () डिफ़ॉल्ट रूप से काम करता है, वह है पैरामीटर रखें, यह पैरामीटर प्रत्येक मान की पहली घटना को गैर-डुप्लिकेट के रूप में चिह्नित करने जा रहा है।

यह विधि एक पंक्ति को डुप्लिकेट के रूप में चिह्नित नहीं करती है यदि यह एक से अधिक बार मौजूद है, बल्कि यह पहली पंक्ति के बाद प्रत्येक अनुवर्ती पंक्ति को डुप्लिकेट के रूप में चिह्नित करती है। अस्पष्ट? मैं एक उदाहरण के साथ एक बार और समझाने की कोशिश करता हूं, मान लीजिए कि एक टोकरी में 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

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

df.shape


(310, 4)


df[df["Employee_Name"].duplicated()]


<थड> <टीडी> सीनियर डीबीए
<टीडी>पीआईपी
<टीडी>सीआईओ

<वें>कर्मचारी_नाम
<वें>स्थिति
<वें>नागरिक विवरण
<वें>प्रदर्शन स्कोर
1
एडिनोल्फी
अमेरिकी नागरिक
पूरी तरह से मिलता है
2
एडिनोल्फी
उत्पादन तकनीशियन II
अमेरिकी नागरिक
पूरी तरह से मिलता है
3
एडिनोल्फी
उत्पादन तकनीशियन I
अमेरिकी नागरिक
पूरी तरह से मिलता है
4
एडिनोल्फी
उत्पादन प्रबंधक
अमेरिकी नागरिक
पूरी तरह से मिलता है
6
एंडरसन
उत्पादन तकनीशियन I
अमेरिकी नागरिक
अधिक
...
<टीडी>...
<टीडी>...
<टीडी>...
<टीडी>...
303
वांग
उत्पादन तकनीशियन II
अमेरिकी नागरिक
पूरी तरह से मिलता है
304
वांग
उत्पादन तकनीशियन II
अमेरिकी नागरिक
पूरी तरह से मिलता है
305
वांग
उत्पादन तकनीशियन I
अमेरिकी नागरिक
306
वांग
अमेरिकी नागरिक
अधिक
307
वांग
डेटा विश्लेषक
अमेरिकी नागरिक
पूरी तरह से मिलता है

79 पंक्तियाँ × 4 स्तंभ

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

तर्क-"अंतिम"

डिफ़ॉल्ट रूप से, यह विधि मान की पहली घटना को गैर-डुप्लिकेट के रूप में चिह्नित करने जा रही है, हम इस व्यवहार को तर्क रखने =अंतिम पास करके बदल सकते हैं।

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

df[df["Employee_Name"].duplicated(keep="last")]


<थड> <टीडी> सीनियर डीबीए
<टीडी>पीआईपी
<टीडी>सीआईओ

<वें>कर्मचारी_नाम
<वें>स्थिति
<वें>नागरिक विवरण
<वें>प्रदर्शन स्कोर
0
एडिनोल्फी
उत्पादन तकनीशियन I
अमेरिकी नागरिक
अधिक
1
एडिनोल्फी
अमेरिकी नागरिक
पूरी तरह से मिलता है
2
एडिनोल्फी
उत्पादन तकनीशियन II
अमेरिकी नागरिक
पूरी तरह से मिलता है
3
एडिनोल्फी
उत्पादन तकनीशियन I
अमेरिकी नागरिक
पूरी तरह से मिलता है
5
एंडरसन
उत्पादन तकनीशियन I
अमेरिकी नागरिक
पूरी तरह से मिलता है
...
<टीडी>...
<टीडी>...
<टीडी>...
<टीडी>...
302
वांग
उत्पादन तकनीशियन II
अमेरिकी नागरिक
अधिक
303
वांग
उत्पादन तकनीशियन II
अमेरिकी नागरिक
पूरी तरह से मिलता है
304
वांग
उत्पादन तकनीशियन II
अमेरिकी नागरिक
पूरी तरह से मिलता है
305
वांग
उत्पादन तकनीशियन I
अमेरिकी नागरिक
306
वांग
अमेरिकी नागरिक
अधिक

तर्क - गलत

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

नोट - गलत पैरामीटर निर्दिष्ट करते समय उद्धरणों का उपयोग न करें।

df[df"Employee_Name"].duplicated(keep=False)]


<थड> <टीडी> सीनियर डीबीए
<टीडी>पीआईपी
<टीडी>सीआईओ

<वें>कर्मचारी_नाम
<वें>स्थिति
<वें>नागरिक विवरण
<वें>प्रदर्शन स्कोर
0
एडिनोल्फी
उत्पादन तकनीशियन I
अमेरिकी नागरिक
अधिक
1
एडिनोल्फी
अमेरिकी नागरिक
पूरी तरह से मिलता है
2
एडिनोल्फी
उत्पादन तकनीशियन II
अमेरिकी नागरिक
पूरी तरह से मिलता है
3
एडिनोल्फी
उत्पादन तकनीशियन I
अमेरिकी नागरिक
पूरी तरह से मिलता है
4
एडिनोल्फी
उत्पादन प्रबंधक
अमेरिकी नागरिक
पूरी तरह से मिलता है
...
<टीडी>...
<टीडी>...
<टीडी>...
<टीडी>...
303
वांग
उत्पादन तकनीशियन II
अमेरिकी नागरिक
पूरी तरह से मिलता है
304
वांग
उत्पादन तकनीशियन II
अमेरिकी नागरिक
पूरी तरह से मिलता है
305
वांग
उत्पादन तकनीशियन I
अमेरिकी नागरिक
306
वांग
अमेरिकी नागरिक
अधिक
307
वांग
डेटा विश्लेषक
अमेरिकी नागरिक
पूरी तरह से मिलता है

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

df_unique~df["Employee_Name"].duplicated(keep=False)df[df_unique]


<थड> <टीडी>नाएन
<टीडी>नाएन
<टीडी>नाएन

<वें>कर्मचारी_नाम
<वें>स्थिति
<वें>नागरिक विवरण
<वें>प्रदर्शन स्कोर
7
आंद्रेओला
सॉफ्टवेयर इंजीनियर
अमेरिकी नागरिक
पूरी तरह से मिलता है
25
बोज़ी
उत्पादन प्रबंधक
अमेरिकी नागरिक
पूरी तरह से मिलता है
26
ब्रामांटे
संचालन निदेशक
अमेरिकी नागरिक
अधिक
27
ब्रिल
उत्पादन तकनीशियन I
अमेरिकी नागरिक
पूरी तरह से मिलता है
34
बुर्केट
उत्पादन तकनीशियन II
अमेरिकी नागरिक
पूरी तरह से मिलता है
...
<टीडी>...
<टीडी>...
<टीडी>...
<टीडी>...
276
मीठा पानी
सॉफ्टवेयर इंजीनियर
अमेरिकी नागरिक
अधिक
277
ज़ाबो
उत्पादन तकनीशियन I
गैर-नागरिक
पूरी तरह से मिलता है
278
तवारेस
उत्पादन तकनीशियन II
अमेरिकी नागरिक
पूरी तरह से मिलता है
308
झोउ
उत्पादन तकनीशियन I
अमेरिकी नागरिक
पूरी तरह से मिलता है
309
ज़िमा

drop_duplicates()

यह विधि काफी हद तक पिछली पद्धति के समान है, हालांकि यह विधि एकल श्रृंखला के बजाय डेटाफ़्रेम पर हो सकती है।

ध्यान दें:- यह विधि डेटाफ़्रेम के सभी स्तंभों पर डुप्लिकेट पंक्तियों की तलाश करती है और उन्हें छोड़ देती है।

len(df)

आउटपुट

310


len(df.drop_duplicates())

आउटपुट

290

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

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

df1=df.drop_duplicates(subset=["Employee_Name"],keep="first")df1
<थड> <टीडी>नाएन
<टीडी>नाएन
<टीडी>नाएन

<वें>कर्मचारी_नाम
<वें>स्थिति
<वें>नागरिक विवरण
<वें>प्रदर्शन स्कोर
0
एडिनोल्फी
उत्पादन तकनीशियन I
अमेरिकी नागरिक
अधिक
5
एंडरसन
उत्पादन तकनीशियन I
अमेरिकी नागरिक
पूरी तरह से मिलता है
7
आंद्रेओला
सॉफ्टवेयर इंजीनियर
अमेरिकी नागरिक
पूरी तरह से मिलता है
14
अठवाल
उत्पादन तकनीशियन I
अमेरिकी नागरिक
पूरी तरह से मिलता है
20
बीक
उत्पादन तकनीशियन I
अमेरिकी नागरिक
पूरी तरह से मिलता है
...
<टीडी>...
<टीडी>...
<टीडी>...
<टीडी>...
293
वॉन मैसेनबैक
उत्पादन तकनीशियन II
अमेरिकी नागरिक
पूरी तरह से मिलता है
295
वालेस
उत्पादन तकनीशियन I
अमेरिकी नागरिक
सुधार की जरूरत है
300
वांग
उत्पादन तकनीशियन I
पात्र गैर-नागरिक
पूरी तरह से मिलता है
308
झोउ
उत्पादन तकनीशियन I
अमेरिकी नागरिक
पूरी तरह से मिलता है
309
ज़िमा

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

df1=df.drop_duplicates(subset="Employee_Name""CitizenDesc"],keep=False)df1


<थड> <टीडी>नाएन
<टीडी>नाएन
<टीडी>नाएन

<वें>कर्मचारी_नाम
<वें>स्थिति
<वें>नागरिक विवरण
<वें>प्रदर्शन स्कोर
7
आंद्रेओला
सॉफ्टवेयर इंजीनियर
अमेरिकी नागरिक
पूरी तरह से मिलता है
16
बीक
उत्पादन तकनीशियन I
पात्र गैर-नागरिक
पूरी तरह से मिलता है
25
बोज़ी
उत्पादन प्रबंधक
अमेरिकी नागरिक
पूरी तरह से मिलता है
26
ब्रामांटे
संचालन निदेशक
अमेरिकी नागरिक
अधिक
27
ब्रिल
उत्पादन तकनीशियन I
अमेरिकी नागरिक
पूरी तरह से मिलता है
...
<टीडी>...
<टीडी>...
<टीडी>...
<टीडी>...
287
तेजेदा
नेटवर्क इंजीनियर
पात्र गैर-नागरिक
पूरी तरह से मिलता है
286
तेजेदा
सॉफ्टवेयर इंजीनियर
गैर-नागरिक
पूरी तरह से मिलता है
300
वांग
उत्पादन तकनीशियन I
पात्र गैर-नागरिक
पूरी तरह से मिलता है
308
झोउ
उत्पादन तकनीशियन I
अमेरिकी नागरिक
पूरी तरह से मिलता है
309
ज़िमा

अद्वितीय() विधि

अद्वितीय विधियां एक श्रृंखला में अद्वितीय मान ढूंढती हैं और अद्वितीय मानों को एक ऐरे के रूप में वापस कर देती हैं। यह विधि अनुपलब्ध मानों को बाहर नहीं करती है।

len(df["Employee_Name"])

आउटपुट

310


df["Employee_Name"].unique()


array(['Adinolfi', 'Anderson', 'Andreola', 'Athwal', 'Beak', 'Bondwell',
'Bozzi', 'Bramante', 'Brill', 'Brown', 'Burkett', 'Butler',
'Carabbio', 'Carey', 'Carr', 'Carter', 'Chace', 'Champaigne',
'Chan', 'Chang', 'Chivukula', 'Cierpiszewski', 'Cisco', 'Clayton',
'Cloninger', 'Close', 'Clukey', 'Cockel', 'Cole', 'Cornett',
'Costa', 'Crimmings', 'Daneault', 'Daniele', 'Darson', 'Davis',
'DeGweck', 'Del Bosque', 'Demita', 'Desimone', 'DiNocco',
'Dickinson', 'Dietrich', 'Digitale', 'Dobrin', 'Dolan', 'Dougall',
'Dunn', 'Eaton', 'Employee_Name', 'Engdahl', 'England', 'Erilus',
'Estremera', 'Evensen', 'Exantus', 'Faller', 'Fancett', 'Favis',
'Ferguson', 'Fernandes', 'Ferreira', 'Fidelia', 'Fitzpatrick',
'Foreman', 'Foss', 'Foster-Baker', 'Fraval', 'Friedman', 'Galia',
'Garcia', 'Garneau', 'Gaul', 'Gentry', 'Gerke', 'Gill', 'Gonzales',
'Gonzalez', 'Good', 'Handschiegl', 'Hankard', 'Harrison',
'Heitzman', 'Horton', 'Houlihan', 'Howard', 'Hubert', 'Hunts',
'Hutter', 'Huynh', 'Immediato', 'Ivey', 'Jackson', 'Jacobi',
'Jeannite', 'Jeremy Prater', 'Jhaveri', 'Johnson', 'Johnston',
'Jung', 'Kampew', 'Keatts', 'Khemmich', 'King', 'Kinsella',
'Kirill', 'Knapp', 'Kretschmer', 'LaRotonda', 'Lajiri', 'Langford',
'Langton', 'Latif', 'Le', 'LeBel', 'LeBlanc', 'Leach', 'Leruth',
'Liebig', 'Linares', 'Linden', 'Lindsay', 'Lundy', 'Lunquist',
'Lydon', 'Lynch', 'MacLennan', 'Mahoney', 'Manchester', 'Mancuso',
'Mangal', 'Martin', 'Martins', 'Maurice', 'McCarthy', 'McKinzie',
'Mckenna', 'Meads', 'Medeiros', 'Merlos', 'Miller', 'Monkfish',
'Monroe', 'Monterro', 'Moran', 'Morway', 'Motlagh', 'Moumanil',
'Mullaney', 'Murray', 'Navathe', 'Ndzi', 'Newman', 'Ngodup',
'Nguyen', 'Nowlan', 'O'hare', 'Oliver', 'Onque', 'Osturnka',
'Owad', 'Ozark', 'Panjwani', 'Patronick', 'Pearson', 'Pelech',
'Pelletier', 'Perry', 'Peters', 'Peterson', 'Petingill',
'Petrowsky', 'Pham', 'Pitt', 'Potts', 'Power', 'Punjabhi',
'Purinton', 'Quinn', 'Rachael', 'Rarrick', 'Rhoads', 'Riordan',
'Rivera', 'Roberson', 'Robertson', 'Robinson', 'Roby', 'Roehrich',
'Rogers', 'Roper', 'Rose', 'Rossetti', 'Roup', 'Ruiz', 'Saada',
'Saar-Beckles', 'Sadki', 'Sahoo', 'Salter', 'Sander', 'Semizoglou',
'Sewkumar', 'Shepard', 'Shields', 'Simard', 'Singh', 'Sloan',
'Smith', 'Soto', 'South', 'Sparks', 'Spirea', 'Squatrito',
'Stanford', 'Stanley', 'Steans', 'Stoica', 'Strong', 'Sullivan',
'Sutwell', 'Sweetwater', 'Szabo', 'Tavares', 'Tejeda', 'Veera',
'Von Massenbach', 'Wallace', 'Wang', 'Zhou', 'Zima'], dtype=object)


len(df["Employee_Name"].unique())

आउटपुट

231

.nunique() विधि

यह विधि किसी श्रृंखला में अद्वितीय मानों की संख्या लौटाती है। डिफ़ॉल्ट रूप से यह विधि पैरामीटर dropna =True का उपयोग करके अनुपलब्ध मानों को बाहर करती है।

आप फॉल्स तर्क को ड्रॉपना पैरामीटर में पास कर सकते हैं ताकि लापता मानों को नहीं छोड़ा जा सके।

df["Employee_Name"].nunique()

आउटपुट

231


df["Employee_Name"].nunique(dropna=False)

आउटपुट

231

  1. Windows 11 में डुप्लीकेट फ़ाइलें कैसे खोजें और निकालें?

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

  1. Windows में डुप्लीकेट फ़ोटो कैसे ढूंढें और निकालें

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

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

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