استیو لور از نیویورک تایمز می‌گوید: «دانشمندان داده، طبق مصاحبه‌ها و برآوردهای کارشناسان، 50 تا 80 درصد از زمان خود را در کار دنیوی جمع‌آوری و آماده‌سازی داده‌های دیجیتالی سرکش می‌گذرانند، قبل از اینکه بتوان آن‌ها را برای یافتن قطعات مفید کاوش کرد. ”

این بیانیه 100٪ دقیق است، زیرا شامل یک سری مراحل است که تضمین می کند داده های مورد استفاده برای پروژه های علم داده، یادگیری ماشین و تجزیه و تحلیل کامل، دقیق، بی طرفانه و قابل اعتماد هستند.

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

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

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

فهرست مطالب

  • پیش نیازها
  • معرفی
  • پاکسازی داده چیست؟
  • پردازش داده چیست؟
  • روش وارد کردن کتابخانه های مورد نیاز
  • روش بارگذاری مجموعه داده
  • تجزیه و تحلیل داده های اکتشافی (EDA)
  • چگونه ارزش های گمشده را مدیریت کنیم
  • روش حذف رکوردهای تکراری
  • انواع داده ها و تبدیل
  • روش کدگذاری متغیرهای طبقه بندی شده
  • روش برخورد با موارد دور از دسترس
  • نتیجه

پیش نیازها

  • درک اولیه پایتون
  • درک اولیه از پاکسازی داده ها.

معرفی

Pandas یک کتابخانه دستکاری و تجزیه و تحلیل داده های منبع باز محبوب برای پایتون است. این توابع با استفاده آسان را فراهم می کند که برای کار با داده های ساختاریافته یکپارچه لازم است.

پانداها همچنین به طور یکپارچه با سایر کتابخانه های محبوب پایتون مانند NumPy برای محاسبات عددی و Matplotlib برای تجسم داده ها ادغام می شوند. این آن را به یک دارایی قدرتمند برای وظایف مبتنی بر داده تبدیل می کند.

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

Pandas در هسته خود دو ساختار داده کلیدی را معرفی می کند: Series و DataFrame. آ Series یک شیء آرایه مانند یک بعدی است که می تواند هر نوع داده ای را در خود جای دهد، در حالی که a DataFrame یک جدول دو بعدی با محورهای برچسب دار (ردیف ها و ستون ها) است. این ساختارها به کاربران اجازه می دهد تا مجموعه داده ها را به طور موثر دستکاری، پاکسازی و تجزیه و تحلیل کنند.

پاکسازی داده چیست؟

قبل از اینکه سوار بشیم روی ماجراجویی داده ما با پانداها، اجازه دهید لحظه ای را به توضیح اصطلاح “پاکسازی داده ها” اختصاص دهیم. به آن به عنوان سم زدایی دیجیتال برای مجموعه داده خود فکر کنید، جایی که ما آن را مرتب می کنیم، و دقت را بیش از هر چیز در اولویت قرار می دهیم.

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

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

پیشنهاد می‌کنیم بخوانید:  کار با Datetime در پایتون با پیکان

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

پردازش داده چیست؟

ممکن است این سوال برای شما پیش بیاید که “آیا پاکسازی داده ها و پیش پردازش داده ها به همین معناست؟” پاسخ منفی است – آنها این کار را نمی کنند.

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

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

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

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

روش وارد کردن کتابخانه های مورد نیاز

قبل از اینکه سوار بشیم روی پاکسازی و پیش پردازش داده ها، اجازه دهید import را Pandas کتابخانه

برای صرفه جویی در زمان و تایپ کردن، ما اغلب import پانداها به عنوان pd. این به ما امکان می دهد از کوتاه تر استفاده کنیم pd.read_csv() بجای pandas.read_csv() برای خواندن فایل‌های CSV، کد ما را کارآمدتر و خواناتر می‌کند.

import pandas as pd

روش بارگذاری مجموعه داده

با بارگیری مجموعه داده خود در Pandas DataFrame شروع کنید.

در این مثال، از یک مجموعه داده فرضی به نام استفاده خواهیم کرد your_dataset.csv. مجموعه داده را در متغیری به نام بارگذاری می کنیم df.

#Replace 'your_dataset.csv' with the actual dataset name or file path
df = pd.read_csv('your_dataset.csv')

تجزیه و تحلیل داده های اکتشافی (EDA)

EDA به شما کمک می کند ساختار و ویژگی های مجموعه داده خود را درک کنید. برخی از توابع Pandas به ما کمک می کنند تا بینشی در مورد مجموعه داده خود داشته باشیم. ما این توابع را با فراخوانی متغیر مجموعه داده به اضافه تابع فراخوانی می کنیم.

مثلا:

  • df.head() 5 ردیف اول مجموعه داده را فراخوانی می کند. می توانید تعداد سطرهایی که در پرانتز نمایش داده شوند را مشخص کنید.
  • df.describe() برخی از داده های آماری مانند صدک، میانگین و انحراف استاندارد مقادیر عددی سری یا DataFrame را ارائه می دهد.
  • df.info() تعداد ستون‌ها، برچسب‌های ستون، انواع داده‌های ستون، میزان استفاده از حافظه، شاخص محدوده و تعداد سلول‌های هر ستون (مقادیر غیر تهی) را نشان می‌دهد.

در اینجا یک نمونه کد در زیر آمده است:

#Display the first few rows of the dataset
print(df.head())

#Summary statistics
print(df.describe())

#Information about the dataset
print(df.info())

چگونه ارزش های گمشده را مدیریت کنیم

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

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

یکی از راه های انجام این کار حذف مقادیر از دست رفته به طور کلی است. قطعه کد زیر:

#Check for missing values
print(df.isnull().sum())

#Drop rows with missing valiues and place it in a new variable "df_cleaned"
df_cleaned = df.dropna()

#Fill missing values with mean for numerical data and place it ina new variable called df_filled
df_filled = df.fillna(df.mean())

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

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

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

#Replace missing values with the mean of each column
df.fillna(df.mean(), inplace=True)

#If you want to replace missing values in a specific column, you can do it this way:
#Replace 'column_name' with the actual column name
df['column_name'].fillna(df['column_name'].mean(), inplace=True)

#Now, df contains no missing values, and NaNs have been replaced with column mean

روش حذف رکوردهای تکراری

رکوردهای تکراری می توانند تحلیل شما را با تأثیرگذاری بر نتایج به گونه ای که روندها و الگوهای زیربنایی را به طور دقیق نشان نمی دهند (با تولید مقادیر پرت) تحریف کنند.

Pandas به شناسایی و حذف مقادیر تکراری به روشی آسان با قرار دادن آنها در متغیرهای جدید کمک می کند.

قطعه کد زیر:

#Identify duplicates
print(df.duplicated().sum())

#Remove duplicates
df_no_duplicates = df.drop_duplicates()

انواع داده ها و تبدیل

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

داده‌های منابع مختلف معمولاً نامرتب هستند و انواع داده‌های برخی از مقادیر ممکن است در قالب اشتباه باشند، برای مثال برخی از مقادیر عددی ممکن است به‌جای قالب «integer» در قالب «float» یا «string» و ترکیبی از این قالب‌ها باشند. منجر به خطا و نتایج اشتباه می شود.

شما می توانید یک ستون از نوع را تبدیل کنید int به float با کد زیر:

#Convert 'Column1' to float
df['Column1'] = df['Column1'].astype(float)

#Display updated data types
print(df.dtypes)

شما می توانید استفاده کنید df.dtypes به print انواع داده های ستونی

روش کدگذاری متغیرهای طبقه بندی شده

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

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

پانداها فراهم می کند get_dummies تابعی که مقادیر مقوله‌ای را به فرمت عددی تبدیل می‌کند (قالب باینری) به طوری که توسط الگوریتم به‌عنوان مکان‌دار برای مقادیر شناسایی می‌شود و نه داده‌های سلسله مراتبی که می‌توانند تحت تحلیل عددی قرار گیرند. این فقط به این معنی است که اعدادی که نام برند به آنها تبدیل می‌شود به‌عنوان 1 بزرگ‌تر از 0 تفسیر نمی‌شود، اما به الگوریتم می‌گوید که هم 1 و هم 0 مکان‌هایی برای داده‌های دسته‌بندی هستند. قطعه کد در زیر نشان داده شده است:

#To convert categorical data from the column "Car_Brand" to numerical data
df_encode = pd.get_dummies(df, columns=[Car_Brand])

#The categorical data is converted to binary format of Numerical data

روش برخورد با موارد دور از دسترس

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

آنها ممکن است به دلیل خطای انسانی، از دست دادن مقادیر NaN، یا می توانند داده های دقیقی باشند که با بقیه داده ها مرتبط نیستند.

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

  • مقادیر NaN را حذف کنید.
  • داده ها را قبل و بعد از حذف تجسم کنید.
  • روش Z-score (برای داده های توزیع شده عادی).
  • روش IQR (محدوده بین ربعی) برای داده های قوی تر.

IQR برای شناسایی نقاط پرت در یک مجموعه داده مفید است. بر اساس روش IQR، مقادیری که زیر Q1-1.5× IQR یا بالاتر از Q3+1.5×IQR قرار می گیرند، مقادیر پرت در نظر گرفته می شوند.

این قانون مبتنی است روی این فرض که بیشتر داده ها در یک توزیع نرمال باید در این محدوده قرار گیرند.

در اینجا یک قطعه کد برای روش IQR آمده است:

#Using median calculations and IQR, outliers are identified and these data points should be removed
Q1 = df["column_name"].quantile(0.25)
Q3 = df["column_name"].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
df = df[df["column_name"].between(lower_bound, upper_bound)]

نتیجه

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

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