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

سرور مجازی NVMe

طرح ویولن Seaborn – آموزش و نمونه

0 5
زمان لازم برای مطالعه: 7 دقیقه


معرفی

متولد دریا یکی از پرکاربردترین کتابخانه های تجسم داده در پایتون، به عنوان پسوندی است Matplotlib. این یک API ساده، بصری و در عین حال بسیار قابل تنظیم برای تجسم داده ها ارائه می دهد.

در این آموزش، روش انجام این کار را بررسی خواهیم کرد طرح یک نقشه ویولن در Seaborn.

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

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

وارد کردن داده ها

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

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

توطئه‌های ویولن اساساً همان آمار خلاصه‌ای را به عنوان نمودارهای جعبه نشان می‌دهند، اما شامل اطلاعات اضافی نیز می‌شوند. شکل “ویولن” در طرح ویولن یک است تخمین چگالی هسته که شکل/توزیع داده ها را نشان می دهد.

برای این آموزش، ما با آن کار خواهیم کرد گپ مایندر مجموعه داده

ما با وارد کردن Seaborn، ماژول PyPlot از Matplotlib و Pandas شروع می کنیم:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

سپس ما نیاز داریم import داده. خوب print سر مجموعه داده برای اطمینان از بارگیری صحیح داده ها و نگاهی به نام ستون ها/ویژگی ها.

همچنین بررسی می‌کنیم تا مطمئن شویم داده‌ای گم نشده است:

dataframe = pd.read_csv("gapminder_full.csv", error_bad_lines=False, encoding="ISO-8859-1")
print(dataframe.head())
print(dataframe.isnull().values.any())

این منجر به:

       country  year  population continent  life_exp     gdp_cap
0  Afghanistan  1952     8425333      Asia    28.801  779.445314
1  Afghanistan  1957     9240934      Asia    30.332  820.853030
2  Afghanistan  1962    10267083      Asia    31.997  853.100710
3  Afghanistan  1967    11537966      Asia    34.020  836.197138
4  Afghanistan  1972    13079460      Asia    36.088  739.981106

ما ویژگی های پیوسته خود را انتخاب کرده و آنها را به عنوان متغیر ذخیره می کنیم تا به توابع Seaborn منتقل شوند:

country = dataframe.country
continent = dataframe.continent
population = dataframe.population
life_exp = dataframe.life_exp
gdp_cap = dataframe.gdp_cap

طرح یک نقشه ساده ویولن در Seaborn

اکنون که داده ها را بارگذاری کرده ایم و ویژگی های مورد نظر خود را انتخاب کرده ایم، می توانیم طرح ویولن را ایجاد کنیم.

برای ایجاد یک طرح ویولن، ما فقط از آن استفاده می کنیم violinplot() عملکرد در Seaborn

ما در dataframe و همچنین متغیرهایی که می خواهیم تجسم کنیم، عبور می دهیم. ما می توانیم فقط متغیر X را وارد کنیم و تابع به طور خودکار مقادیر را محاسبه می کند روی محور Y:

sns.violinplot(x=life_exp)

plt.show()

طرح ویولن Seaborn - آموزش و نمونه

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

sns.violinplot(x="life_exp", data = dataframe)

این دقیقاً همان نتیجه را ایجاد می کند.

توجه داشته باشید: در این تصویر، Seaborn توزیع امید به زندگی در همه کشورها را ترسیم می کند، زیرا ما فقط life_exp متغیر. بیشتر اوقات، ما می خواهیم متغیری مانند این را نیز جدا کنیم روی متغیر دیگری مانند country یا continent.

ترسیم پلات ویولن با متغیرهای X و Y

در اینجا یک متغیر X طبقه‌بندی و یک متغیر Y پیوسته را بررسی می‌کنیم، زیرا توزیع خاصی وجود دارد که می‌خواهیم آن را بر اساس نوع تقسیم‌بندی کنیم.

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

در عوض، می‌توانیم بر اساس قاره نیز نقشه بکشیم.

sns.violinplot(x=continent, y=life_exp, data=dataframe)

طرح ویولن Seaborn - آموزش و نمونه

سفارشی کردن طرح

ما می توانیم طرح ویولن خود را به چند روش مختلف سفارشی کنیم.

برچسب های طرح ویولن را با Seaborn تغییر دهید

فرض کنید می‌خواهیم عناوین و برچسب‌هایی را به طرح خود اضافه کنیم تا به دیگران در تفسیر داده‌ها کمک کنیم. اگرچه Seaborn به طور خودکار محورهای X و Y را برچسب گذاری می کند، ممکن است بخواهیم برچسب ها را تغییر دهیم.

