آموزش

هیت‌مپ‌های Seaborn: راهنمای مصورسازی داده

اینجا یاد می‌گیری چطور هیت‌مپ‌های زیبایی رو با Seaborn خلق کنی.

تاریخ انتشار:
15 شهریور 1405
پایتون
9 دقیقه
مصورسازی داده
کاربرهای فینکا در چه شرکت‌هایی مشغول به کار هستند؟

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

کتابخونه Seaborn این امکان رو بهت می‌ده که به‌راحتی نمودارهای کاملاً سفارشی‌شده از داده‌هات بسازی؛ مثل نمودارهای خطی، هیستوگرام‌ها و هیت‌مپ‌ها. برای اطلاعات بیشتر می‌تونی آموزش ما در مورد انواع مختلف نمودارهای داده و نحوه ساختشون در پایتون رو هم بخونی.

در این آموزش، بررسی می‌کنیم که هیت‌مپ‌های Seaborn دقیقاً چی هستن، کِی باید ازشون استفاده کرد و چطور می‌تونی اون‌ها رو بسازی و سفارشی کنی تا دقیقاً همون چیزی بشن که نیاز داری.

درک هیت‌مپ‌ها

هیت‌مپ‌ها چی هستن؟

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

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

در ادامه یه مثال از هیت‌مپ Seaborn رو می‌بینی:

کِی باید از هیت‌مپ‌ها استفاده کرد؟

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

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

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

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

شروع به کار با هیت‌مپ‌های Seaborn

راه‌اندازی محیط کار

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

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

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

همچنین اگه دوست داری درباره کتابخونه‌هایی که در این آموزش استفاده کردیم بیشتر یاد بگیری، می‌تونی یه نگاه به این دوره‌ها بندازی:

آماده‌سازی داده‌ها

مطمئن شو داده‌هات در قالب یه ماتریس هستن و سطرها و ستون‌ها ابعاد مختلف (مثل دوره‌های زمانی، متغیرها، دسته‌ها) رو نشون می‌دن. هر سلول در این ماتریس باید شامل همون مقداری باشه که می‌خوای روی نمودار ببینیش.

پاک‌سازی داده‌ها

قبل از اینکه بری سراغ هیت‌مپ، باید دو کار مهم برای پاک‌سازی داده‌ها انجام بدی: مدیریت مقادیر از دست رفته و حذف داده‌های پرت.

برای مدیریت مقادیر از دست رفته، می‌تونی اون‌ها رو با یه معیار آماری (مثل میانگین یا میانه) پر کنی، درون‌یابی کنی، یا اگه اهمیتی ندارن کلاً حذفشون کنی. برای داده‌های پرت هم بسته به نوع تحلیلت، می‌تونی اون‌ها رو حذف کنی یا مقادیرشون رو تغییر بدی.

توی مجموعه داده وام‌های ما هیچ مقدار از دست رفته‌ای وجود نداشت، اما چند تا داده پرت پیدا کردیم که تصمیم گرفتیم حذفشون کنیم.

نرمال‌سازی یا مقیاس‌بندی داده‌ها

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

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

سینتکس و پارامترها

