وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

0 64
زمان لازم برای مطالعه: 10 دقیقه


در مقاله قبلی Seaborn Library for Data Visualization in Python: Part 1، ما به چگونگی کتابخانه Seaborn برای ترسیم نمودارهای توزیعی و طبقه بندی استفاده می شود. در این مقاله ما به بحث خود ادامه خواهیم داد و برخی از قابلیت های دیگر ارائه شده توسط Seaborn برای ترسیم انواع مختلف طرح ها را مشاهده خواهیم کرد. ما بحث خود را با Matrix Plots آغاز خواهیم کرد.

توطئه های ماتریسی

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

نقشه های حرارتی

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

import pandas as pd
import numpy as np

import matplotlib.pyplot as plt
import seaborn as sns

dataset = sns.load_dataset('titanic')

dataset.head()

در خروجی، نتیجه زیر را مشاهده خواهید کرد:

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

از خروجی، می توانید ببینید که سرصفحه های ستون حاوی اطلاعات مفیدی مانند مسافران زنده مانده، سن آنها، کرایه و غیره است. با این حال سرصفحه های ردیف فقط حاوی شاخص های 0، 1، 2 و غیره هستند. برای ترسیم نمودارهای ماتریس، به اطلاعات مفیدی نیاز داریم. روی هر دو ستون و سرصفحه سطر. یکی از راه های انجام این کار این است که با آن تماس بگیرید corr() روش روی مجموعه داده را corr() تابع همبستگی بین تمام ستون های عددی مجموعه داده را برمی گرداند. اسکریپت زیر را اجرا کنید:

dataset.corr()

در خروجی مشاهده خواهید کرد که هم ستون ها و هم سطرها دارای اطلاعات هدر معنی دار هستند، همانطور که در زیر نشان داده شده است:

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

اکنون برای ایجاد یک نقشه حرارتی با این مقادیر همبستگی، باید آن را فراخوانی کنید heatmap() تابع و آن را به چارچوب داده همبستگی خود منتقل کنید. به اسکریپت زیر نگاه کنید:

corr = dataset.corr()
sns.heatmap(corr)

خروجی به شکل زیر است:

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

از خروجی، می توان دریافت که کاری که Heat Map اساسا انجام می دهد این است که یک کادر برای هر ترکیبی از مقادیر سطر و ستون ترسیم می کند. رنگ جعبه به گرادیان بستگی دارد. به عنوان مثال، در تصویر بالا اگر همبستگی بالایی بین دو ویژگی وجود داشته باشد، سلول یا کادر مربوطه سفید است، روی از طرف دیگر اگر همبستگی وجود نداشته باشد، سلول مربوطه سیاه می ماند.

مقادیر همبستگی را نیز می توان رسم کرد روی نقشه حرارتی با عبور True برای annot پارامتر. اسکریپت زیر را برای مشاهده در عمل اجرا کنید:

corr = dataset.corr()
sns.heatmap(corr, annot=True)

خروجی:

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

همچنین می‌توانید رنگ نقشه حرارتی را با ارسال آرگومان تغییر دهید cmap پارامتر. در حال حاضر، فقط به اسکریپت زیر نگاه کنید:

corr = dataset.corr()
sns.heatmap(corr, cmap='winter')

خروجی به شکل زیر است:

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

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

اسکریپت زیر را اجرا کنید import مجموعه داده و دیدن پنج ردیف اول مجموعه داده:

import pandas as pd
import numpy as np

import matplotlib.pyplot as plt
import seaborn as sns

dataset = sns.load_dataset('flights')

dataset.head()

خروجی:

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

در حال حاضر با استفاده از pivot_table تابع، ما می توانیم یک نقشه حرارتی ایجاد کنیم که تعداد مسافرانی را که در یک ماه خاص از یک سال خاص سفر کرده اند را نشان می دهد. برای انجام این کار، عبور خواهیم کرد month به عنوان ارزش برای index پارامتر. ویژگی index مربوط به ردیف ها است. بعد باید عبور کنیم year به عنوان ارزش برای column پارامتر. و در نهایت برای values پارامتر را پاس می کنیم passengers ستون اسکریپت زیر را اجرا کنید:

data = dataset.pivot_table(index='month', columns='year', values='passengers')
sns.heatmap(data)

خروجی به شکل زیر است:

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

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

در حال حاضر مشاهده می کنید که جعبه ها یا سلول ها در برخی موارد با هم همپوشانی دارند و تمایز بین مرزهای سلول ها چندان واضح نیست. برای ایجاد یک مرز واضح بین سلول ها، می توانید از آن استفاده کنید linecolor و linewidths مولفه های. به اسکریپت زیر دقت کنید:

data = dataset.pivot_table(index='month', columns='year', values='passengers' )
sns.heatmap(data, linecolor='blue', linewidth=1)

