

خودکار کردن فرآیندهای پاکسازی داده ها با پانداها
تعداد کمی از پروژه های علم داده از ضرورت پاکسازی داده ها مستثنی هستند. پاکسازی داده ها شامل مراحل اولیه آماده سازی داده ها می شود. هدف خاص آن این است که فقط اطلاعات مرتبط و مفید زیربنای داده ها حفظ شود، چه برای تجزیه و تحلیل پسین آن، برای استفاده به عنوان ورودی برای یک مدل هوش مصنوعی یا یادگیری ماشین و غیره. یکسان سازی یا تبدیل انواع داده ها، برخورد با مقادیر از دست رفته، حذف مقادیر نویز ناشی از اندازه گیری های اشتباه، و حذف موارد تکراری نمونه هایی از فرآیندهای معمول در مرحله پاکسازی داده ها هستند.
همانطور که ممکن است فکر کنید، هرچه دادهها پیچیدهتر باشند، پاکسازی دادهها پیچیدهتر، خستهکنندهتر و زمانبرتر میشود، بهویژه هنگام پیادهسازی دستی آن.
این مقاله به بررسی عملکردهای ارائه شده توسط کتابخانه پانداها برای خودکار کردن فرآیند تمیز کردن داده ها می پردازد. ما برویم!
تمیز کردن داده ها با پانداها: عملکردهای رایج
خودکارسازی فرآیندهای پاکسازی داده ها با پانداها به سیستماتیک کردن کاربرد ترکیبی و متوالی چندین عملکرد پاکسازی داده برای کپسوله کردن توالی اقدامات در یک خط لوله پاکسازی داده خلاصه می شود. قبل از انجام این کار، اجازه دهید برخی از عملکردهای معمولی پانداها را برای مراحل مختلف پاکسازی داده ها معرفی کنیم. در ادامه، ما یک متغیر پایتون نمونه را فرض می کنیم df
که شامل یک مجموعه داده محصور شده در یک پاندا است DataFrame
شی
- پر کردن مقادیر از دست رفته: پانداها روشهایی را برای برخورد خودکار با مقادیر از دست رفته در یک مجموعه داده ارائه میکنند، چه با جایگزین کردن مقادیر از دست رفته با یک مقدار «پیشفرض» با استفاده از
df.fillna()
روش، یا با حذف هر ردیف یا ستون حاوی مقادیر گم شده از طریقdf.dropna()
روش - حذف نمونه های تکراری: حذف خودکار ورودیهای تکراری (ردیفها) در یک مجموعه داده نمیتواند آسانتر باشد
df.drop_duplicates()
روش، که اجازه می دهد تا زمانی که یک مقدار مشخصه خاص یا کل مقادیر نمونه در ورودی دیگری کپی می شود، موارد اضافی حذف شوند. - دستکاری رشته ها: برخی از توابع پاندا برای یکنواخت کردن قالب ویژگی های رشته مفید هستند. به عنوان مثال، اگر ترکیبی از مقادیر کوچک، جمله و بزرگ برای یک
'column'
ویژگی و ما می خواهیم همه آنها با حروف کوچک باشندdf['column'].str.lower()
روش کار را انجام می دهد برای حذف فضاهای سفید پیشرو و انتهایی که تصادفاً معرفی شده اند، این را امتحان کنیدdf['column'].str.strip()
روش - دستکاری تاریخ و زمان: را
pd.to_datetime(df['column'])
ستونهای رشتهای حاوی اطلاعات تاریخ-زمان، به عنوان مثال در قالب dd/mm/yyyy، را به اشیاء تاریخ پایتون تبدیل میکند و در نتیجه دستکاری بیشتر آنها را آسان میکند. - تغییر نام ستون: خودکار کردن فرآیند تغییر نام ستونها میتواند به ویژه زمانی مفید باشد که مجموعه دادههای متعددی وجود داشته باشد که بر اساس شهر، منطقه، پروژه و غیره تفکیک شدهاند، و ما میخواهیم پیشوندها یا پسوندهایی را به همه یا برخی از ستونها اضافه کنیم تا شناسایی آنها آسان شود. را
df.rename(columns={old_name: new_name})
روش این امکان را فراهم می کند.
قرار دادن همه اینها در کنار هم: خط لوله پاکسازی خودکار داده ها
زمان آن است که روش های مثال بالا را در یک خط لوله قابل استفاده مجدد قرار دهیم که به خودکارسازی بیشتر فرآیند پاکسازی داده ها در طول زمان کمک می کند. مجموعه داده کوچکی از تراکنشهای شخصی را با سه ستون در نظر بگیرید: نام شخص (نام)، تاریخ خرید (تاریخ)، و مبلغ خرج شده (ارزش):
این مجموعه داده در یک DataFrame pandas ذخیره شده است، df
.
برای ایجاد یک خط لوله پاکسازی داده ساده و در عین حال محصور شده، یک کلاس سفارشی به نام ایجاد می کنیم DataCleaner
، با یک سری روش های سفارشی برای هر یک از مراحل تمیز کردن داده های ذکر شده در بالا، به شرح زیر:
class DataCleaner: def __init__(self): پاس
کلاس DataCleaner: دف __ابتدا__(خود): عبور کند |
def fill_missing_values(self, df): return df.fillna(method=’ffill’).fillna(method=’bfill’)
دف fill_missing_values(خود، df): بازگشت df.فیلنا(روش=پر کردن).فیلنا(روش=“پر کردن”) |
توجه: را ffill
و bfill
مقادیر آرگومان در روش «fillna» دو نمونه از استراتژیها برای مقابله با مقادیر از دست رفته هستند. به طور خاص، ffill
یک “فلو به جلو” را اعمال می کند که مقادیر گمشده از مقدار سطر قبلی را نسبت می دهد. سپس یک “پر کردن به عقب” با اعمال می شود bfill
برای پر کردن مقادیر گمشده باقیمانده با استفاده از مقدار نمونه بعدی، در نتیجه اطمینان حاصل شود که هیچ مقدار از دست رفته باقی نخواهد ماند.
def drop_missing_values(self, df): return df.dropna()
دف drop_missing_values(خود، df): بازگشت df.dropna() |
def remove_duplicates(self, df): بازگشت df.drop_duplicate()
دف remove_duplicates(خود، df): بازگشت df.drop_dupliates() |
def clean_strings(self, df, column): df[column] = df[column].str.strip().str.lower() بازگشت df
دف رشته های پاک(خود، df، ستون): df[column] = df[column].خ.نوار().خ.پایین تر() بازگشت df |
def convert_to_datetime(self, df, column): df[column] = pd.to_datetime(df[column]) برگرداندن df
دف convert_to_datetime(خود، df، ستون): df[column] = پی دی.to_datetime(df[column]) بازگشت df |
def rename_columns(self, df, columns_dict): return df.rename(columns=columns_dict)
دف rename_columns(خود، df، ستون_دیکت): بازگشت df.تغییر نام دهید(ستون ها=ستون_دیکت) |
سپس روش “مرکزی” این کلاس می آید که تمام مراحل تمیز کردن را به یک خط لوله متصل می کند. به یاد داشته باشید که درست مانند هر فرآیند دستکاری داده ها، ترتیب اهمیت دارد: این شما هستید که منطقی ترین ترتیب را برای اعمال مراحل مختلف برای دستیابی به آنچه در داده های خود به دنبال آن هستید، تعیین کنید، بسته به مشکل خاصی که به آن پرداخته شده است.
def clean_data(self, df): df = self.fill_missing_values(df) df = self.drop_missing_values(df) df = self.remove_duplicates(df) df = self.clean_strings(df, ‘name’) df = self.datetime(_to convert) df، ‘تاریخ’) df = self.rename_columns(df, {‘name’: ‘full_name’}) بازگشت df
دف داده های پاک(خود، df): df = خود.fill_missing_values(df) df = خود.drop_missing_values(df) df = خود.remove_duplicates(df) df = خود.رشته های پاک(df، ‘نام’) df = خود.convert_to_datetime(df، “تاریخ”) df = خود.rename_columns(df، {‘نام’: “نام کامل”}) بازگشت df |
در نهایت، از کلاس جدید ایجاد شده برای اعمال کل فرآیند تمیز کردن در یک شات و نمایش نتیجه استفاده می کنیم.
پاک کننده = DataCleaner() cleaned_df = cleaner.clean_data(df) print(“\nCleaned DataFrame:”) print(cleaned_df)
تمیز کننده = DataCleaner() cleaned_df = تمیز کننده.داده های پاک(df) چاپ کنید(“\nDataFrame پاک شده:”) چاپ کنید(cleaned_df) |
و بس! ما نسخه بسیار زیباتر و یکنواختتری از دادههای اصلی خود را پس از اعمال برخی لمسها روی آن داریم.
این خط لوله محصور شده برای تسهیل و سادهسازی فرآیند کلی پاکسازی دادهها در هر دسته جدید دادهای که از این پس دریافت میکنید، طراحی شده است.