برای استفاده از seaborn.heatmap()، معمولاً باید یه ماتریس از داده‌ها رو بهش پاس بدی. بعدش می‌تونی با تغییر پارامترها، هیت‌مپت رو بسته به نیازی که داری سفارشی کنی.

  • data: همون مجموعه داده‌ایه که قراره مصورسازی بشه و باید به‌شکل ماتریس باشه.
  • cmap: نقشه رنگی هیت‌مپ رو مشخص می‌کنه. Seaborn از پالت‌های رنگی مختلفی مثل طرح‌های متوالی، واگرا و کیفی پشتیبانی می‌کنه.
  • annot: اگه روی True تنظیم بشه، مقدار هر سلول روی همون بخش از هیت‌مپ نوشته می‌شه.
  • fmt: وقتی annot برابر True باشه، fmt کد فرمت‌بندی رشته رو برای نمایش داده‌ها تعیین می‌کنه. مثلاً 'd' برای اعداد صحیح و '.2f' برای اعداد اعشاری با دو رقم اعشار استفاده می‌شه.
  • linewidths: عرض خطوطی که سلول‌ها رو از هم جدا می‌کنن تنظیم می‌کنه. هرچی این مقدار بزرگ‌تر باشه، فاصله بین سلول‌ها بیشتر می‌شه.
  • linecolor: رنگ خطوط جداکننده سلول‌ها رو مشخص می‌کنه (به شرطی که linewidths بیشتر از 0 باشه).
  • cbar: یه مقدار بولی (Boolean) که تعیین می‌کنه نوار رنگ رسم بشه یا نه. این نوار مرجعی برای نگاشت مقادیر به رنگ‌هاست.
  • vmin و vmax: این پارامترها محدوده داده‌هایی که قراره روی نقشه رنگی نشون داده بشن رو مشخص می‌کنن.
  • center: وقتی از طرح‌های رنگی واگرا استفاده می‌کنی، این پارامتر مقداری رو تعیین می‌کنه که نقشه رنگی حول اون متمرکز می‌شه.
  • square: اگه روی True تنظیم بشه، سلول‌های هیت‌مپ حتماً به‌شکل مربع رسم می‌شن.
  • xticklabels و yticklabels: برچسب‌هایی که روی محورهای x و y نمایش داده می‌شن رو کنترل می‌کنن.

ساخت اولین هیت‌مپ Seaborn

می‌خوایم یه هیت‌مپ بسازیم که ضریب همبستگی بین متغیرهای عددی داده‌هامون رو نشون بده. فعلاً هیت‌مپ رو ساده نگه می‌داریم و توی بخش بعدی بیشتر سفارشی‌سازیش می‌کنیم.

سفارشی‌سازی هیت‌مپ Seaborn

سفارشی‌سازی رنگ

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

کتابخونه‌های Seaborn و Matplotlib کلی نقشه رنگی آماده دارن. نقشه‌های رنگی مختلف (مثل Blues، coolwarm، viridis و غیره) رو امتحان کن تا اونی رو پیدا کنی که ساختار و الگوهای داده‌هات رو به‌بهترین شکل نشون می‌ده. برای داده‌هایی که ترتیب طبیعی از کم به زیاد دارن از نقشه‌های رنگی متوالی، برای داده‌هایی با یه نقطه میانی مهم از نقشه‌های رنگی واگرا، و برای داده‌های دسته‌ای از نقشه‌های رنگی کیفی استفاده کن.

البته تو فقط محدود به نقشه‌های رنگی پیش‌فرض Seaborn نیستی. می‌تونی با Matplotlib نقشه‌های رنگی خودت رو بسازی و تنظیمات بیشتری مثل میزان شفافیت رو هم مشخص کنی.

تنظیم vmin و vmax بهت اجازه می‌ده محدوده‌ای از داده‌ها که نقشه رنگی پوشش می‌ده رو کنترل کنی. این کار می‌تونه کنتراست رو بالا ببره و تمرکز رو بذاره روی محدوده‌های خاصی که مدنظرت هستن.

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

حالا می‌خوایم پالت رنگی هیت‌مپمون رو تنظیم کنیم و رنگ‌ها رو با تعیین مقادیر حداقل، حداکثر و مرکز تثبیت کنیم.

حاشیه‌نویسی داده‌ها

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

برای فعال کردن حاشیه‌نویسی، کافیه پارامتر annot رو روی True تنظیم کنی. این کار مقادیر داده رو مستقیماً توی هر سلول از هیت‌مپ نمایش می‌ده.

پارامتر fmt هم بهت اجازه می‌ده فرمت این متن‌ها رو تعیین کنی. مثلاً می‌تونی از 'd' برای اعداد صحیح و '.2f' برای اعداد اعشاری با دو رقم اعشار استفاده کنی.

