آموزش

راهنمای مبتدیان برای پاکسازی داده‌ها در پایتون

با اصول پاک‌سازی داده در پایتون آشنا شو و اهمیت آماده‌سازی داده‌ها برای تحلیل رو با برطرف‌کردن مشکلات رایجی مثل مقادیر گمشده، داده‌های پرت، داده‌های تکراری و ناسازگاری‌ها درک کن.

تاریخ انتشار:
2 شهریور 1405
پایتون
11 دقیقه
کاربرهای فینکا در چه شرکت‌هایی مشغول به کار هستند؟

مقدمه‌ای بر پاکسازی داده‌ها

وقتی یه پروژه داده‌ی جدید رو شروع می‌کنی، داده‌هایی که به دست میاری خیلی کم پیش میاد همون اول برای تحلیل کاملاً بی‌نقص باشن. به همین خاطر، خیلی مهمه که در شروع هر پروژه جدید، فرآیند پاکسازی داده‌ها رو انجام بدی.

پاکسازی داده‌ها فرآیندیه که در اون خطاها، مقادیر دورافتاده و ناهماهنگی‌ها حذف می‌شن تا مطمئن بشی همه داده‌هات برای تحلیل فرمت مناسبی دارن. داده‌هایی که خطای زیادی دارن یا این فرآیند روشون انجام نشده، بهشون «داده‌های کثیف» می‌گن.

ممکنه این مرحله برای خیلی از متخصصای تازه‌کارِ داده یه چیز اختیاری به نظر برسه، ولی مطمئن باش که واقعاً مهمه! اگه داده‌ها رو درست پاکسازی نکنی، ممکنه مدلت به نتیجه‌گیری‌های اشتباه برسه، نمودارت یه روند الکی رو نشون بده و آمارها کلاً غلط از آب دربیان.

یه دیتاست خیلی کوچیک رو در نظر بگیر. فرض کن تو و دوستات دارین آب‌نبات‌هاتون رو مساوی بین خودتون تقسیم می‌کنین و باید مشخص بشه به هر نفر چند تا آب‌نبات می‌رسه. تو میای داده‌هات رو در جدول زیر وارد می‌کنی.

تعداد آب‌نبات‌ها

شخص

5

Peter

20

Sandy

20

Sandy

3

Joseph

12

Amed

حالا اگه از ستون تعداد آب‌نبات‌ها میانگین بگیری، ممکنه به این نتیجه برسی که سهم هر نفر ۱۲ تا آب‌نباته.

ولی اگه سعی کنی به هر نفر ۱۲ تا آب‌نبات بدی، قبل از اینکه به همه سهمشون برسه، آب‌نبات‌ها تموم می‌شه؛ چون اسم Sandy در جدول دو بار تکرار شده. در واقع به جای ۶۰ تا، فقط ۴۰ تا آب‌نبات داری (و کلاً هم ۴ نفرین، نه ۵ نفر!).

اگه برای پاکسازی دیتاست وقت نذاری، این خطر وجود داره که تحلیلت به نتایج اشتباهی ختم بشه.

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

پاکسازی داده‌ها در تحلیل‌های پیچیده‌تر خیلی مهم‌تر می‌شه. در این نوع تحلیل‌ها، معمولاً انتظار دقیقی از نتایج نداری و این یعنی اگه نتایج اشتباه باشن، ممکنه اصلاً متوجهش نشی.

پاکسازی کامل داده‌ها، در کنار بررسی و تست دقیقشون، می‌تونه تا حد زیادی جلوی این مشکلات رو بگیره. در این آموزش، قراره با مفاهیم و مراحل اصلی فرآیند پاکسازی داده‌ها در پایتون آشنا بشیم.

درک داده‌های کثیف

انواع مختلفی از خطاها و ناهماهنگی‌ها وجود دارن که می‌تونن باعث کثیف شدن داده‌ها بشن. بیا چند تا از رایج‌ترین انواع اونا رو بررسی کنیم و ببینیم چرا مشکل‌سازن.

مقادیر گمشده

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

مقادیر گمشده می‌تونن تاثیرات مختلفی روی تحلیلت بذارن. از دست رفتن بخش بزرگی از داده‌های حیاتی می‌تونه باعث ایجاد سوگیری در نتایجت بشه. علاوه بر این، مقادیر گمشده یا سلول‌های خالی در یه دیتافریم ممکنه باعث توقف اجرای بعضی کدهای پایتون بشه و موقع ساخت مدل حسابی ناامیدت کنه.

مقادیر پرت

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