این را می توان با set_title() و set_label() پس از ایجاد یک شیء محور عمل می کند. ما فقط عنوانی را که می خواهیم طرح خود را به آن بدهیم، منتقل می کنیم set_title() تابع.

برای برچسب زدن محورها از علامت استفاده می کنیم set() عملکرد و ارائه برچسب به xlabel و ylabel آرگومان ها یا از wrapper استفاده کنید set_xlabel()/set_ylabel() کارکرد:

ax = sns.violinplot(x=continent, y=life_exp)
ax.set_title("Life Expectancy By Country")
ax.set_ylabel("Gapminder Life Expectancy")
ax.set_xlabel("Nations")

plt.show()

طرح ویولن Seaborn - آموزش و نمونه

رنگ پلات ویولن را با Seaborn تغییر دهید

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

colors_list = ('#78C850', '#F08030',  '#6890F0',  '#A8B820',  '#F8D030', '#E0C068', '#C03028', '#F85888', '#98D8D8')

ax = sns.violinplot(x=continent, y=life_exp, palette=colors_list)
ax.set_title("Life Expectancy By Country")
ax.set_ylabel("Gapminder Life Expectancy")
ax.set_xlabel("Nations")

plt.show()

طرح ویولن Seaborn - آموزش و نمونه

همپوشانی ازدحام بر روی طرح ویولن در Seaborn

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

colors_list = ('#78C850', '#F08030',  '#6890F0',  '#A8B820',  '#F8D030', '#E0C068', '#C03028', '#F85888', '#98D8D8')

plt.figure(figsize=(10,6))
sns.violinplot(x=continent, y=life_exp,palette=colors_list)
sns.swarmplot(x=continent, y=life_exp, color="k", alpha=0.8)
plt.title("Life Expectancy By Country")
plt.ylabel("Gapminder Life Expectancy")
plt.xlabel("Nations")

plt.show()

طرح ویولن Seaborn - آموزش و نمونه

تغییر سبک ویولن پلات با Seaborn

ما به راحتی می توانیم سبک و پالت رنگ طرح خود را با استفاده از آن تغییر دهیم set_style() و set_palette() به ترتیب توابع

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

plt.figure(figsize=(10,6))
sns.set_palette("RdBu")
sns.set_style("darkgrid")
sns.violinplot(x=continent, y=life_exp, data=dataframe)
sns.swarmplot(x=continent, y=life_exp, data=dataframe, color="k", alpha=0.8)
plt.title("Life Expectancy By Country")
plt.ylabel("Gapminder Life Expectancy")
plt.xlabel("Nations")

plt.show()

طرح ویولن Seaborn - آموزش و نمونه

طرح های فرعی ویولن با Seaborn

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

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

در اینجا، ما می توانیم هر دو را تنظیم کنیم y=variable، یا استفاده کنید data=variable.

fig = plt.figure(figsize=(6, 6))
gs = fig.add_gridspec(1, 3)

ax = fig.add_subplot(gs(0, 0))

sns.violinplot(data=population)
ax.set_xlabel("Population")

ax = fig.add_subplot(gs(0, 1))
sns.violinplot(data=life_exp)
ax.set_xlabel("Life Exp.")

ax = fig.add_subplot(gs(0, 2))
sns.violinplot(data=gdp_cap)
ax.set_xlabel("GDP Capacity")

fig.tight_layout()
plt.show()

طرح ویولن Seaborn - آموزش و نمونه

گروه بندی توطئه های ویولن توسط Hue

یک کار واقعا مفید برای انجام طرح های ویولن، گروه بندی بر اساس رنگ است. اگر یک مقدار طبقه بندی دارید که دارای دو مقدار است (معمولاً، a true/falseمتغیر -style)، می توانید نمودارها را بر اساس رنگ گروه بندی کنید.

به عنوان مثال، شما می توانید مجموعه داده ای از افراد و یک employment ستون، با employed و unemployed به عنوان ارزش ها سپس می توانید طرح های ویولن را بر اساس “رنگ” گروه بندی کنید – این دو طعم شغلی.

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

سپس، می توانیم a را اختصاص دهیم Yes/No مقدار یک ستون جدید – above_average_life_exp برای هر کشور اگر میانگین امید به زندگی بالاتر از میانگین کل قاره باشد، این مقدار است Yes، و بالعکس:


europe = dataframe.loc(dataframe("continent") == "Europe")


avg_life_exp = dataframe("life_exp").mean()


