پاک‌سازی داده

پاک‌سازی داده واقعی: حذف رکوردهای تکراری، یکسان‌سازی فرمت‌ها، اصلاح متن‌ها و نرمال‌سازی مقادیر دسته‌ای

چرا پاک‌سازی داده؟

داده واقعی همیشه کثیف است! کاربران تاریخ را به ده شکل مختلف وارد می‌کنند، اسم شهر را با غلط املایی می‌نویسند و فرم‌ها را ناقص پر می‌کنند. تحلیل روی داده کثیف = نتیجه غلط. به همین دلیل پاک‌سازی، زمان‌برترین اما مهم‌ترین بخش علم داده است.

مشکل ۱: رکوردهای تکراری

دوبار‌ثبت‌شدن یک سفارش یا دوبارکلیک‌شدن دکمه ثبت، رکورد تکراری می‌سازد. تکراری‌ها آمار را متورم می‌کنند (مثلاً فروش دو برابر گزارش می‌شود!).

در pandas:

df.duplicated()          # شناسایی تکراری‌ها
df = df.drop_duplicates()  # حذف تکراری‌ها

مشکل ۲: فرمت‌های ناسازگار

یک تاریخ به‌صورت «۱۴۰۲/۰۳/۱۵» و دیگری «15-03-1402» ذخیره شده است! یا قیمت‌ها گاهی با جداکننده هزارگان («۱٬۲۰۰٬۰۰۰») ثبت شده‌اند. راه‌حل: یکسان‌سازی (Normalization) همه مقادیر به یک فرمت استاندارد.

مشکل ۳: ناهمگونی متن‌ها

راه‌حل‌ها در pandas:

df["city"] = df["city"].str.strip()      # حذف فاصله‌های دو طرف
df["city"] = df["city"].str.upper()     # یکسان‌سازی حروف
df["city"] = df["city"].replace({"تهرران": "تهران"})  # اصلاح غلط املایی

مشکل ۴: مقادیر غیرمنطقی

سن ۲۰۰ سال یا قیمت منفی! این مقادیر با قاعده‌های دامنه (Domain Rules) شناسایی و یا اصلاح یا حذف می‌شوند:

df = df[(df["age"] >= 0) & (df["age"] <= 120)]

مشکل ۵: نوع داده اشتباه

ستون قیمت که به‌صورت متن ذخیره شده، اجازه هیچ محاسبه‌ای نمی‌دهد:

df["price"] = df["price"].astype(float)

جدول مشکلات رایج و راه‌حل‌ها

مشکلعلامتراه‌حل pandas
تکراریduplicated()drop_duplicates()
فاصله اضافیvalue_counts عجیبstr.strip()
حروف ناهمگن«تهران» و «Tehran»str.upper() / str.lower()
غلط املاییدسته‌های نادرreplace()
مقدار غیرمنطقیdescribeفیلتر دامنه معتبر
نوع اشتباهdtypesastype()
هشدار: قبل از حذف هر رکورد، از خودتان بپرسید «چرا این داده کثیف است؟» گاهی تکراری‌ها نشانه باگ سیستم ثبت هستند و باید ریشه‌ای حل شوند، نه فقط پاک!

بهترین شیوه‌ها

جمع‌بندی

این مبحث بخشی از دوره آموزش کامل علم داده است.

ابزارهای مرتبط