داده‌های تکراری 

همون‌طور که قبلاً دیدیم، ورودی‌های تکراری می‌تونن در تحلیلت وزن بیشتری به یه داده خاص بدن و منجر به نتیجه‌گیری اشتباه بشن. مراقب داده‌هایی باش که بیش از یک بار تکرار می‌شن یا اونایی که اطلاعات متناقض و به‌روزشده‌ای در خودشون دارن.

داده‌های نادرست

گاهی مقادیر موجود در دیتاست ما صرفاً اشتباه هستن. ممکنه املای اسم یه مشتری رو اشتباه نوشته باشی، شماره محصول غلط وارد شده باشه، اطلاعات قدیمی باشن یا داده‌ها اشتباه برچسب‌گذاری شده باشن.

گاهی تعیین اینکه آیا داده‌هات اشتباهن می‌تونه چالش‌برانگیز باشه، به همین دلیله که تایید منبعت اینقدر مهمه! یادت باشه، کیفیت تحلیل تو فقط به اندازه کیفیت داده‌هاته.

ناهماهنگی‌ها

ناهماهنگی‌ها به شکل‌های مختلفی رخ می‌دن. می‌تونه ناشی از ورود داده‌های ناهماهنگ باشه که به یه اشتباه تایپی یا خطا اشاره داره. اگه در داده‌ها می‌بینی سن یه مشتری به جای افزایش کم می‌شه، شناسه یه ماده تغییر می‌کنه یا یه محصول همزمان دو قیمت داره، ارزشش رو داره که بررسی دقیق‌تری انجام بدی و مطمئن بشی همه چیز درسته.

یکی دیگه از انواع مشکل‌ساز ناهماهنگی، ناهماهنگی در فرمت داده‌هاست. ممکنه مقادیر مختلف با واحدهای متفاوتی (مثل کیلومتر در مقابل مایل و اینچ)، در حالت‌های مختلف (ماه/روز/سال در مقابل روز-ماه-سال)، در نوع‌ داده‌ متفاوت (عدد اعشاری در مقابل عدد صحیح) یا حتی پسوند فایل‌های مختلف (jpg در مقابل png) گزارش شده باشن.

این ناهماهنگی‌ها تفسیر درست مقادیر رو برای کدت چالش‌برانگیز، یا حتی غیرممکن می‌کنن. این موضوع می‌تونه باعث یه تحلیل اشتباه بشه یا کلاً جلوی اجرای کد رو بگیره.

کاوش و پیش‌پردازش داده‌ها

خیلی مهمه که قبل از استفاده از یه دیتاست در یه تحلیل پیچیده، اون رو به خوبی درک کنی. برای ایجاد این درک از داده‌هات، باید کمی در اونا کاوش کنی. می‌تونی به این مرحله به چشم یه «تحلیل پیش از تحلیل» نگاه کنی.

بیا به چند مرحله معمول برای کاوش روی یه دیتاست با فرمت جدولی بپردازیم:

  1. اول از همه، به منبع دیتاستت نگاه کن و مشخص کن که آیا اون منبع سوگیری یا هدفی داره که ممکنه روی کیفیت یا قابلیت اطمینان داده‌هات تاثیر منفی بذاره.
  2. با زمینه داده‌هات و سایر عواملی که ممکنه روی داده‌ها تاثیر گذاشته باشن و به طور داخلی در نظر گرفته نشدن، آشنا شو.
  3. مشخص کن چند متغیر مختلف داری. در یه دیتاست جدولی، متغیرها معمولاً همون ستون‌ها هستن، در حالی که هر ردیف یه ورودی داده محسوب می‌شه.
  4. مشخص کن در هر متغیر چند طبقه‌ مختلف داری. برای مثال، اگه یکی از متغیرهای تو نوع میوه‌ست، باید تصویر خوبی از تعداد انواع مختلف میوه‌هایی که در این متغیر وجود دارن داشته باشی.
  5. به آمارهای خلاصه شده برای هر ستون، از جمله میانگین، میانه، واریانس و انحراف معیار نگاه کن.
  6. در صورت امکان، هر متغیر و تا جایی که می‌تونی ترکیبی از دو متغیرها رو روی نمودار ببر و واقعاً به این نمودارها دقت کن. دنبال هر انحراف، مقادیر دورافتاده، روندها یا همبستگی‌هایی باش که ممکنه ارزش بررسی بهتر رو داشته باشن.
  7. اگه دیتاست تو بخشی از یه پایگاه داده رابطه‌ایه، به این روابط از نزدیک نگاه کن و مطمئن شو که می‌دونی جدول‌های مختلف چطور با هم در ارتباطن.
  8. در صورت لزوم، از قابلیت profiling کتابخونه pandas استفاده کن تا یه گزارش ایجاد بشه. این کار اطلاعات بسیار ارزشمندی رو درباره دیتاست در اختیارت قرار می‌ده.

