Filter by دسته‌ها
آموزش هوش مصنوعی و انواع آن
آموزش‌های پایه‌ای هوش مصنوعی
اصول هوش مصنوعی
پایتون و ابزارهای یادگیری عمیق
کتابخانه‌ های یادگیری عمیق
یادگیری با نظارت
یادگیری بدون نظارت
یادگیری تقویتی
یادگیری عمیق
یادگیری نیمه نظارتی
آموزش‌های پیشرفته هوش مصنوعی
بینایی ماشین
پردازش زبان طبیعی
پردازش گفتار
چالش‌های عملیاتی
داده کاوی و بیگ دیتا
رایانش ابری و HPC
سیستم‌‌های امبدد
علوم شناختی
دیتاست
اخبار
رسانه‌ها
آموزش پردازش زبان طبیعی
آموزش علوم داده
اینفوگرافیک
پادکست
ویدیو
رویدادها
کاربردهای هوش مصنوعی
کسب‌و‌کار
تحلیل بازارهای هوش مصنوعی
کارآفرینی
هوش مصنوعی در ایران
هوش مصنوعی در جهان
 مقایسه پکیج‌های EDA دیتافریم: Pandas Profiling ،Sweetviz و PandasGUI

مقایسه پکیج‌های EDA دیتافریم: Pandas Profiling ،Sweetviz و PandasGUI

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

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

دیتاست mpg مقابل را در نظر بگیرد.

import pandas as pd
import seaborn as sns
mpg = sns.load_dataset('mpg')
mpg.head()

EDA

داده‌های فوق ظاهراً ساده هستند اما تحلیل آن‌ها زمان زیادی می‌برد.

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

در این مقاله تصمیم دارم پکیج‌های EDA را با یکدیگر مقایسه کنم و ببینم هر کدام برای چه کاری مناسب هستند.

در ادامه به معرفی این پکیج‌ها خواهیم پرداخت و اصلی‌ترین ویژگی‌های هر کدام را با یکدیگر بررسی می‌کنیم.

Pandas Profiling

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

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

#Installing via pip
pip install -U pandas-profiling[notebook]

#Enable the widget extension in Jupyter
jupyter nbextension enable --py widgetsnbextension

#or if you prefer via Conda
conda env create -n pandas-profiling
conda activate pandas-profiling
conda install -c conda-forge pandas-profiling

#if you prefer installing directly from the source
pip install https://github.com/pandas-profiling/pandas-profiling/archive/master.zip

#in any case, if the code raise an error, it probably need permission from user. To do that, add --user in the end of the line.

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

from pandas_profiling import ProfileReport

profile = ProfileReport(mpg, title='MPG Pandas Profiling Report', explorative = True)

profile

EDA

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

EDA

Pandas Profiling از 6 بخش Overview (مرور کلی)،  Variables (متغیرها)، Interactions (تعاملات)، Correlations (همبستگی‌ها)، Missing values (مقادیر گمشده) و Sample (نمونه) تشکیل شده است.

کامل‌ترین بخش Pandas Profiling بخش متغیر (Variable) است، چرا که گزارش جامعی از هر کدام از متغیرها ایجاد می‌کند.

EDA

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

با استفاده از Pandas Profiling می‌توانیم اطلاعات دیگری راجع به دیتاست به دست آوریم. نمونه‌ای از این اطلاعات، Interaction است.

EDA

در بخش Interaction می‌توان نمودار پراکنش میان دو متغیر عددی را ترسیم کرد.

بخش بعدی Correlation است. در این بخش می‌توانیم اطلاعات مربوط به همبستگی میان دو متغیر را به دست آوریم. در حال حاضر Pandas Profiling فقط چهار نمونه تحلیل همبستگی دارد.

EDA

بخش بعدی Missing Values است. در این بخش می‌توانید اطلاعات مربوط به تعداد مقادیر گمشده هر یک از متغیرها را به دست آورید.

EDA

آخرین بخش Sample نام دارد. این بخش فقط ردیف‌های نمونه‌ دیتاست را به ما نشان می‌دهد.

EDA

اطلاعات مربوط به ردیف‌های نمونه ممکن است ساده به نظر برسند اما اطلاعات مهمی در اختیار ما می‌گذارند.