در اسکریپت بالا، “آبی” را به عنوان مقدار برای گذراندیم linecolor پارامتر، در حالی که linewidth پارامتر روی 1 تنظیم شده است. در خروجی یک مرز آبی در اطراف هر سلول خواهید دید:

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

شما می توانید ارزش را افزایش دهید linewidth اگر می خواهید مرزهای ضخیم تری داشته باشید.

نقشه خوشه ای

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

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

data = dataset.pivot_table(index='month', columns='year', values='passengers')
sns.clustermap(data)

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

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

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

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

با این، بحث خود را در مورد توطئه های ماتریکس به پایان می رسانیم. در بخش بعدی بحث خود را در مورد قابلیت های شبکه کتابخانه Seaborn آغاز خواهیم کرد.

Seaborn Grids

گریدها در Seaborn به ما این امکان را می‌دهند که بر اساس ویژگی‌های مورد استفاده در نمودارها، طرح‌های فرعی را دستکاری کنیم.

جفت گرید

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

بیایید قبل از اینکه بتوانیم حرکت کنیم، طرح جفت را در اینجا تجدید نظر کنیم روی به شبکه جفت. مجموعه داده ای که می خواهیم برای بخش شبکه جفت استفاده کنیم مجموعه داده “iris” است که به طور پیش فرض هنگام دانلود دانلود می شود. seaborn کتابخانه اسکریپت زیر را برای بارگذاری مجموعه داده iris اجرا کنید:

import pandas as pd
import numpy as np

import matplotlib.pyplot as plt
import seaborn as sns

dataset = sns.load_dataset('iris')

dataset.head()

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

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

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

sns.pairplot(dataset)

یک عکس فوری از بیرون به این شکل است:

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

حالا بیایید یک شبکه جفت رسم کنیم و تفاوت بین نمودار جفت و شبکه جفت را ببینیم. برای ایجاد یک شبکه جفت، شما به سادگی باید مجموعه داده را به شبکه ارسال کنید PairGrid عملکرد، همانطور که در زیر نشان داده شده است:

sns.PairGrid(dataset)

خروجی:

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

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

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

grids = sns.PairGrid(dataset)
grids.map(plt.scatter)

خروجی به شکل زیر است:

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

می توانید نمودارهای پراکندگی را برای همه ترکیبات ستون های عددی در مجموعه داده “عنبیه” مشاهده کنید.

همچنین می توانید انواع مختلف نمودارها را رسم کنید روی همان شبکه جفت به عنوان مثال، اگر می خواهید یک طرح “توزیع” ترسیم کنید روی مورب، یک “kdeplot” روی نیمه بالایی مورب، و طرح “پراکندگی”. روی قسمت پایینی مورب را می توانید استفاده کنید map_diagonal، map_upper، و map_lower توابع، به ترتیب. نوع نموداری که باید ترسیم شود به عنوان پارامتر به این توابع ارسال می شود. به اسکریپت زیر دقت کنید:

grids = sns.PairGrid(dataset)
grids.map_diag(sns.distplot)
grids.map_upper(sns.kdeplot)
grids.map_lower(plt.scatter)

خروجی اسکریپت بالا به شکل زیر است:

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

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

شبکه های وجهی

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

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

import pandas as pd
import numpy as np

import matplotlib.pyplot as plt
import seaborn as sns

dataset = sns.load_dataset('titanic')

برای ترسیم یک شبکه وجهی، FacetGrid() تابع استفاده می شود. اولین پارامتر تابع مجموعه داده است، پارامتر دوم col ویژگی برای رسم را مشخص می کند روی ستون ها در حالی که row پارامتر ویژگی را مشخص می کند روی ردیف ها را FacetGrid() تابع یک شی را برمی گرداند. مانند شبکه جفت، می توانید از آن استفاده کنید map تابع برای تعیین نوع نموداری که می خواهید ترسیم کنید.

اسکریپت زیر را اجرا کنید:

grid = sns.FacetGrid(data=dataset, col='alive', row='sex')
grid.map(sns.distplot, 'age')

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

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

از خروجی می توانید چهار نمودار را مشاهده کنید. یکی برای هر ترکیبی از جنسیت و بقای مسافر. ستون ها حاوی اطلاعاتی در مورد بقا هستند در حالی که ردیف ها حاوی اطلاعاتی در مورد جنسیت هستند، همانطور که توسط علامت مشخص شده است FacetGrid() تابع.

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

علاوه بر نمودارهای توزیعی برای یک ویژگی، می توانیم نمودارهای پراکنده ای را نیز ترسیم کنیم که شامل دو ویژگی است روی شبکه وجهی

پیشنهاد می‌کنیم بخوانید:  آموزش Git و GitHub به زبان اسپانیایی – دوره ای برای مبتدیان

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