چرا کاوش و پیش‌پردازش داده اهمیت داره؟

شاید همه اینا برای تحلیل نهایی تو اضافه به نظر برسه، اما چند دلیل مهم وجود داره که چرا باید همیشه این مراحل رو انجام بدی. اولاً، این کار بهت درک عمیق‌تری از محدودیت‌های دیتاست می‌ده، که برای اعتماد به نتایج تحلیل‌های نهایی کاملاً ضروریه.

دوماً، کاوش در داده‌ها می‌تونه تو رو در مسیر روندها و تحلیل‌های مهمی قرار بده که قبلاً بهشون فکر نکرده بودی. اینا پتانسیلش رو دارن که به تحلیل‌های درخواستی‌ تو اضافه بشن یا حتی عامل پیچیده‌ای باشن که نیاز به توجهت دارن.

سوماً، این پیش‌تحلیل می‌تونه اولین سرنخ تو نسبت به مکان احتمالی داده‌های کثیف باشه. این می‌تونه همون لحظه‌ای باشه که اون مقدار دورافتاده رو می‌بینی، متوجه می‌شی دو برابر حد معمول طبقه‌‌بندی وجود داره یا کشف می‌کنی که روش جمع‌آوری داده‌ها نسبت به سال گذشته متفاوت بوده. همه اینا اطلاعات بسیار حیاتی هستن که تو رو تشویق می‌کنن تا برای دیتاست خودت کنجکاو باشی.

برای اطلاعات بیشتر درباره کاوش داده، به دوره کاوش داده‌ها در پایتون فینکا سر بزن.

تکنیک‌های پاکسازی داده در پایتون

بیا با آموزش چند تکنیک مهم پاکسازی داده در پایتون و نحوه حل بعضی از مشکلات معمول داده‌های کثیف، وارد جزئیات عملی بشیم.

مدیریت مقادیر گمشده

همیشه وقتی با یه دیتاست بزرگ کار می‌کنی، بعضی از فیلدها در یک یا چند ورودی گم می‌شن. این نه‌تنها به این معنیه که داده‌های ارزشمندی رو از دست دادی، بلکه ورودی‌های خالی NaN می‌تونن اجرای بعضی توابع پایتون رو متوقف کنن و مدلت رو بی‌دقت کنن.

وقتی یه مقدار گمشده رو پیدا می‌کنی، دو راه داری: یا اون ورودی رو از تحلیل حذف کنی، یا اینکه سعی کنی یه مقدار منطقی به جاش قرار بدی. اگه دیتاست تو نسبتاً کوچیکه، پیشنهاد می‌کنم ردیف‌هایی که شامل مقادیر گمشده هستن رو بررسی کنی تا بتونی بهترین مسیر رو تعیین کنی.

حذف یه ورودی معمولاً انتخاب اول نیست، چون به معنی حذف اطلاعات احتمالاً باارزش از دل تحلیله.

اما، گاهی اوقات هم حذف کردن بهترین گزینه‌ست؛ مثلاً اگه اون داده اطلاعات اضافه کافی برای نگه داشتنش در اختیار نذاره (مثل زمانی که ورودی فقط یه تاریخه و هیچ داده باارزش دیگه‌ای نداره).

حذف کردن، راحت‌ترین مسیر برای مقابله با ردیف‌های دارای محتوای گمشده‌ست. بنابراین، اگه وقت کافی نداری و بقیه مقادیر موجود در اون ستون برای تحلیل مهم نیستن، پاک کردن ردیف‌های خالی (دارای NaN) یه گزینه منطقیه.

می‌تونی از متد .dropna() از کتابخونه pandas برای حذف ردیف‌های دارای NaN در یه دیتافریم استفاده کنی.

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

متد .fillna() از pandas مقادیر گمشده رو با استفاده از میانگین مقادیر پر می‌کنه تا توزیع اعداد تغییری نکنه.

کتابخونه Scikit-learn هم یه تابع جایگزین ساده و سریع داره که به خوبی کار می‌کنه.