به عقیده من، نقاط قوت Pandas Profiling عبارتند از:

  • ایجاد سریع گزارش
  • اطلاعات دقیق مربوط به هر یک از متغیرها

و نقاط ضعف آن عبارتند از:

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

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

Sweetviz

Sweetviz یکی دیگر از پکیج‌های متن‌باز پایتون است؛ با استفاده از این ابزار و تنها با یک خط کد می‌توان گزارش EDA مناسبی ایجاد کرد. تفاوت این پکیج با Pandas Profiling در این است که خروجی Sweetviz به طور ذاتی حاوی یک برنامه مبتنی بر HTML کاملاً است.

در مرحله اول باید این پکیج را نصب کنیم:

#Installing the sweetviz package via pip

pip install sweetviz

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

import sweetviz as sv

#You could specify which variable in your dataset is the target for your model creation. We can specify it using the target_feat parameter.

my_report = sv.analyze(mpg, target_feat ='mpg')
my_report.show_html()

EDA

همان‌گونه که در تصویر فوق مشاهده می‌کنید، گزارشی که Sweetviz ایجاد کرده مشابه گزارش ایجادشده توسط Pandas Profiling است، اما تفاوتی که این دو گزارش دارند در این است که گزارش Sweetviz با یک UI متفاوت ایجاد شده است. در gif مقابل می‌توانید گزارش  ایجادشده توسط Sweetviz را مشاهده کنید.

EDA

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

اگر به خاطر داشته باشید، قبلاً در کد ویژگی هدف را “mpg” تعیین کردیم. یکی از مزایای Sweetviz همین است که می‌توانیم اطلاعات دقیق‌تری درباره ویژگی هدف به دست آوریم. برای مثال، متغیر Displacement را در نظر بگیرید و به گزارش مفصلی که در سمت راست قرار گرفته است، نگاه کنید.

EDA

در تصویر بالا رابطه میان ویژگی هدف (‘mpg’) و متغیر displacment نشان داده شده است. نمودار میله‌ای نشان‌دهنده توزیع displacement  است و نمودار خطی میانگین ویژگی هدف است که به دنبال متغیر displacement قرار می‌گیرد. اگر بخواهیم روابط میان دو متغیر را بررسی کنیم، این گزارش می‌تواند کمک زیادی به ما بکند.

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

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

به دو روش می‌توانیم دیتاست‌ را مقایسه کنیم: در روش اول می‌توانیم دیتاست را تقسیم کنیم، برای مثال به دو دیتاست آموزشی و آزمایشی، در روش دوم می‌توانیم با استفاده از تعدادی فیلتر، زیرمجموعه‌ای برای جامعه آماری تعریف کنیم. در ادامه، روش تعریف زیرمجموعه برای داده‌ها (روش دوم) را امتحان می‌کنیم.

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

#Subsetting are happen by using the compare_intra. We input the condition in the parameter and the name as well.

my_report = sv.compare_intra(mpg, mpg["origin"] == "usa", ["USA", "NOT-USA"], target_feat ='mpg')

my_report.show_html()

EDA

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

بیایید این متغیر را با دقت بیشتری بررسی کنیم.

EDA

با توجه به gif بالا متوجه می‌شویم متغیرها به دو زیرمجموعه تقسیم شده‌اند و با دو رنگ متفاوت نشان داده شده‌اند ( آبی و نارنجی). حالا یک بار دیگر به سراغ متغیر displacement می‌رویم.

EDA

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

پیوندها چطور؟ با کلیک کردن بر روی گزینه association در نام دیتاست می‌توانیم به دقت پیوندها را بررسی کنیم.

EDA

EDA

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

به عقیده من، نقاط قوت Swetviz عبارتند از:

  • مصورسازی خوب
  • درک آسان اطلاعات آماری
  • امکان تحلیل دیتاست مقدار هدف
  • امکان مقایسه دو دیتاست

Sweetviz امکان مقایسه دیتاست و متغیر را برای کاربر فراهم می‌کند  و به همین دلیل به نظر من، ابزار پیشرفته‌تری نسبت به Profiling Pandas است. اما برخی از نقاط ضعف آن عبارتند از:

  • عدم رسم نمودارهای میان متغیرها، برای مثال نمودار پراکنش
  • گزارش در tab جداگانه‌ای باز می‌شود

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

PandaGUI

