با Seaborn 0.11 و ویژگی های جدید آن آشنا شوید
Seaborn یک کتابخانه مصورسازی داده در پایتون است و در Matplotlib ساخته میشود. این کتابخانه سطح بالا روند ترسیم نمودارهای آماری را تسهیل میکند.
مدتی قبل نسخه جدید (0.11.0) کتابخانه Seaborn منتشر شد. در این نسخه ویژگیهای جدیدی به کتابخانه افزوده شده و ویژگیهای قبلی نیز ارتقا پیدا کردهاند. در این مطلب، اکثر تغییراتی که در این کتابخانه انجام شده را با ارائه نمونه تصویری توضیح میدهیم.
نسخه جدید Seaborn شامل سه تابع جدید displot، histplot و ecdfplot است. کاربران با استفاده از این سه تابع میتوانند توزیعهای یک متغیره و دو متغیره داده را رسم کنند.
نکته: برای استفاده از توابع جدید ابتدا باید Seaborn را با استفاده از کد زیر بهروز رسانی کنید.
pip install seaborn==0.11.0
تابع displot را میتوان کلاس والد Parent class دو تابع دیگر به حساب آورد. تابع displot با استفاده از پارامتر kind امکان دسترسی به histplot، ecdfplot و kdeplot را فراهم میکند. بنابراین تابع displot رابطی نموداری Figure-level interface برای انواع گوناگون نمودارهای توزیعی Distribution plots است.
به مثال مقابل توجه کنید.
sns.displot(data=diabetes, x='Glucose', kind='hist', height=6, aspect=1.2)
با استفاده از کد فوق هیستوگرامی رسم کردیم که توزیع یک متغیره، متغیر گلوکز را نشان میدهد.
با استفاده از کد مقابل میتوانیم هیستوگرامی برای نشان دادن توزیع دو متغیره، متغیرهای گلوکز و فشار خون رسم کنیم.
sns.displot(data=diabetes, x='Glucose', y='BloodPressure',kind='hist', height=6, aspect=1.2)
هرچه نقطهدادههای موجود در یک ناحیه بیشتر باشد، آن بخش تیرهتر خواهد بود.
displot یک تابع تصویری است، اما histplot یک تابع محوری Axes-level است. نمودار فوق را میتوانیم با استفاده از تابع histplot رسم کنیم.
sns.histplot(data=diabetes, x='Glucose', y='BloodPressure')
برای کسب اطلاعات بیشتر راجع به مفاهیم نمودار Figure و محور Axes در Matplotlib به این آدرس بروید: https://towardsdatascience.com/understanding-the-structure-of-matplotlib-23b97f507fac. در این مقاله ساختار Matplotlib به طور کامل توضیح داده شده است.
Displot نمودارها را در FacetGrid رسم میکند، به همین دلیل میتوانیم چندین ترسیم مختلف از یک نمودار داشته باشیم.
sns.displot(data=churn, x='CreditScore', kind='hist',col='Geography', hue='Exited')
تابع ecdfplot ( توابع توزیع جمعی تجربی Empirical Cumulative Distribution Functions ) میزان و تعداد مشاهدتی observations که از یک مقدار مشخص Unique value در دیتاست کمتر هستند را تعیین میکند. در این حالت، علاوه بر مرور کلی توزیع متغیرها، میتوانیم مشاهدات موجود در دادهها را به هسیتوگرام مقایسه کنیم. ( برای مثال گروهبندی Grouping )
sns.displot(data=churn, x='Age', kind='ecdf', col='Geography', hue='Exited')
تایع ecdfplot فقط میتواند توزیعهای یک متغیره را رسم کند.
در نسخه جدید کتابخانه Seaborn به ارزش و اهمیت تابع displot کمتر توجه شده است. البته این بیتوجهی به دور از انتظار هم نبوده چرا که به نظر میرسد توابع جدید این کتابخانه میتوانند جایگزین بهتری برای تابع displot باشند.
در نسخه جدید کتابخانه Seaborn برخی از ویژگیهای قبلی اصلاح شدهاند و ارتقا یافتهاند.
کاربران با استفاده از تابع jointplot میتوانند نمودارهای یک متغیره و دو متغیره دو متغیر را رسم کنند. در نسخه جدید hue semantic به jointplot افزوده شده که موجب میشود اطلاعات آموزنده و مفید بیشتری در نمودار نشان داده شود.
sns.jointplot(data=diabetes, x='Insulin', y='BMI', hue='Outcome',height=7)
یکی دیگر از تغییراتی که در تابع jointplot ایجاد شده، افزودن گزینه “hist” به پارامتر kind است. مقدار پیشفرضِ پارامتر «kind «scatter است و چنانچه آن را به “hist” تغییر دهیم، هیستوگرامهای دو متغیره بر روی محورهای مشترک Joint axes و هیستوگرامهای تک متغیره بر روی محورهای حاشیه Marginal axes ایجاد میشوند.
sns.jointplot(data=diabetes, x='Insulin', y='BMI', hue='Outcome',kind='hist', height=7)
نکاتی راجع به API
- نام تابع set به set_theme تغییر کرده است. کاربران با استفاده از این تابع میتوانند برخی ویژگیهای تم در نمودارها را تنظیم کنند.
- تابع axlabel در نسخه جدید در دسترس نیست. به همین دلیل میتوانید از ax.set(xlabel=, ylabel=) استفاده کنید.
در این مقاله تعدادی از تغییرات صورت گرفته در نسخه جدید کتابخانه Seaborn را بررسی کردیم، در صورت تمایل به بررسی تمامی تغییرات میتوانید سند Seaborn را مطالعه کنید.