اگه به روش جایگذاری پیچیده‌تری نیاز داری، می‌تونی استفاده از الگوریتم KNN یا رگرسیون رو برای پیدا کردن یه مقدار خوب در نظر بگیری. روشی که انتخاب می‌کنی، در نهایت به نوع داده‌ها، نیازها و منابع در دسترست برمی‌گرده.

تشخیص و مدیریت مقادیر دورافتاده

برخورد با داده‌های دورافتاده کمی چالش‌برانگیزتره. بعضی مقادیر به ظاهر نامربوط، در واقع از داده‌های مهم محسوب می‌شن، مثل الگوی واکنش بازار سهام به بحران‌هایی مثل رکود جهانی یا کووید-19. با این وجود، بعضی دیگه می‌تونن به شکل خطاهای تایپی یا شرایط استثنایی بدون‌کاربرد باشن که باید حذف بشن.

تشخیص این فرق بیشتر به فهم زمینه اطلاعاتیت برمی‌گرده (که کاوش‌هایی که در مراحل قبل داشتی می‌تونه اینجا خیلی کمک‌حالت باشه)، و البته، داشتن یه تصویر از نتایج درخواست‌شده.

بیشتر مقادیر دورافتاده وقتی نقاط داده روی نمودار پیاده می‌شن به شکلی واضح نمایان می‌شن، ولی با کمک مدل‌های آماری هم می‌تونی این داده‌های غیرمعمول رو شناسایی کنی.

یه روش معمول اینه که برای هر مقدار یه z-score محاسبه کنی و داده‌هایی که z-score پرتی دارن رو حذف کنی.

یه روش دیگه اینه که دامنه بین چارکی (IQR) توزیع رو محاسبه کنی و هر داده‌ای که کوچکتر از مقدار Q1-(1.5 x IQR) یا بزرگتر از Q3+(1.5 x IQR) هست رو در طبقه‌ مقادیر دورافتاده لحاظ کنی.

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

در بقیه مدل‌ها، ممکنه بشه اون اطلاعات دورافتاده رو به کلی حذف کرد یا حتی اونا رو در حدی که چارچوب توزیع داده‌ها رو خیلی دچار تغییر نکنن، به مقادیر معقول‌تری تغییر داد.

سقف‌گذاری یکی از روش‌های مدیریت مقادیر پرته. در این روش، حد یا آستانه‌ای برای توزیع داده‌ها تعیین می‌شه و مقادیری که از این حدود فراتر برن، با یه مقدار مشخص جایگزین می‌شن.

در بعضی موارد می‌تونی با تبدیل داده‌ها به سبکی که تاثیر مقادیر پرت رو به حداقل می‌رسونه، روند مدل رو تغییر بدی. مثلاً با انجام یه تبدیل ریشه دوم (جذر) یا تبدیل لگاریتمی.

در زمانی که داده‌ها رو تغییر می‌دی احتیاط کن، چون عدم نظارت در این مرحله ممکنه باعث ایجاد مشکلات جدیدی بشه. قبل از اینکه برای تغییر داده‌هات اقدام کنی، چند راهکار وجود داره که بهتره در نظر داشته باشیشون.

  1. درک درست توزیع بنیادی داده‌ها: قبل از بکارگیری هر تبدیلی، خیلی مهمه که نمودار توزیع متغیرها رو بفهمی، و بدونی تبدیل‌های مشخص چه تاثیراتی می‌ذارن.
  2. انتخاب یه تبدیل مناسب: الگوریتمی برای تبدیل متغیرها به کار بگیر که با فضای داده‌های تو سازگارتره.
  3. مدیریت مقدار صفر و داده‌های منفی: بعضی روش‌های تبدیل ممکنه با مقادیری که صفر هستن یا عدد منفی دارن جواب ندن. مثلاً وقتی می‌خوای لگاریتم یه داده رو محاسبه کنی، می‌تونی مقدار متغیرت رو در زمان شروع با یه عدد خیلی کم جمع بزنی تا دچار خطاهای احتمالی نشی.
  4. اعتبارسنجی مجدد مقادیر تغییریافته: وقتی رویه تبدیل به مرحله آخرش رسید، حتماً ساختار اطلاعات جدید رو ارزیابی کن تا از تطابق فرضیات تحلیل اولیه با روند توزیع اون اطمینان پیدا کنی.
  5. قابلیت تفسیر نتایج نهایی رو در نظر بگیر: شاید درک اطلاعات به‌دست‌اومده از نمونه‌های تبدیلی نسبت به حالت قبلیشون کمی مبهم‌تر به نظر بیاد، پس حتماً بررسی کن که آیا کسانی که در روند کار، گزارش دریافت می‌کنن اون رو به شکل درستی متوجه می‌شن یا نه.

