কম্পিউটার

পান্ডাসে ডুপ্লিকেট সারিগুলি কীভাবে খুঁজে বের করবেন এবং ফিল্টার করবেন?


কখনও কখনও আমাদের ডেটা বিশ্লেষণের সময়, আমাদের ডাটাগুলিকে সরাসরি ফেলে দেওয়ার পরিবর্তে সেগুলি সম্পর্কে আরও বোঝার জন্য আমাদের ডুপ্লিকেট সারিগুলি দেখতে হবে৷

সৌভাগ্যবশত, পান্ডাগুলিতে আমাদের সদৃশদের সাথে খেলার জন্য কয়েকটি পদ্ধতি রয়েছে।

.ডুপ্লসিয়েটেড()

এই পদ্ধতিটি আমাদের ডেটাফ্রেমে ডুপ্লিকেট সারি বের করতে দেয়। আমরা ডুপ্লিকেট সহ একটি নতুন ডেটাসেট ব্যবহার করব। আমি লিঙ্ক থেকে 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

  1. উইন্ডোজ এবং ম্যাকে ডুপ্লিকেট ভিডিওগুলি কীভাবে সন্ধান করবেন

  2. Windows 11-এ ডুপ্লিকেট ফাইলগুলি কীভাবে সন্ধান করবেন এবং সরান?

  3. কিভাবে উইন্ডোজে ডুপ্লিকেট ফটোগুলি খুঁজে বের করবেন এবং সরান

  4. আপনার পিসিতে ঘোরানো এবং ফ্লিপড ডুপ্লিকেটগুলি কীভাবে সন্ধান করবেন