حذف داده های تکراری (Removing Duplicates)
وقتی با pandas کار می کنی، حذف داده های تکراری در pandas خیلی مهم است. ردیف های تکراری می توانند نتیجه تحلیل را خراب کنند؛ مثل وقتی نمره یک امتحان را دو بار وارد کرده باشی.
شناخت داده های تکراری در pandas
داده تکراری یعنی دو ردیف دقیقاً یکسان ثبت شده باشند. در دیتاست مثال، ردیف های 11 و 12 کاملاً مشابه هستند؛ همین ها نمونه داده های تکراری اند.
در pandas برای پیدا کردن ردیف های تکراری از متد duplicated() استفاده می کنیم. این متد یک مقدار بولی (Boolean) برمی گرداند؛ یعنی برای هر ردیف فقط True یا False.
import pandas as pd
df = pd.read_csv("data.csv")
print(df.duplicated())
در خروجی، هر ردیفی که تکراری باشد مقدار True می گیرد. ردیف های یکتای اول معمولاً False هستند و تکراری های بعدی True می شوند.
نکته: می توانی این خروجی را مثل یک ماسک فیلتر استفاده کنی و فقط ردیف های تکراری را ببینی.
حذف داده های تکراری با drop_duplicates()
بعد از شناسایی، نوبت حذف داده های تکراری در pandas است. برای حذف ردیف های تکراری از متد drop_duplicates() استفاده می کنیم.
اگر inplace=True بدهیم، تغییرات روی همان DataFrame اعمال می شود. یعنی DataFrame جدید برنمی گردد، بلکه اصلی تمیز می شود.
import pandas as pd
df = pd.read_csv("data.csv")
df.drop_duplicates(inplace=True)
print(df.to_string())
بعد از اجرا، هر ردیف تکراری فقط یک بار باقی می ماند. این کار شبیه حذف جواب های تکراری در برگه حضور و غیاب است؛ هر دانش آموز فقط یک سطر دارد.
هشدار: اگر قبل از حذف تکراری ها به نسخه اصلی نیاز داری، اول از DataFrame یک کپی بگیر.
گام های عملی برای حذف داده های تکراری
- با استفاده از متدهای بخش تحلیل داده مثل
head()داده ها را مرور کن و ردیف های مشکوک را پیدا کن. - حذف داده های تکراری در pandas را با
df.duplicated()تست کن تا ببینی کدام ردیف ها تکراری هستند. - اگر مطمئن شدی تکراری ها به درد تحلیل نمی خورند، از
df.drop_duplicates()برای حذف استفاده کن. - در صورت نیاز، قبل از
drop_duplicates()از DataFrame یک کپی بگیر تا نسخه خام را داشته باشی. - بعد از حذف تکراری ها، سراغ مراحل دیگر پاک سازی داده برو و بقیه مشکلات را برطرف کن.
جمع بندی سریع
- داده تکراری یعنی یک ردیف دقیقاً بیش از یک بار ثبت شده است.
- با
duplicated()می توانی ردیف های تکراری را به صورت بولی پیدا کنی. - با
drop_duplicates()حذف داده های تکراری در pandas خیلی سریع انجام می شود. inplace=Trueیعنی روی همان DataFrame اصلی تغییر انجام می دهی.- حذف تکراری ها کمک می کند آمار و نمودارهای تو واقعی تر و دقیق تر باشند.