برای یادگیری بهتر این روش‌ها، دوره‌های آموزشی آمار نظیر مقدمه‌ای بر آمار در پایتون فینکا و همچینین دوره مبانی آمار با پایتون می‌تونه حسابی کاربردی باشه.

مدیریت داده‌های تکراری

همون‌طور که جلوتر بهش اشاره شد متوجه شدیم داده‌های تکراری تا چه حدی می‌تونن مسیر تحلیل رو منحرف کنن. خبر خوب اینکه فرآیند شناسایی و رسیدگی به این‌جور اطلاعات، در پایتون نسبتاً راحته.

با به کار گرفتن متد duplicated() درون کتابخونه قدرتمند pandas، به سادگی می‌تونی ردیف‌های مشابه و تکراری یه دیتافریم رو بشناسی و بهشون بپردازی.

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

بیشتر این داده‌ها دقیقاً کپی صددرصدی اطلاعات جدول هستن، بنابراین می‌شه خیلی ساده و بی‌دردسر اونا رو با به‌کارگیری تابع drop_duplicates() درون همون pandas پاک کرد:

گاهی موقعیت جوریه که اگه بیاییم داده‌های تکراری اما مرتبط به هم رو با هم ترکیب و تجمیع کنیم معقول‌تر به نظر میان. مثلاً داده‌هایی از یه هویت خاص داریم با ورودی‌های گوناگون؛ اون وقت جای حذف کردن می‌شه مجموع مقادیر اون هویت رو توسط توابع تجمیع، ترکیب کرد:

این روش سطرهای تکرارشونده رو جمع کرده در کنار هم به‌صورت یکپارچه، اونا رو نسبت به خواسته مثل توابعی مانند جمع کردن یا sum یا تعیین میانگین mean تجمیع می‌کنه.

خروجی
   customer_id product_id  quantity_sold
0          101          A              5
1          102          B              3
2          101          A              2
3          103          C              1
4          102          B              4
خروجی
   customer_id product_id  quantity_sold
0          101          A              7
1          102          B              7
2          103          C              1

بررسی ناهماهنگی‌ها

ناهماهنگی‌های متنوع به رویکردها و راه‌حل‌های مناسبی از جنس همون نوع نیاز دارن. مواردی از مقادیر اشتباهی که از طریق باگ در وارد کردن داده پیدا می‌شن، یا بر اساس غلط دیکته‌ای ثبت شدن رو شاید بشه در همون سرمنشا اصلاح کرد. در نظر گرفتن گزینه‌ای چون جایگزین‌سازی مثل زمان برخورد با داده‌های گمشده می‌تونه راهکار بعدی در این خصوص باشه یا کلاً از دیتاست کنار گذاشته بشن؛ همه چی بستگی به شرایطت داره.

ناهماهنگی در ساختار داده با بعضی قابلیت‌های استاندارد در این زمینه برطرف می‌شه. به‌کارگیری تابع .strip() برای برداشتن فاصله در سمت چپ یا راست هر متن در رشته‌ها کاربردیه. توابع .upper() به همراه .lower()، شکل و شمایل فرم‌بندی بزرگ یا کوچیک بودن حروف رشته رو استاندارد می‌کنن. تبدیل ساختار اطلاعات مربوط به تاریخ با ویژگی pd.to_datetime باعث یکسان‌سازی فرمت‌های زمانی خواهد شد.

همچنین می‌تونی برای چک کردن نوع دیتاها و یکدست کردنِ ستون در شیوه اطلاعاتیِ فایل ذخیره‌شده دیتافریم، از ویژگی متد .astype() در پایتون استفاده کنی.

از کارهای دیگه در زمان پاکسازی اشکالات ظاهری ممکنه موارد زیر باشه:

  • تبدیل واحد
  • استانداردسازی ایمیل، شماره‌های موبایل یا فرمت دادن به آدرس‌های درج‌شده
  • حذف علائم خاص نگارشی در درون محتوای ذخیره‌شده
  • نگاشت مقادیر برای کلمه‌های اختصاری

تغییر و مهندسی داده‌ها (مهندسی ویژگی)

تبدیل داده‌ها و مهندسی ویژگی از مهم‌ترین تکنیک‌های پیش‌پردازش داده به شمار می‌رن. این روش‌ها به ما کمک می‌کنن داده‌های خام رو به شکلی تبدیل کنیم که برای الگوریتم‌های یادگیری ماشین و تحلیل‌های آماری مناسب‌تر باشن. در این بخش، به‌طور مختصر با چند مورد از رایج‌ترین تکنیک‌های تبدیل داده و مهندسی ویژگی در پایتون آشنا می‌شیم.

