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