PandaGUI با پکیج‌هایی که پیش از این معرفی کردم، تفاوت دارد. در واقع PandaGUI به جای ایجاد و ارائه گزارش، یک دیتافریم GUI ( رابط کاربری گرافیکی) ایجاد می‌کند و با استفاده از آن می‌توانیم دیتافریم Pandas را با دقت بیشتری تحلیل کنیم.

برای شروع باید پکیج PandasGUI را نصب کنیم:

#Installing via pip

pip install pandasgui

#or if you prefer directly from the source

pip install git+https://github.com/adamerose/pandasgui.git

برای ایجاد دیتافریم GUI باید کد مقابل را اجرا کنیم:

from pandasgui import show

#Deploy the GUI of the mpg dataset
gui = show(mpg)

GUI باید به صورت مجزا به ما نشان داده شود.

EDA

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

و می‌توانید تَب (tab) را drag کنید تا متناسب با نیازهای‌تان باشد. به GIF مقابل نگاه کنید:

EDA

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

EDA

برای فیلتر کردن داده‌ها با استفاده از PandasGUI لازم است همزمان با این‌که آن را در دیتافریم Pandas می‌نویسم، آن را query کنیم.

به مثال فوق نگاه کنید: من query، model_year > 72 را نوشته‌ام. نتیجه آن یک query است که کادر مقابل آن تیک خورده است. اگر نمی‌خواهید داده‌ها را فیلتر کنید، فقط کافی است تیک مقابل کادر آن را بردارید.

اگر هنگام نوشتن query اشتباه کنید، چه؟ خیلی ساده است، فقط باید بر روی query دو بار کلیک کنید و مجدداً آن را بنویسید.

حالا تَب Statistics را بررسی می‌کنیم.

EDA

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

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

Tab بعدی Grapher یا ترسیم GUI است. به عقیده من نقطه قوت PandasGUI این tab است. به GIF مقابل نگاه کنید:

EDA

همان‌گونه که در GIF بالا مشاهده می‌کنید، برای رسم یک نمودار فقط باید متغیرهای مورد نیاز را drag و drop کنید. به دلیل این‌که منابع ترسیم نمودار به پکیج plotly وابسته هستند، برای پیدا کردن منودار باید مکان‌نما را به سمت نمودار ببریم.

و آخرین تَب، تب reshaper است. در این تب می‌توانیم با ایجاد یک pivot table جدید و یا melt کردن دیتاست، عملیات reshape را انجام دهیم.

همان‌گونه که در تصویر مقابل مشاهده می‌کنید، توابع pivot و melt منجر به ایجاد یک جدول جدید می‌شوند.

EDA

علاوه بر این می‌توانید داده‌هایی که فیلتر کردید را بارگذاری کنید و یا آن‌ها به یک فایل CSV تبدیل کنید. برای انجام این کار باید بر روی گزینه Import در بخش Edit کلیک کنید.

اگر می‌خواهید یک فایل CSV جدید به PandasGUI صادر کنید، باید بر روی گزینه Export کلیک کنید.

EDA

به عقیده من نقاط قوت PandasGUI عبارتند از:

  • امکان drag و drop
  • فیلتر آسان query
  • رسم سریع نمودار

 

و نقاط ضعف آن هم عبارتند از:

  • اطلاعات آماری کمی در اختیار ما می‌گذارد
  • هیچ گزارشی به صورت خودکار ایجاد نمی‌شود

 

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

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

نتیجه‌گیری

Pandas Profiling، Sweetviz و PandasGUI پکیج‌های فوق‌العاده‌ای هستند که با هدف تسهیل EDA توسعه داده شده‌اند. هر کدام از این پکیج‌های نقاط ضعف و قوتی دارند و در موقعیت‌های متفاوتی کاربرد دارند.  به عقیده من:

  • Pandas Profiling برای تحلیل سریع یک متغیر مناسب است،
  • Sweetviz برای مقایسه دیتاست و مقایسه آن با ویژگی هدف مناسب است،
  • PandasGUI برای تحلیل جامع و کامل با قابلیت drag و drop کردن به صورت دستی مناسب است.

میانگین امتیاز / 5. تعداد ارا :

مطالب پیشنهادی مرتبط

اشتراک در
اطلاع از
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
لطفاً برای تکمیل این فرم، جاوا اسکریپت را در مرورگر خود فعال کنید.