واحد 3 / 11

پاکسازی و پیش پردازش داده ها: مقدار از دست رفته، مقدار پرت و تبدیل نوع

سود:

  • توانایی تشخیص علت مقادیر از دست رفته (تصادفی، سیستماتیک، معنی دار) و انتخاب استراتژی مناسب و محاسبه ارزش تکمیلی تنها از تمرین
  • امکان بررسی موارد پرت قبل از حذف آنها و تمایز بین یک خطای داده و یک رویداد نادر واقعی
  • امکان جلوگیری از اتلاف بی صدا با نظارت بر تأثیر هر مرحله بر تعداد خطوط/جاهای خالی در حالی که تناقضات نوع و قالب را به استاندارد می رساند.

تقریباً 60 تا 80 درصد از زمان یک دانشمند داده صرف تمیز کردن می شود. در صنعت، این را به طور نیمه شوخی «مشاهده داده ها» (جدل داده یا پاکسازی داده ها) می نامند. از آنجا که داده های دنیای واقعی تقریباً هرگز برای تجزیه و تحلیل آماده نمی شوند: تاریخ ها در قالب های ترکیبی هستند، اعداد به عنوان متن ذخیره می شوند، برخی از سلول ها خالی هستند، مشتری سه بار در یک جدول با دو املای متفاوت ظاهر می شود. در این بخش ما سه جنبه اساسی پاکسازی را پوشش خواهیم داد: مقادیر از دست رفته، نقاط پرت، و تبدیل نوع/فرمت. هوش مصنوعی یک دستیار فوق العاده سریع در این کار است. اما این شما هستید که تصمیم می گیرید چه چیزی را و چگونه تمیز کنید، زیرا هر انتخاب تمیزکاری تحلیل را تغییر می دهد.

قانون طلایی نظافت: هر تغییری یک تصمیم است

حذف یک سلول، پر کردن یک مقدار از دست رفته با میانگین، برش یک نقطه پرت - هیچ یک از اینها عملیات "خنثی" نیستند. هر کدام داده ها را تغییر می دهد و بر نتیجه تأثیر می گذارد. بنابراین قانون طلایی پاکسازی: هر تغییری را در کد بنویسید، منطق را یادداشت کنید، هرگز داده های اصلی را بازنویسی نکنید. The AI ​​gives you quick cleanup code, but it is your responsibility to understand what that code does; وقتی می گویید "حذف خطوط خالی" آن را اجرا نکنید بدون اینکه ببینید چند خط از بین رفته است.

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

مقادیر از دست رفته: چرا خالی است، چه باید کرد

یک مقدار گم شده (معمولاً به صورت NaN - "عدد نیست" در پانداها ظاهر می شود) زمانی است که یک سلول خالی است. But the cause of the gap determines the solution. سه حالت معمولی وجود دارد. تصادفی از دست رفته: سنسور برای یک لحظه کار نکرد. ممکن است منطقی باشد که آن را پر کنید. از دست رفته سیستماتیک: یک فیلد فرم فقط برای مشتریان خاصی درخواست می شود. شکاف در اینجا در واقع اطلاعات است. کمبود قابل توجه: اگر "تاریخ بازگشت" خالی باشد، مشتری مراجعه نکرده است. این فاصله به معنای 0 یا "هیچ" است، پر نشده است.

استراتژی های اصلی:

استراتژی

چه زمانی مناسب است؟

خطر

حذف ردیف

نرخ گم شدن بسیار کم (<5٪) و تصادفی است

از دست دادن داده ها و نمایش

یک ستون را حذف کنید

بیشتر ستون خالی است (بیش از 60%)

از دست دادن اطلاعات

پر کردن متوسط/میانگین

عددی، به طور تصادفی گم شده است

It reduces the variance and distorts the distribution

رده "ناشناخته"

مفقود طبقه بندی، سیستماتیک

دسته های اضافی را ایجاد می کند

پیش بینی با مدل

ستون پیچیده و گرانبها

خطر نشت، پیچیدگی

نقطه بحرانی: مقدار انتساب باید فقط از داده های آموزشی محاسبه شود و همان مقدار باید برای داده های آزمون اعمال شود. اگر میانگین داده های تست را در نظر بگیرید، نشت ایجاد می کنید (واحد 10). میانه (مقدار متوسط ​​داده‌های ترتیبی) اغلب به میانگین ترجیح داده می‌شود، زیرا نسبت به نقاط پرت از میانگین قوی‌تر است.