grid = sns.FacetGrid(data= dataset, col= 'alive', row = 'sex')
grid.map(plt.scatter, 'age', 'fare')

خروجی اسکریپت بالا به شکل زیر است:

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

نمودارهای رگرسیون

همانطور که از نام آن پیداست از نمودارهای رگرسیون برای اجرا استفاده می شود تجزیه و تحلیل رگرسیون بین دو یا چند متغیر

در این بخش، طرح مدل خطی را مطالعه خواهیم کرد که یک رابطه خطی بین دو متغیر را به همراه بهترین خط رگرسیون بر اساس داده ها ترسیم می کند.

مجموعه داده ای که قرار است برای این بخش استفاده کنیم مجموعه داده “diamonds” است که به طور پیش فرض با دانلود می شود seaborn کتابخانه اسکریپت زیر را برای بارگذاری مجموعه داده اجرا کنید:

import pandas as pd
import numpy as np

import matplotlib.pyplot as plt
import seaborn as sns

dataset = sns.load_dataset('diamonds')

dataset.head()

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

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

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

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

برای رسم مدل خطی، lmplot() تابع استفاده می شود. اولین پارامتر ویژگی است که می خواهید رسم کنید روی محور x، در حالی که متغیر دوم مشخصه ای است که می خواهید ترسیم کنید روی محور y آخرین پارامتر مجموعه داده است. اسکریپت زیر را اجرا کنید:

sns.lmplot(x='carat', y='price', data=dataset)

خروجی به شکل زیر است:

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

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

sns.lmplot(x='carat', y='price', data=dataset, hue='cut')

خروجی به شکل زیر است:

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

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

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

sns.lmplot(x='carat', y='price', data=dataset, col='cut')

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

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

شما همچنین می توانید اندازه و نسبت ابعاد نمودارها را با استفاده از aspect و size مولفه های. به اسکریپت زیر دقت کنید:

sns.lmplot(x='carat', y = 'price', data= dataset, col = 'cut', aspect = 0.5, size = 8 )

را aspect پارامتر نسبت ابعاد بین عرض و ارتفاع را تعریف می کند. نسبت ابعاد 0.5 به این معنی است که عرض نیمی از ارتفاع است که در خروجی نشان داده شده است.

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

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

طرح طرح

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

تنظیم سبک

را set_style() تابع برای تنظیم سبک شبکه استفاده می شود. شما می توانید عبور کنید darkgrid، whitegrid، dark، white و ticks به عنوان پارامترهای به set_style تابع.

برای این بخش، ما دوباره از “داده‌های تایتانیک” استفاده خواهیم کرد. برای دیدن اسکریپت زیر را اجرا کنید darkgrid سبک.

sns.set_style('darkgrid')
sns.distplot(dataset('fare'))

خروجی به این شکل است؛

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

در خروجی می بینید که ما یک پس زمینه تیره با شبکه ها داریم. ببینیم چیه whitegrid به نظر می رسد. اسکریپت زیر را اجرا کنید:

sns.set_style('whitegrid')
sns.distplot(dataset('fare'))

خروجی به شکل زیر است:

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

اکنون می بینید که ما هنوز شبکه هایی در پس زمینه داریم اما پس زمینه خاکستری تیره قابل مشاهده نیست. پیشنهاد می کنم امتحان کنید و با بقیه گزینه ها بازی کنید و ببینید کدام سبک به شما می آید.

تغییر اندازه شکل

از آنجایی که Seaborn از توابع Matplotlib در پشت صحنه استفاده می کند، می توانید از Matplotlib استفاده کنید pyplot بسته برای تغییر اندازه شکل مطابق شکل زیر:

plt.figure(figsize=(8,4))
sns.distplot(dataset('fare'))

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

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

متن را تنظیم کنید

جدای از notebook، ممکن است لازم باشد برای پوسترها طرح هایی ایجاد کنید. برای این کار می توانید از set_context() عملکرد و آن را پاس کنید poster به عنوان تنها ویژگی که در زیر نشان داده شده است:

sns.set_context('poster')
sns.distplot(dataset('fare'))

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

کتابخانه Seaborn برای تجسم داده ها در پایتون: قسمت 2

نتیجه

کتابخانه Seaborn یک کتابخانه پیشرفته پایتون برای تجسم داده ها است. این مقاله قسمت 2 از سری مقالات است روی Seaborn برای تجسم داده در پایتون. در این مقاله روش رسم نمودارهای رگرسیون و ماتریسی در Seaborn را دیدیم. ما همچنین دیدیم که چگونه استایل های نمودار را تغییر دهیم و از توابع شبکه برای دستکاری نمودارهای فرعی استفاده کنیم. در مقاله بعدی خواهیم دید که چگونه می توان از قابلیت های داخلی کتابخانه Pandas پایتون برای تجسم داده ها استفاده کرد.

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-25 21:51:05

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید