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

استخراج و خواندن داده‌ها با پانداس

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

برای این منظور از تابع ()read_csv که مخصوص وارد نمودن فایل‌های csv است استفاده می‌کنیم.

مثال:

import pandas as pd
health_data = pd.read_csv("data.csv", header=0, sep=",")
print(health_data)

توضیح مثال:

  • ابتدا کتابخانه پانداس را وارد می‌کنیم
  • در مرحله دوم، یک نام مناسب برای دیتافریم خود انتخاب می‌کنیم. در اینجا health_data را ترجیح دادیم
  • پارامتر header=0 به این معنی است که اسامی متغیرها باید در سط اول ظاهر شوند (دقت نمائید که 0 در پایتون به معنی سطر اول است)
  • پارامتر sep=”,” به این معنی است که “,” بعنوان جداساز بین مقادیر در نظر گرفته می‌شود. در واقع علت این است که در حال استفاده از یک فایل با پسوند csv هستیم (csv از comma separated values بدست می‌آید، یعنی مقادیری که توسط کاما از هم جدا می‌شوند)
  • در خط آخر داده‌های خود را با استفاده از تابع ()print چاپ می‌نمائیم

نکته: اگر شما یک فایل csv بسیار حجیم دارید، می‌توانید از تابع ()head به این منظور که تنها 5 سطر اول دیتاست شما را نشان دهد، استفاده نمائید.

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

import pandas as pd
health_data = pd.read_csv("data.csv", header=0, sep=",")
print(health_data.head())

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

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

  • فیلدهای خالی در دیتاست وجود دارند
  • میانگین ضربان 000 9 غیرممکن است، در واقع این مقدار نادرست می‌باشد (در مرحله‌ای از جمع‌آوری یا وارد نمودن داده‌ها دچار خطا شده‌ایم که کاملن طبیعی است)
  • 000 9 بدلیل فاصله بین 9 و 000 باید به عنوان یک مقدار غیر-عددی در نظر گرفته شود
  • یکی از مشاهدات در ستون max_pulse بصورت “AF” نشان داده شده است که معنی ندارد

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

پاک کردن ردیف‌های خالی

می‌بینیم که مقادیر غیر عددی (000 9 و “AF”) در سطرهای مشابه که در آن سطرها مقادیر گمشده وجود دارند (missing values) قرار دارند. از NaN پی به وجود مقادیر گمشده می‌بریم. عبارت اخیر از جمله‌ی Not a Number بدست آمده است، یعنی در آن مکان عددی وارد نشده و یا وجود ندارد.

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

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

می‌توانیم از تابع ()dropna به منظور پاک کردن مقادیر NaN استفاده کنیم.

مثال:

health_data.dropna(axis=0,inplace=True)
print(health_data)

نتیجه‌ی اجرای کد فوق به شکل زیر خواهد بود:

انواع داده

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

  1. عددی (Numerical)- شامل مقادیر عددی هستند. این مقادیر نیز خود به دو دسته تقسیم می‌گردند:
    1. گسسته (Discrete): اعداد کامل، بعنوان مثال ما 2.5 جلسه‌ی تمرینی نخواهیم داشت. تعداد جلسه‌های تمرینی یا 2 است و یا 3 و یا هر عدد دیگر
    1. پیوسته (Continuous): اعداد با دقت بی‌نهایت. بعنوان مثال بین دو عدد 0 و 1 بی‌نهایت عدد دیگر وجود دارند. بعنوان مثال شما می‌توانید 7 ساعت و 30 دقیقه و 20 ثانیه یا معادل 7.533  ساعت بخوابید
  2. رسته‌ای (Categorical)- شامل مقادیری است که قابل اندازه‌گیری در مقابل یکدیگر نمی‌باشند. بعنوان مثال یک رنگ و یا یک نوع تمرین خاص.

ترتیبی (Ordinal)- شامل داده‌های رسته‌ای است که می‌توانند بنوعی در مقابل سایر مقادیر همین دسته اندازه‌گیری شوند. بعنوان مثال، نمرات دانشگاهی که رده‌ی A از رده‌ی B بهتر است و الی آخر.

تشخیص نوع داده

می‌توانیم از تابع ()info به منظور یافتن نوع داده در دیتاست خود استفاده نمائیم.

مثال:

print(health_data.info())

نتیجه اجرای کد فوق به ترتیب ذیل است:

مشاهده می‌کنیم که این دیتاست دارای دو نوع دیتای مختلف است:

  • عدد اعشاری یا float64
  • شی یا object

ما نمی‌توانیم از اشیاء (objects) برای آنالیز استفاده نمائیم. پس باید ابتدا نوع object را به float64 تبدیل کنیم (دقت کنید که float64 یک عدد اعشاری در پایتون است که تا 64 بیت دقت را می‌تواند در بر داشته باشد).

مثال:

health_data["Average_Pulse"] = health_data['Average_Pulse'].astype(float)
health_data["Max_Pulse"] = health_data["Max_Pulse"].astype(float)
print (health_data.info())

نتیجه‌ی اجرای کد فوق برابر است با:

حال دیتاست ما تنها دارای داده‌هایی از نوع float64 است.

آنالیز داده‌ها

تاکنون داده‌های خود را تمیز کردیم و در این مرحله می‌توانیم فرایند آنایز را آغاز نمائیم. می‌توانیم از تابع ()describe به منظور یافتن و بررسی یک شرح کلی آماری از دیتاست خود استفاده نمائیم.

مثال:

print(health_data.describe())

نتیجه‌ی اجرای کد فوق برابر است با:

  • count– تعداد کل مشاهدات را نتیجه می‌دهد
  • Mean– میانگین مقادیر هر ستون یا متغیر را می‌دهد
  • Std– انحراف معیار هر ستون را نشان می‌دهد (مفهوم انحراف میانگین را در ادامه تعریف خواهیم نمود)
  • Min– کمترین مقدار هر متغیر را باز می‌گرداند.
  • 25%, 50%, 75%– صدک‌های هر متغیر یا ستون هستند
  • Max– بیشترین مقدار هر ستون را می‌دهد