موارد پرت: خطا یا واقعی؟

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

روش‌های تشخیص متداول: روش IQR (محدوده بین چارکی؛ مقادیری که بیش از 1.5 برابر اختلاف بین پنجک‌های 25 و 75 درصد داده‌ها هستند، پرت در نظر گرفته می‌شوند) و z-score (تعداد انحرافات استاندارد به دور از میانگین یک مقدار است؛ معمولاً اگر بیشتر از 3 باشد، یک نقطه پرت است). هوش مصنوعی کد این محاسبات را در چند ثانیه می نویسد. اما قبل از گفتن "حذف"، بررسی کنید که این مقادیر چه هستند.

تبدیل نوع و قالب: منبع خطای خاموش

یکی از مهمترین سردردها سردرگمی نوع داده است. اگر ستون "مقدار" به عنوان متن ذخیره می شود، نمی توانید اضافه کنید. این برنامه به اشتباه یک عدد با فرمت ترکی مانند "1250.50" را به جای "هزار و دویست و پنجاه" می خواند. تاریخ ها ("01/03/2024" روز-ماه یا ماه-روز؟)، دسته ها ("مرد"/"مرد"/"M" یکسان هستند؟) و واحدها (TL یا kuruş؟) بی سر و صدا نتایج نادرستی ایجاد می کنند. بخش بزرگی از پاکسازی این است که این ناسازگاری ها را به استاندارد بکشانیم: تاریخ ها در یک قالب، دسته ها در یک املا، اعداد در یک واحد.

سه کیف کوچک

مورد 1 - تله متوسط. یک تیم 320 مقدار گمشده در ستون درآمد را با میانگین (48500 دلار) پر کردند. اما کاستی‌ها سیستماتیک بودند: اینها قشر کم درآمدی بودند که هرگز درآمد خود را اعلام نکرده بودند. پر کردن متوسط ​​این گروه را به طور مصنوعی ثروتمند کرد و مدل اعتباری اشتباه بود. درس: قبل از پر کردن آن بپرسید «چرا خالی است».

مورد 2 - پرت که نباید حذف شود. یک تحلیلگر خرده فروشی 4 سفارش بزرگ (هر کدام 1.8 میلیون لیر لیر) را در داده های فروش حذف کرد، زیرا فکر می کرد که آنها "خطا" هستند. با این حال، این سفارشات شرکتی واقعی بودند و 22 درصد از کل گردش مالی بودند. مدل پیش‌بینی پس از حذف به طور کامل تقاضای سازمانی را از دست داد. درس: قبل از حذف آن، موارد پرت را بررسی کنید.

مورد 3 - فاجعه قالب تاریخ. در یک CSV، تاریخ‌ها در هر دو «01-03-2024» و «01.03.2024» ترکیب شدند. هنگامی که کد نوشته شده توسط YZ طبق فرمت اول تجزیه شد، 6400 خط به عنوان "تاریخ نامعتبر" تبدیل به NaT شد و بی‌صدا از تجزیه و تحلیل حذف شدند. تحلیلگر تنها زمانی متوجه این موضوع شد که تعداد خطوط کاهش یافت. درس: همیشه تعداد خطوط و جاهای خالی را بعد از تبدیل بررسی کنید.

چهار قالب قابل کپی

1) Missing value map:

من پاندا df دارم. کدی بنویسید که جدولی را برای هر ستون نشان دهد که تعداد و درصد کمبود (NaN) را نشان می دهد. سپس، ستون‌هایی را که نرخ گمشده آنها بیش از 40 درصد و آنهایی که درصد گمشده آنها کمتر از 5 درصد است را به طور جداگانه فهرست کنید. فقط این کد تشخیص را ایجاد کنید، نه استراتژی که پیشنهاد می کنید. من تصمیم خواهم گرفت.

2) بازرسی پرت (نه حذف):

با استفاده از روش IQR، کدی را بنویسید که برای ستون "مقدار" من، نقاط پرت را تشخیص دهد (نه حذف کند!). ردیف های بیرونی را در یک df جداگانه قرار دهید تا بتوانم آنها را به صورت دستی بررسی کنم. همچنین تعداد پرت ها و سهم آنها در کل را چاپ کنید.

3) استانداردسازی نوع/فرمت:

کدی بنویسید که ستون های زیر را استاندارد کند: - "تاریخ": می تواند با فرمت های ترکیبی ("2024-03-01" و "01.03.2024")؛ همه آنها را به تاریخ تبدیل کنید، موارد غیر قابل ترجمه را بشمارید و گزارش دهید (بی صدا دور بریزید). - "جنس": "مذکر"/"مرد"/"م" -> "م"، "مونث"/"مونث"/"F" -> "ک". - "مقدار": متن فرمت شده ترکی ("1.250،50") -> عدد اعشاری. چاپ کنید که چند ردیف بعد از هر تبدیل تحت تأثیر قرار می گیرند.

4) قبل / بعد از تمیز کردن بررسی کنید:

کدی بنویسید که df.shape، تعداد از دست رفته و آمار خلاصه (میانگین، میانه، حداقل، حداکثر) ستون های انتخابی را قبل و بعد از مرحله پاکسازی مقایسه می کند. هدف: ببینید تمیز کردن چه تغییری می کند.

اعلان ضعیف / اعلان قوی

اعلان ضعیف:

این داده ها را پاک کنید.

«روشن» مبهم است. هوش مصنوعی نمی‌داند چه قسمت‌هایی را که از دست رفته باید حذف شود، چه چیزی را پر کند، کدام ستون را پردازش کند و چگونه. نتیجه: تغییرات کور و برگشت ناپذیر.

اعلان قدرتمند:

نقش شما: دستیار پاکسازی داده ها. ستون‌های df: customer_id (int)، register_date (متن با فرمت ترکیبی)، gain_tl (متن، "1200.00")، شهر (متن، املای متناقض). قوانین: - تغییر df اصلی. روی کپی به نام df_clean کار کنید.- درآمد_tl را به عدد تبدیل کنید، آنچه را که قابل ترجمه نیست بشمارید.- record_date را به datetime تغییر دهید، خطا را گزارش کنید.- هیچ ردیفی را بدون تایید من حذف نکنید. نامزدها را جداگانه نشان دهید. بعد از هر مرحله df_temiz.shape و عدد از دست رفته را چاپ کنید.

در اینجا منبع محافظت می شود، هر دگرگونی به حساب می آید، حذف به انسان واگذار می شود.

اشتباهات رایج

  • پر کردن جاهای خالی بدون پرسیدن "چرا خالی است؟" پر کردن فقدان سیستماتیک/قابل توجه با میانگین داده ها را تحریف می کند.
  • حذف نقطه پرت بدون بررسی آن. دور انداختن رویدادهای واقعی اما نادر اطلاعات مهم را از بین می برد.
  • محاسبه مقدار padding از روی همه داده ها. گنجاندن داده های آزمایشی باعث ایجاد نشت می شود. فقط از روی آموزش حساب کنید
  • عدم بررسی تعداد سطرها/جاهای خالی پس از تبدیل. ردیف هایی که به صورت بی صدا NaT/NaN هستند از تجزیه و تحلیل حذف می شوند.
  • بازنویسی داده های اصلی بازگشت و تکرارپذیری از بین رفته است.
نکته: پاکسازی را با مقایسه «قبل و بعد» اجرا کنید. df.shape، تعداد از دست رفته، و خلاصه آمار ستون های بحرانی را بعد از هر مرحله چاپ کنید. بنابراین بلافاصله می بینید که یک مرحله به طور غیرمنتظره 6000 ردیف را از بین می برد.

به طور خلاصه

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

وظیفه کاربردی

یک جدول کوچک بگیرید (یا ایجاد کنید) و سه مشکل را عمداً در آن وارد کنید: یک مقدار از دست رفته، یک عدد پرت، یک قالب تاریخ مخلوط. درخواست کد تشخیص و استانداردسازی از هوش مصنوعی با الگوهای فوق. تعداد سطرها و جاهای خالی قبل/بعد از هر مرحله را مقایسه کنید. سعی کنید حداقل یک "از دست دادن خاموش" را بگیرید و توجه داشته باشید که چگونه متوجه آن شده اید.

چک لیست

  • [ ] آیا داده های خام اصلی را نگه داشتم و روی کپی کار کردم؟
  • [ ] آیا برای هر ستون گمشده سوال "چرا خالی است" پرسیده ام؟
  • [ ] آیا من موارد پرت را قبل از حذف آنها بررسی کردم؟
  • [ ] آیا مقدار padding را فقط از روی داده های آموزشی محاسبه کردم؟
  • [ ] آیا من تعداد خطوط/جاهای خالی را بعد از هر مرحله بررسی می کنم و از دست دادن خاموش را حذف می کنم؟