above_average_life_exp = ()



for index, row in europe.iterrows():
    if row("life_exp") > avg_life_exp:
        above_average_life_exp.append("Yes")
    else:
        above_average_life_exp.append("No")


europe("above_average_life_exp") = above_average_life_exp

حالا اگر ما print مجموعه داده ما، چیزی در امتداد خطوط زیر داریم:

             country  year  population continent  life_exp       gdp_cap avle
12           Albania  1952     1282697    Europe    55.230   1601.056136  No
13           Albania  1957     1476505    Europe    59.280   1942.284244  No
14           Albania  1962     1728137    Europe    64.820   2312.888958  Yes
15           Albania  1967     1984060    Europe    66.220   2760.196931  Yes
16           Albania  1972     2263554    Europe    67.690   3313.422188  Yes
...              ...   ...         ...       ...       ...           ...  ...
1603  United Kingdom  1987    56981620    Europe    75.007  21664.787670  Yes
1604  United Kingdom  1992    57866349    Europe    76.420  22705.092540  Yes
1605  United Kingdom  1997    58808266    Europe    77.218  26074.531360  Yes
1606  United Kingdom  2002    59912431    Europe    78.471  29478.999190  Yes
1607  United Kingdom  2007    60776238    Europe    79.425  33203.261280  Yes

نام متغیر به کوتاه شده است avle به خاطر اختصار

اکنون، بیایید زیرمجموعه کوچکتری از این کشورها را با استفاده انتخاب کنیم europe.head() و نمودارهای ویولن را با ستون جدیدی که درج کرده ایم گروه بندی کنید:

europe = europe.tail(50)

ax = sns.violinplot(x=europe.country, y=europe.life_exp, hue=europe.above_average_life_exp)
ax.set_title("Life Expectancy By Country")
ax.set_ylabel("Gapminder Life Expectancy")
ax.set_xlabel("Nations")

plt.show()

این در حال حاضر منجر به:

طرح ویولن Seaborn - آموزش و نمونه

اکنون کشورهایی با امید به زندگی کمتر از حد متوسط ​​با رنگ نارنجی رنگ آمیزی می شوند در حالی که سایر کشورها با رنگ آبی رنگ می شوند. اگرچه، حتی این هم همه چیز را به ما نمی گوید. شاید بخواهیم بررسی کنیم چند تا مردم ترکیه امید به زندگی کمتر از حد متوسط ​​دارند.

اینجا کجاست تقسیم کردن لگد وارد می کند

تقسیم طرح های ویولن توسط Hue

توطئه‌های ویولن Seaborn به شما امکان می‌دهند از داخل آن عبور کنید split آرگومان، که می توان آن را به هر یک از آنها تنظیم کرد True یا False.

اگر آن را تنظیم کنید True، و الف hue استدلال وجود دارد، ویولن ها را بین دو تقسیم می کند hue ارزش های.

در مورد ما، یک طرف ویولن سمت چپ ویولن را به عنوان ورودی هایی با امید به زندگی بالاتر از متوسط ​​نشان می دهد، در حالی که سمت راست برای ترسیم امید به زندگی کمتر از متوسط ​​استفاده می شود:

تقسیم توطئه های ویولن توسط رنگ دریایی

نتیجه

در این آموزش، ما چندین روش را برای ترسیم طرح ویولن با استفاده از Seaborn و Python بررسی کرده‌ایم. همچنین روش سفارشی‌سازی و تغییر برچسب‌ها و رنگ، و همچنین پوشش Swarmplots، طرح فرعی چندین ویولن پلات، و در نهایت – روش گروه‌بندی طرح‌ها بر اساس رنگ و ایجاد تقسیم‌بندی ویولن پلات‌ها را پوشش داده‌ایم. روی یک متغیر

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

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

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

تجسم داده ها در پایتون، کتابی برای توسعه دهندگان پایتون مبتدی تا متوسط، شما را در دستکاری ساده داده ها با پانداها راهنمایی می کند، کتابخانه های ترسیم هسته ای مانند Matplotlib و Seaborn را پوشش می دهد و به شما نشان می دهد که چگونه از کتابخانه های اعلامی و تجربی مانند Altair استفاده کنید. به طور خاص، در طول ۱۱ فصل، این کتاب ۹ کتابخانه پایتون را پوشش می‌دهد: Pandas، Matplotlib، Seaborn، Bokeh، Altair، Plotly، GGPlot، GeoPandas و VisPy.

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

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



منتشر شده در 1403-01-13 16:24:08

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

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

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