تجسم داده با Seaborn در پایتون
تجسم داده با Seaborn در پایتون
تجسم دادهها را میتوان با استفاده از Seaborn انجام داد. این ابزار میتواند مجموعه دادههای پیچیده را به نمایشهای بصری واضح تبدیل کند و درک آنها را آسانتر کند، همچنین به شناسایی روندها و روابط موجود در دادهها کمک میکند. این مقاله شما را با توابع مختلف ترسیم در Seaborn آشنا میکند.
شروع کار با Seaborn
Seaborn یک کتابخانه تجسم داده در پایتون است که فرایند ایجاد تجسمهای پیچیده را ساده میکند. این کتابخانه بهطور خاص برای تجسم دادههای آماری طراحی شده است و درک توزیع دادهها و روابط بین آنها را آسانتر میکند.
Seaborn بر پایه Matplotlib ساخته شده و با ساختارهای دادهای Pandas به خوبی ادغام میشود.
ویژگیهای کلیدی Seaborn:
- رابط سطح بالا: ایجاد تجسمهای پیچیده را ساده میکند.
- ادغام با Pandas: برای دستکاری دادهها از DataFrameهای Pandas پشتیبانی میکند.
- تمهای داخلی: ارائه تمها و پالتهای رنگی جذاب.
- نمودارهای آماری: ارائه انواع نمودارهای مناسب برای تجسم روابط و توزیعهای آماری.
نصب Seaborn برای تجسم داده
قبل از استفاده از Seaborn، باید آن را نصب کنید. سادهترین راه برای نصب این کتابخانه، استفاده از pip است:
pip install seaborn
برای اطلاعات بیشتر درباره نحوه نصب در سیستمعاملهای مختلف، میتوانید از لینکهای زیر استفاده کنید:
ایجاد نمودارهای پایه با Seaborn
قبل از شروع، بهتر است دو نوع داده را معرفی کنیم:
- دادههای دو متغیره (Bivariate Data): این نوع داده شامل دو متغیر مختلف است. تجزیه و تحلیل آن برای پیدا کردن روابط و علتها بین دو متغیر انجام میشود.
- دادههای تکمتغیره (Univariate Data): شامل فقط یک متغیر است. تجزیه و تحلیل این دادهها ساده است، زیرا تنها یک ویژگی را بررسی میکند. هدف اصلی توصیف داده و پیدا کردن الگوهای موجود در آن است.
نمودارهای رایج در Seaborn
۱. نمودار خطی (Line Plot)
نمودار خطی برای نمایش رابطه بین دو متغیر عددی استفاده میشود و معمولاً تغییرات در یک بازه زمانی را نشان میدهد.
دستور:
sns.lineplot(x=None, y=None)
مثال:
import pandas as pd
import seaborn as sns
data = {'Name': ['Ali', 'Sara', 'Reza', 'Neda'],
'Age': [30, 25, 28, 32]}
df = pd.DataFrame(data)
sns.lineplot(x=df['Age'], y=df['Weight'])
۲. نمودار پراکندگی (Scatter Plot)
نمودار پراکندگی برای نمایش رابطه بین دو متغیر عددی استفاده میشود و میتواند همبستگی یا الگوهای موجود را نشان دهد.
دستور:
seaborn.scatterplot(x=None, y=None)
مثال:
import pandas as pd
import seaborn as sns
data = {'Name': ['Ali', 'Sara', 'Reza', 'Neda'],
'Age': [30, 25, 28, 32]}
df = pd.DataFrame(data)
sns.scatterplot(x=df['Age'], y=df['Weight'])
۳. نمودار جعبهای (Box Plot)
نمودار جعبهای یک روش بصری برای نمایش توزیع دادهها و مقادیر پرت است. این نمودار شامل حداقل، بیشترین مقدار، چارکها و میانه دادهها میشود.
دستور:
sns.boxplot(x=None, y=None, hue=None, data=None)
مثال:
import pandas as pd
import seaborn as sns
data = {'Name': ['Ali', 'Sara', 'Reza', 'Neda'],
'Age': [30, 25, 28, 32]}
df = pd.DataFrame(data)
sns.boxplot(x=df['Age'])
۴. نمودار ویولن (Violin Plot)
نمودار ویولن مشابه نمودار جعبهای است، اما علاوه بر نمایش آمارههای داده، توزیع احتمالی دادهها را نیز نشان میدهد.
دستور:
sns.violinplot(x=None, y=None, hue=None, data=None)
مثال:
import pandas as pd
import seaborn as sns
data = {'Name': ['Ali', 'Sara', 'Reza', 'Neda'],
'Age': [30, 25, 28, 32]}
df = pd.DataFrame(data)
sns.violinplot(x=df['Age'])
۵. نمودار ستون (Bar Plot)
نمودار میلهای برای نمایش میزان یک متغیر عددی در دستههای مختلف استفاده میشود.
دستور:
sns.barplot(x=None, y=None, hue=None, data=None)
مثال:
import seaborn as sns
import pandas as pd
data = pd.read_csv("nba.csv")
sns.barplot(x="Age", y="Weight", data=data)
۶. نمودار نقطهای (Point Plot)
نمودار نقطهای برای نمایش برآورد گرایش مرکزی یک متغیر عددی و فواصل اطمینان آن استفاده میشود.
دستور:
sns.pointplot(x=None, y=None, hue=None, data=None)
مثال:
import seaborn as sns
import pandas as pd
data = pd.read_csv("nba.csv")
sns.pointplot(x="Age", y="Weight", data=data)
۷. نمودار شمارشی (Count Plot)
نمودار شمارشی برای نمایش تعداد تکرار هر دسته در یک متغیر دستهبندی شده استفاده میشود.
دستور:
sns.countplot(x=None, y=None, hue=None, data=None)
مثال:
import seaborn as sns
import pandas as pd
data = pd.read_csv("nba.csv")
sns.countplot(x=data["Age"])
۸. نمودار KDE (Kernel Density Estimation)
نمودار KDE برای نمایش چگالی احتمال یک متغیر پیوسته استفاده میشود.
دستور:
sns.kdeplot(x=None, *, y=None, vertical=False, palette=None, **kwargs)
مثال:
import seaborn as sns
import pandas as pd
from sklearn import datasets
iris = datasets.load_iris()
iris_df = pd.DataFrame(iris.data, columns=['Sepal_Length', 'Sepal_Width', 'Petal_Length', 'Petal_Width'])
sns.kdeplot(iris_df['Sepal_Length'], shade=True)
سفارشیسازی نمودارها در Seaborn
میتوان با استفاده از ویژگیهای مختلف، نمودارهای Seaborn را بهبود داد و خوانایی آنها را افزایش داد. برای تنظیم رنگ، اندازه، سبک و سایر ویژگیها، از متدهای مختلف Seaborn استفاده میشود.
تجسم دادهها با Seaborn
۱. تغییر سبک و تم نمودار
Seaborn دارای چندین تم داخلی برای تغییر ظاهر کلی نمودارها است. این تمها شامل darkgrid
، whitegrid
، dark
، white
و ticks
هستند.
import seaborn as sns
import matplotlib.pyplot as plt
sns.set_style("whitegrid")
sns.boxplot(x='species', y='petal_length', data=sns.load_dataset('iris'))
plt.title('توزیع طول گلبرگ بر اساس گونه')
plt.show()
۲. سفارشیسازی پالت رنگی
Seaborn امکان استفاده از پالتهای رنگی مختلف را فراهم میکند. میتوان از پالتهای از پیش تعریفشده مانند "deep"
و "muted"
استفاده کرد یا پالتهای سفارشی ایجاد نمود.
custom_palette = sns.color_palette("husl", 8)
sns.set_palette(custom_palette)
sns.violinplot(x='species', y='petal_length', data=sns.load_dataset('iris'))
plt.title('توزیع طول گلبرگ بر اساس گونه')
plt.show()
۳. افزودن عنوان و برچسبهای محورها
با استفاده از plt.title()
، plt.xlabel()
و plt.ylabel()
میتوان به نمودارها عنوان و برچسب اضافه کرد تا خوانایی آنها افزایش یابد.
sns.scatterplot(x='sepal_length', y='sepal_width', data=sns.load_dataset('iris'))
plt.title('طول کاسبرگ در مقابل عرض کاسبرگ')
plt.xlabel('طول کاسبرگ (cm)')
plt.ylabel('عرض کاسبرگ (cm)')
plt.show()
۴. تنظیم اندازه شکل و نسبت ابعاد
با استفاده از plt.figure(figsize=(عرض، ارتفاع))
میتوان ابعاد نمودار را برای ارائههای مختلف تنظیم کرد.
plt.figure(figsize=(10, 6))
sns.lineplot(x='year', y='passengers', data=sns.load_dataset('flights'))
plt.title('تعداد مسافران در طول زمان')
plt.show()
۵. افزودن نشانگر به نمودارهای خطی
میتوان با استفاده از آرگومان marker
در sns.lineplot()
نقاط دادهای را برجسته کرد.
sns.lineplot(x='year', y='passengers', data=sns.load_dataset('flights'), marker='o')
plt.title('تعداد مسافران در طول زمان')
plt.show()
نمودارهای جفتی (Pair Plots)
نمودارهای جفتی روابط بین متغیرهای مختلف یک مجموعه داده را نشان میدهند و شامل نمودارهای پراکندگی و توزیعهای متغیرها هستند.
import seaborn as sns
import matplotlib.pyplot as plt
data = sns.load_dataset("iris")
sns.pairplot(data, hue="species")
plt.show()
نمودارهای مشترک (Joint Plots)
نمودارهای مشترک شامل یک نمودار پراکندگی همراه با توزیعهای متغیرهای فردی در حاشیهها هستند.
import seaborn as sns
import matplotlib.pyplot as plt
data = sns.load_dataset("tips")
sns.jointplot(x="total_bill", y="tip", data=data, kind="scatter")
plt.show()
نمودارهای شبکهای (Grid Plot)
نمودارهای شبکهای امکان تجسم دادهها در چندین بعد را فراهم میکنند و با استفاده از FacetGrid
میتوان زیرمجموعههای داده را مقایسه کرد.
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
g = sns.FacetGrid(tips, col="time", row="sex")
تجسم روابط رگرسیونی با Seaborn
Seaborn ابزارهایی برای انجام و تجسم رگرسیونهای خطی فراهم میکند که برای شناسایی روابط بین متغیرها و پیشبینی روندها مفید است.
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
sns.regplot(x='total_bill', y='tip', data=tips, scatter_kws={'s':10}, line_kws={'color':'red'})
plt.show()
پرسشهای متداول در مورد تجسم دادهها با Seaborn
چگونه Seaborn دادههای دستهبندی را تجسم میکند؟
Seaborn از نمودارهایی مانند نمودار میلهای (barplot
)، جعبهای (boxplot
) و ویولونی (violinplot
) برای تجسم دادههای دستهبندی استفاده میکند.
Seaborn چه تفاوتی با Matplotlib دارد؟
Seaborn بر پایه Matplotlib ساخته شده و یک رابط سطح بالا برای ایجاد نمودارهای آماری پیچیده با کدنویسی کمتر ارائه میدهد.
مزایای استفاده از Seaborn چیست؟
- سادگی استفاده
- ادغام با Pandas
- پشتیبانی از توابع آماری داخلی
- قابلیت ایجاد نمودارهای چندگانه و پیچیده
آیا Seaborn میتواند دادههای حجیم را مدیریت کند؟
بله، اما عملکرد آن بسته به اندازه داده ممکن است متفاوت باشد. استفاده از Pandas برای پیشپردازش دادهها به بهینهسازی عملکرد کمک میکند.
چگونه Seaborn با Pandas ادغام میشود؟
Seaborn بهطور مستقیم با DataFrameهای Pandas کار میکند و این کار، تجزیه و تحلیل و تجسم دادهها را سادهتر میکند.
دیدگاهتان را بنویسید