কখনও কখনও আমাদের ডেটা বিশ্লেষণের সময়, আমাদের ডাটাগুলিকে সরাসরি ফেলে দেওয়ার পরিবর্তে সেগুলি সম্পর্কে আরও বোঝার জন্য আমাদের ডুপ্লিকেট সারিগুলি দেখতে হবে৷
সৌভাগ্যবশত, পান্ডাগুলিতে আমাদের সদৃশদের সাথে খেলার জন্য কয়েকটি পদ্ধতি রয়েছে।
.ডুপ্লসিয়েটেড()
এই পদ্ধতিটি আমাদের ডেটাফ্রেমে ডুপ্লিকেট সারি বের করতে দেয়। আমরা ডুপ্লিকেট সহ একটি নতুন ডেটাসেট ব্যবহার করব। আমি লিঙ্ক থেকে Hr ডেটাসেট ডাউনলোড করেছি।
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)
| কর্মচারী_নাম | <থ> অবস্থান CitizenDesc | পারফরম্যান্স স্কোর | |
---|---|---|---|---|
0 | অ্যাডিনোলফি | উৎপাদন প্রযুক্তিবিদ I | মার্কিন নাগরিক | ছাড়িয়ে গেছে |
1 | অ্যাডিনোলফি | সিনিয়র ডিবিএ | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
2 | অ্যাডিনোলফি | উৎপাদন প্রযুক্তিবিদ II | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
যেভাবে ডুপ্লিকেটেড() ডিফল্টভাবে কাজ করে তা হল 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
এখন সদৃশগুলি বের করতে (মনে রাখবেন প্রথম ঘটনাটি নকল নয় বরং পরবর্তী ঘটনাটি সদৃশ এবং এই পদ্ধতি দ্বারা আউটপুট করা হবে) আমাদের একটি ডেটা ফ্রেমে এই পদ্ধতিটি পাস করতে হবে৷
df.shape
(310, 4)
df[df["Employee_Name"].duplicated()]
| কর্মচারী_নাম | <থ> অবস্থান CitizenDesc | পারফরম্যান্স স্কোর | |
---|---|---|---|---|
1 | অ্যাডিনোলফি | সিনিয়র ডিবিএ | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
2 | অ্যাডিনোলফি | উৎপাদন প্রযুক্তিবিদ II | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
3 | অ্যাডিনোলফি | উৎপাদন প্রযুক্তিবিদ I | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
4 | অ্যাডিনোলফি | উৎপাদন ব্যবস্থাপক | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
6 | এন্ডারসন | উৎপাদন প্রযুক্তিবিদ I | মার্কিন নাগরিক | ছাড়িয়ে গেছে |
... | ... | ... | ... | ... |
303 | ওয়াং | উৎপাদন প্রযুক্তিবিদ II | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
304 | ওয়াং | উৎপাদন প্রযুক্তিবিদ II | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
305 | ওয়াং | উৎপাদন প্রযুক্তিবিদ I | মার্কিন নাগরিক | পিআইপি |
306 | ওয়াং | CIO | মার্কিন নাগরিক | ছাড়িয়ে গেছে |
307 | ওয়াং | ডেটা বিশ্লেষক | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
79 সারি × 4 কলাম
উপরের আউটপুট থেকে 79টি ডুপ্লিকেট সহ 310টি সারি রয়েছে যা .duplicated() পদ্ধতি ব্যবহার করে বের করা হয়।
তর্ক-"শেষ"
ডিফল্টরূপে, এই পদ্ধতিটি মানটির প্রথম ঘটনাটিকে নন-ডুপ্লিকেট হিসাবে চিহ্নিত করতে চলেছে, আমরা এই আচরণটি কেপ =শেষটি পাস করে পরিবর্তন করতে পারি।
এই প্যারামিটারটি যা করতে যাচ্ছে তা হল প্রথম দুটি আপেলকে ডুপ্লিকেট হিসেবে এবং শেষটিকে নন-ডুপ্লিকেট হিসেবে চিহ্নিত করা।
df[df["Employee_Name"].duplicated(keep="last")]
| কর্মচারী_নাম | <থ> অবস্থান CitizenDesc | পারফরম্যান্স স্কোর | |
---|---|---|---|---|
0 | অ্যাডিনোলফি | উৎপাদন প্রযুক্তিবিদ I | মার্কিন নাগরিক | ছাড়িয়ে গেছে |
1 | অ্যাডিনোলফি | সিনিয়র ডিবিএ | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
2 | অ্যাডিনোলফি | উৎপাদন প্রযুক্তিবিদ II | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
3 | অ্যাডিনোলফি | উৎপাদন প্রযুক্তিবিদ I | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
5 | এন্ডারসন | উৎপাদন প্রযুক্তিবিদ I | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
... | ... | ... | ... | ... |
302 | ওয়াং | উৎপাদন প্রযুক্তিবিদ II | মার্কিন নাগরিক | ছাড়িয়ে গেছে |
303 | ওয়াং | উৎপাদন প্রযুক্তিবিদ II | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
304 | ওয়াং | উৎপাদন প্রযুক্তিবিদ II | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
305 | ওয়াং | উৎপাদন প্রযুক্তিবিদ I | মার্কিন নাগরিক | পিআইপি |
306 | ওয়াং | CIO | মার্কিন নাগরিক | ছাড়িয়ে গেছে |
তর্ক - মিথ্যা
Keep প্যারামিটারটি একটি অতিরিক্ত আর্গুমেন্ট "false"ও গ্রহণ করবে যা একবারের বেশি হওয়া সমস্ত মানকে ডুপ্লিকেট হিসাবে চিহ্নিত করবে, আমাদের ক্ষেত্রে 3টি আপেলই উপরের উদাহরণে দেখানো প্রথম বা শেষের পরিবর্তে ডুপ্লিকেট হিসাবে চিহ্নিত হবে৷
দ্রষ্টব্য – মিথ্যা প্যারামিটার নির্দিষ্ট করার সময় উদ্ধৃতি ব্যবহার করবেন না।
df[df"Employee_Name"].duplicated(keep=False)]
| কর্মচারী_নাম | <থ> অবস্থান CitizenDesc | পারফরম্যান্স স্কোর | |
---|---|---|---|---|
0 | অ্যাডিনোলফি | উৎপাদন প্রযুক্তিবিদ I | মার্কিন নাগরিক | ছাড়িয়ে গেছে |
1 | অ্যাডিনোলফি | সিনিয়র ডিবিএ | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
2 | অ্যাডিনোলফি | উৎপাদন প্রযুক্তিবিদ II | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
3 | অ্যাডিনোলফি | উৎপাদন প্রযুক্তিবিদ I | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
4 | অ্যাডিনোলফি | উৎপাদন ব্যবস্থাপক | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
... | ... | ... | ... | ... |
303 | ওয়াং | উৎপাদন প্রযুক্তিবিদ II | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
304 | ওয়াং | উৎপাদন প্রযুক্তিবিদ II | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
305 | ওয়াং | উৎপাদন প্রযুক্তিবিদ I | মার্কিন নাগরিক | পিআইপি |
306 | ওয়াং | CIO | মার্কিন নাগরিক | ছাড়িয়ে গেছে |
307 | ওয়াং | ডেটা বিশ্লেষক | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
এখন পরিশেষে, একটি ডেটাসেট থেকে অনন্য মানগুলি বের করতে আমরা মানগুলিকে অস্বীকার করতে "~" (টিল্ডা) চিহ্ন ব্যবহার করতে পারি
df_unique~df["Employee_Name"].duplicated(keep=False)df[df_unique]
| কর্মচারী_নাম | <থ> অবস্থান CitizenDesc | পারফরম্যান্স স্কোর | |
---|---|---|---|---|
7 | অ্যান্ড্রেওলা | সফটওয়্যার ইঞ্জিনিয়ার | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
25 | বোজি | উৎপাদন ব্যবস্থাপক | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
26 | ব্রামান্তে পরিচালনা পরিচালক | মার্কিন নাগরিক | ছাড়িয়ে গেছে | |
27 | ব্রিল | উৎপাদন প্রযুক্তিবিদ I | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
34 | বারকেট | উৎপাদন প্রযুক্তিবিদ II | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
... | ... | ... | ... | ... |
276 | মিষ্টি জল | সফটওয়্যার ইঞ্জিনিয়ার | মার্কিন নাগরিক | ছাড়িয়ে গেছে |
277 | জাবো | উৎপাদন প্রযুক্তিবিদ I | অনাগরিক | পুরোপুরি মিলিত হয় |
278 | টাভারেস | উৎপাদন প্রযুক্তিবিদ II | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
308 | ঝু | উৎপাদন প্রযুক্তিবিদ I | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
309 | জিমা | NaN | NaN | NaN |
drop_duplicates()
এই পদ্ধতিটি আগের পদ্ধতির মতোই, তবে এই পদ্ধতিটি একক সিরিজের পরিবর্তে ডেটাফ্রেমে হতে পারে৷
দ্রষ্টব্য :- এই পদ্ধতিটি একটি ডেটাফ্রেমের সমস্ত কলামে সদৃশ সারিগুলি সন্ধান করে এবং সেগুলিকে ফেলে দেয়৷
len(df)
আউটপুট
310
len(df.drop_duplicates())
আউটপুট
290
সাবসেট প্যারামিটার
উপসেট প্যারামিটার স্ট্রিং মান হিসাবে কলাম নামের একটি তালিকা গ্রহণ করে যেখানে আমরা সদৃশগুলি পরীক্ষা করতে পারি৷
df1=df.drop_duplicates(subset=["Employee_Name"],keep="first")df1
| কর্মচারী_নাম | <থ> অবস্থান CitizenDesc | পারফরম্যান্স স্কোর | |
---|---|---|---|---|
0 | অ্যাডিনোলফি | উৎপাদন প্রযুক্তিবিদ I | মার্কিন নাগরিক | ছাড়িয়ে গেছে |
5 | এন্ডারসন | উৎপাদন প্রযুক্তিবিদ I | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
7 | অ্যান্ড্রেওলা | সফটওয়্যার ইঞ্জিনিয়ার | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
14 | আটওয়াল | উৎপাদন প্রযুক্তিবিদ I | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
20 | চঞ্চু | উৎপাদন প্রযুক্তিবিদ I | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
... | ... | ... | ... | ... |
293 | ভন ম্যাসেনবাচ | উৎপাদন প্রযুক্তিবিদ II | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
295 | ওয়ালেস | উৎপাদন প্রযুক্তিবিদ I | মার্কিন নাগরিক | উন্নতি প্রয়োজন |
300 | ওয়াং | উৎপাদন প্রযুক্তিবিদ I | যোগ্য অনাগরিক | পুরোপুরি মিলিত হয় |
308 | ঝু | উৎপাদন প্রযুক্তিবিদ I | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
309 | জিমা | NaN | NaN | NaN |
আমরা একাধিক কলাম নির্দিষ্ট করতে পারি এবং পূর্ববর্তী বিভাগে আলোচনা করা সমস্ত রাখা প্যারামিটার ব্যবহার করতে পারি।
df1=df.drop_duplicates(subset="Employee_Name""CitizenDesc"],keep=False)df1
| কর্মচারী_নাম | <থ> অবস্থান CitizenDesc | পারফরম্যান্স স্কোর | |
---|---|---|---|---|
7 | অ্যান্ড্রেওলা | সফটওয়্যার ইঞ্জিনিয়ার | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
16 | চঞ্চু | উৎপাদন প্রযুক্তিবিদ I | যোগ্য অনাগরিক | পুরোপুরি মিলিত হয় |
25 | বোজি | উৎপাদন ব্যবস্থাপক | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
26 | ব্রামান্তে পরিচালনা পরিচালক | মার্কিন নাগরিক | ছাড়িয়ে গেছে | |
27 | ব্রিল | উৎপাদন প্রযুক্তিবিদ I | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
... | ... | ... | ... | ... |
287 | তেজেদা | নেটওয়ার্ক ইঞ্জিনিয়ার | যোগ্য অনাগরিক | পুরোপুরি মিলিত হয় |
286 | তেজেদা | সফটওয়্যার ইঞ্জিনিয়ার | অনাগরিক | পুরোপুরি মিলিত হয় |
300 | ওয়াং | উৎপাদন প্রযুক্তিবিদ I | যোগ্য অনাগরিক | পুরোপুরি মিলিত হয় |
308 | ঝু | উৎপাদন প্রযুক্তিবিদ I | মার্কিন নাগরিক | পুরোপুরি মিলিত হয় |
309 | জিমা | NaN | NaN | NaN |
অনন্য() পদ্ধতি
অনন্য পদ্ধতিগুলি একটি সিরিজে অনন্য মানগুলি খুঁজে পায় এবং একটি অ্যারে হিসাবে অনন্য মানগুলি ফেরত দেয়। এই পদ্ধতি অনুপস্থিত মান বাদ দেয় না।
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() পদ্ধতি
এই পদ্ধতিটি একটি সিরিজে অনন্য মানের সংখ্যা প্রদান করে। এই পদ্ধতিটি ডিফল্টরূপে অনুপস্থিত মানগুলি ড্রপনা =সত্য প্যারামিটার ব্যবহার করে বাদ দেয়৷
আপনি অনুপস্থিত মান না ড্রপ করতে ড্রপনা প্যারামিটারে মিথ্যা যুক্তি পাস করতে পারেন।
df["Employee_Name"].nunique()
আউটপুট
231
df["Employee_Name"].nunique(dropna=False)
আউটপুট
231