نرمال‌سازی و استانداردسازی

نرمال‌سازی (Normalization) به همراه تکنیک استانداردسازی دو رویکرد مشخص برای تغییر اندازه ویژگی‌ها درون بازه‌ای نزدیک به همدیگه محسوب می‌شن. یه فرآیند مهم در بخش عمده‌ای از یادگیری ماشین!

ویژگی نرمال‌سازی میاد بازه داده‌ها رو در محدوده‌ای مقرر تنظیم می‌کنه. در واقع دامنه مقادیر بین 0 تا 1 مقیاس‌گذاری می‌شه. با در پیش گرفتن این کار باعث می‌شه همه ویژگی‌ها در یه مقیاس قرار بگیرن و ویژگی‌هایی که مقادیر بزرگ‌تری دارن نتونن صرفاً به‌دلیل بزرگی مقادیرشون بر سایر ویژگی‌ها تأثیر بیشتری بذارن.

استانداردسازی (Standardization) داده‌ها رو به شکلی تبدیل می‌کنه که میانگین اونا 0 و انحراف معیارشون 1 باشه. برخلاف نرمال‌سازی که داده‌ها رو به یه بازه مشخص محدود می‌کنه، استانداردسازی روی توزیع داده‌ها تمرکز داره.

این روش زمانی مفیده که ویژگی‌های مختلف دارای مقیاس‌ها و بازه‌های متفاوت باشن. در نتیجه، هر ویژگی می‌تونه نقش متعادل‌تری در فرایند یادگیری مدل ایفا کنه.

اینکه از نرمال‌سازی استفاده کنی یا استانداردسازی، به ویژگی‌های داده‌ها و نیازهای مدل موردنظرت بستگی داره. برای آشنایی بیشتر با تفاوت این دو روش، می‌تونی آموزش «نرمال‌سازی در برابر استانداردسازی؛ تفاوت این دو روش چیست؟» رو مطالعه کنی.

کدگذاری متغیرهای طبقه‌‌ای

کدگذاری متغیرهای طبقه‌‌ای یکی از مراحل مهم پیش‌پردازش داده در یادگیری ماشین به شمار می‌ره، به‌ویژه زمانی که با ویژگی‌های غیرعددی سروکار داریم. متغیرهای طبقه‌‌ای داده‌های کیفی رو نمایش می‌دن؛ داده‌هایی مانند انواع، کلاس‌ها یا برچسب‌ها. از اونجا که بیشتر الگوریتم‌های یادگیری ماشین با داده‌های عددی کار می‌کنن، این متغیرها باید به قالبی عددی تبدیل بشن.

یکی از رایج‌ترین روش‌های کدگذاری متغیرهای طبقه‌‌ای، کدگذاری وان-هات (One-Hot Encoding) هست. در این روش، هر طبقه‌ به یه بردار باینری تبدیل می‌شه. این تکنیک برای متغیرهای طبقه‌‌ای اسمی (Nominal) بسیار مناسبه؛ یعنی متغیرهایی که بین طبقه‌‌های اونا هیچ ترتیب یا سلسله‌مراتب ذاتی وجود نداره.

خروجی
Original DataFrame:
   ID  Color
0   1    Red
1   2   Blue
2   3  Green
3   4    Red
4   5  Green

Encoded DataFrame:
   ID  Color_Blue  Color_Green  Color_Red
0   1       False        False       True
1   2        True        False      False
2   3       False         True      False
3   4       False        False       True
4   5       False         True      False

روش دیگه‌ای که برای کدگذاری متغیرهای طبقه‌‌ای استفاده می‌شه، کدگذاری برچسبی هست. در این روش، به هر طبقه‌ یه عدد صحیح یکتا اختصاص داده می‌شه. به این ترتیب، هر برچسب طبقه‌‌ای به یه مقدار عددی نگاشت می‌شه و داده‌های طبقه‌‌ای به مقادیر عددی ترتیبی تبدیل می‌شن.

این روش برای متغیرهای طبقه‌‌ای ترتیبی مناسبه؛ یعنی متغیرهایی که بین طبقه‌‌های اونا یه ترتیب یا رتبه‌بندی طبیعی وجود داره.

خروجی
Original DataFrame:
   ID  Color
0   1    Red
1   2   Blue
2   3  Green
3   4    Red
4   5  Green

DataFrame with Label Encoded Column:
   ID  Color_LabelEncoded
0   1                   2
1   2                   0
2   3                   1
3   4                   2
4   5                   1

انتخاب روش مناسب کدگذاری به ماهیت متغیر طبقه‌‌ای و همچنین نیازهای الگوریتم یادگیری ماشین بستگی داره. به‌طور کلی، کدگذاری وان-هات برای متغیرهای اسمی گزینه مناسب‌تریه، در حالی که کدگذاری برچسبی برای متغیرهای ترتیبی کاربرد بیشتری داره.

تکنیک‌های مهندسی ویژگی

مهندسی ویژگی یکی از مراحل مهم در توسعه مدل‌های یادگیری ماشینه که شامل ایجاد ویژگی‌های جدید یا تغییر ویژگی‌های موجود می‌شه. این فرایند معمولاً زمانی به کار میاد که داده‌های خام فاقد ویژگی‌هایی باشن که مستقیماً به حل مسئله کمک می‌کنن، یا زمانی که ویژگی‌های موجود در قالبی نباشن که الگوریتم یادگیری ماشین بتونه به‌خوبی از اونا استفاده کنه.

فرض کن روی یه مجموعه‌داده مربوط به قیمت خانه‌ها کار می‌کنی و هدفت پیش‌بینی قیمت فروش خانه‌هاست. این مجموعه‌داده شامل اطلاعاتی مثل تعداد اتاق‌ها، متراژ فضای مسکونی و وضعیت ملک هست. با این حال، ویژگی‌ای که به‌طور مستقیم وضعیت کلی خانه رو توصیف کنه در داده‌ها وجود نداره.

در همچین شرایطی می‌تونی با استفاده از ویژگی‌های موجود، یه ویژگی جدید ایجاد کنی یا اطلاعات مفیدی رو از اونا استخراج کنی.

برای مثال، می‌شه ویژگی جدیدی با نام «وضعیت کلی» ساخت. این ویژگی می‌تونه از ترکیب عواملی مانند وضعیت آشپزخانه، کیفیت زیرزمین، سن بنا، بازسازی‌های انجام‌شده و سایر شاخص‌های مرتبط به دست بیاد.

همچنین در مواردی که رابطه بین ویژگی‌ها و متغیر هدف غیرخطی باشه، می‌تونیم ویژگی‌های چندجمله‌ای تولید کنیم. در این روش، ویژگی‌های موجود به توان‌های مختلف می‌رسن تا روابط پیچیده‌تری بین متغیرها مدل‌سازی بشه. این کار به الگوریتم کمک می‌کنه الگوهایی رو یاد بگیره که با یه رابطه خطی ساده قابل تشخیص نیستن.

در بعضی موارد ممکنه با دیتاست‌هایی روبه‌رو بشی که تعداد ویژگی‌های اونا خیلی زیاده یا بین ویژگی‌ها هم‌بستگی بالایی وجود داره. در همچین شرایطی می‌شه از تکنیک‌هایی مثل تحلیل مؤلفه‌های اصلی (PCA) استفاده کرد. این روش ابعاد داده‌ها رو کاهش می‌ده، اما در عین حال تلاش می‌کنه بخش عمده اطلاعات مهم و مرتبط موجود در داده‌ها حفظ بشه.

مهندسی ویژگی کمک می‌کنه داده‌های مناسب رو در قالبی مناسب برای استفاده مدل در اختیار داشته باشی. تکنیک‌های مختلفی برای مهندسی ویژگی وجود داره و انتخاب هر کدوم از اونا به مسئله‌ای که قصد حل کردنش رو داری بستگی داره.

اگه دوست داری با روش‌های بیشتری در این حوزه آشنا بشی، می‌تونی دوره مهندسی ویژگی فینکا رو هم بررسی کنی.

پاکسازی داده‌ها در پایتون: بهترین روش‌ها و نکات

پاکسازی داده‌ها یکی از مراحل حیاتی در هر پروژه تحلیل داده یا یادگیری ماشینه.

در ادامه، چند مورد از بهترین روش‌ها و نکاتی رو بررسی می‌کنیم که می‌تونن به بهینه‌تر شدن فرایند پاکسازی داده‌ها کمک کنن:

داده‌های خام رو جدا ذخیره کن

همیشه نسخه اصلی رو نگه دار!

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