هرچند تابع هیت‌مپ Seaborn اجازه نمی‌ده ویژگی‌هایی مثل اندازه فونت رو مستقیماً از طریق پارامتر annot تغییر بدی، اما می‌تونی این تنظیمات رو به‌صورت سراسری با استفاده از rcParams در Matplotlib اعمال کنی.

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

ماسک کردن داده‌ها

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

اول باید یه ماسک بولین بسازی که دقیقاً هم‌شکل ماتریس داده‌هات باشه. این ماسک برای نقاطی که می‌خوای پنهان بشن باید True (یا برای نمایش داده شدن False) باشه. از اونجایی که ماتریس همبستگی متقارنه، می‌تونیم از تابع triu توی numpy استفاده کنیم تا یه ماسک مثلثی بسازیم که فقط بخش بالایی هیت‌مپمون رو بپوشونه.

حالا می‌تونی از پارامتر mask توی تابع seaborn.heatmap() استفاده کنی تا ماسکت اعمال بشه. نقاطی از داده که توی ماسک معادل True هستن، دیگه نشون داده نمی‌شن.

بهترین روش‌ها و اشتباهات رایج

رعایت این نکات بهت کمک می‌کنه تا با هیت‌مپ‌های Seaborn، مصورسازی‌های خیلی جذابی برای گزارش‌ها و ارائه‌هات بسازی.

در ادامه پنج تا از بهترین روش‌ها برای استفاده از هیت‌مپ‌های Seaborn رو بررسی می‌کنیم:

۱. پالت رنگی مناسب رو انتخاب کن

پالت رنگی که انتخاب می‌کنی مستقیماً روی نحوه درک داده‌هات تأثیر می‌ذاره. طرح‌های رنگی مختلف می‌تونن الگوهای موجود در داده‌هات رو برجسته یا حتی پنهان کنن.

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

۲. مقادیر از دست رفته رو با دقت مدیریت کن

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

۳. داده‌هات رو به‌درستی مقیاس‌بندی کن

داده‌هایی که واریانس‌های خیلی بزرگ یا مقادیر پرت دارن می‌تونن نمودار رو خراب کنن و تشخیص الگوها رو سخت کنن. داده‌هات رو نرمال‌سازی یا مقیاس‌بندی کن تا مطمئن بشی هیت‌مپت دقیقاً تفاوت‌های مجموعه داده رو نشون می‌ده. بسته به نوع داده‌هات، تکنیک‌هایی مثل مقیاس‌بندی min-max، نرمال‌سازی Z-score یا حتی تبدیلات لگاریتمی می‌تونن خیلی به دردت بخورن.

۴. از حاشیه‌نویسی‌ها به‌جا استفاده کن

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

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

۵. ابعاد هیت‌مپ رو تنظیم کن

نسبت ابعاد و اندازه پیش‌فرض ممکنه همیشه برای مجموعه داده‌ات مناسب نباشه و باعث بشه سلول‌ها فشرده بشن یا نمودار اون‌قدر شلوغ بشه که الگوها به چشم نیان.

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

نتیجه‌گیری

تابع هیت‌مپ در Seaborn بهت اجازه می‌ده مصورسازی‌های جذابی از الگوهای داده بسازی و به‌خصوص برای نشون دادن همبستگی بین متغیرهای عددی خیلی کاربردیه.

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

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

اشتراک‌گذاری
فهرست مطالب
  • درک هیت‌مپ‌ها
  • شروع به کار با هیت‌مپ‌های Seaborn
  • ساخت اولین هیت‌مپ Seaborn
  • سفارشی‌سازی هیت‌مپ Seaborn
  • بهترین روش‌ها و اشتباهات رایج
  • نتیجه‌گیری

سوالات متداول

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

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

دریافت اپلیکیشن فینکا

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