می‌تونی قبل از اعمال هر تغییری، یه کپی از فایل خام تهیه کنی و پسوند RAW- رو به اسم فایل اضافه کنی تا همیشه مشخص باشه کدوم فایل نسخه اصلیه.

کدهای پاکسازی داده‌ رو مستند کن

به کدت کامنت اضافه کن تا هدف هر مرحله از پاکسازی داده و فرض‌هایی که در طول کار در نظر گرفتی مشخص باشه.

مواظب اتفاقات غیرمنتظره باش

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

یه تاریخچه برای پاکسازی داده‌هات نگه دار

اگه فرایند پاکسازی داده‌ها طولانیه یا به‌صورت خودکار انجام می‌شه، بهتره یه فایل جداگانه برای ثبت جزئیات هر مرحله از پاکسازی داشته باشی.

اطلاعاتی مثل تاریخ انجام تغییرات، اقداماتی که انجام شده و مشکلاتی که در طول فرایند با اونا مواجه شدی، می‌تونن در آینده بسیار مفید باشن.

این سند رو در محلی قرار بده که به‌راحتی در دسترس باشه؛ برای مثال داخل همون پوشه پروژه که داده‌ها یا کدها در اون قرار دارن. اگه از یه پایپ‌لاین‌ خودکار و به‌طور مرتب به‌روزرسانی‌شونده استفاده می‌کنی، بهتره ثبت این گزارش‌ها رو به بخشی خودکار از فرایند پاکسازی داده تبدیل کنی. این کار بهت کمک می‌کنه وضعیت فرایند رو به‌راحتی بررسی کنی و مطمئن بشی همه‌چیز به‌درستی در حال اجراست.

توابع با قابلیت استفاده مجدد بنویس

سعی کن کارهای تکراری پاکسازی داده رو به توابع جداگانه تبدیل کنی. به این ترتیب، هر زمان که با دیتاست جدیدی روبه‌رو شدی، می‌تونی همون توابع رو دوباره به کار بگیری و نیازی به تکرار کدها نداشته باشی. این موضوع به‌ویژه برای تبدیل مخفف‌ها و نام‌گذاری‌های اختصاصی شرکت به مقادیر استاندارد خیلی کاربردیه.

برای اینکه مطمئن بشی چیزی رو فراموش نکردی، می‌تونی از چک‌لیست پاکسازی داده فینکا هم کمک بگیری.

نتیجه‌گیری

پاکسازی داده‌ها فقط یه کار تکراری و خسته‌کننده نیست؛ بلکه مرحله‌ای حیاتیه که پایه و اساس هر پروژه موفق تحلیل داده و یادگیری ماشین رو تشکیل می‌ده. وقتی مطمئن می‌شی داده‌ها دقیق، سازگار و قابل‌اعتمادن، زمینه رو برای تصمیم‌گیری آگاهانه و استخراج بینش‌های ارزشمند فراهم می‌کنی.

داده‌های ناسالم می‌تونن به نتیجه‌گیری‌های نادرست و تحلیل‌های اشتباه منجر بشن؛ اشتباهاتی که ممکنه از یه دلخوری ساده بین دوستان تا تصمیم‌های پرهزینه در کسب‌وکار پیامد داشته باشن. زمانی که برای پاکسازی داده‌ها صرف می‌کنی، در بلندمدت ارزش خودش رو نشون می‌ده؛ چون باعث می‌شه تحلیل‌ها قابل‌اعتمادتر باشن و نتایج به‌دست اومده مبنای مناسبی برای اقدام و تصمیم‌گیری فراهم کنن.

برای یادگیری بیشتر و انجام تمرین‌های تعاملی، می‌تونی دوره پاکسازی داده فینکا رو بررسی کنی. همچنین اگه دنبال یه تمرین عملی هستی، آموزش کدنویسی گام‌به‌گام پاکسازی داده رو امتحان کن.

اشتراک‌گذاری
فهرست مطالب
  • مقدمه‌ای بر پاکسازی داده‌ها
  • درک داده‌های کثیف
  • کاوش و پیش‌پردازش داده‌ها
  • تکنیک‌های پاکسازی داده در پایتون
  • تغییر و مهندسی داده‌ها (مهندسی ویژگی)
  • پاکسازی داده‌ها در پایتون: بهترین روش‌ها و نکات
  • نتیجه‌گیری

دریافت اپلیکیشن فینکا

با اپلیکیشن فینکا، به بیشتر دوره‌ها و مسیرها روی موبایل دسترسی دارید، تمرین می‌کنید و یادگیری رو هم‌زمان روی موبایل و دسکتاپ ادامه می‌دید.