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

سرور مجازی NVMe

طرح خط Seaborn – آموزش و مثال

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


معرفی

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

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

Line Plots مقادیر عددی را نمایش می دهد روی یک محور و مقادیر مقوله ای روی دیگری.

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

با Seaborn یک پلات خطی ترسیم کنید

بیایید با ابتدایی‌ترین شکل جمع‌آوری داده‌ها برای یک Line Plot، با ارائه چند لیست برای محور X و Y-محور شروع کنیم. lineplot() تابع:

import matplotlib.pyplot as plt
import seaborn as sns

sns.set_theme(style="darkgrid")

x = (1, 2, 3, 4, 5)
y = (1, 5, 4, 7, 4)

sns.lineplot(x, y)
plt.show()

در اینجا، ما دو لیست از مقادیر داریم، x و y. این x لیست به عنوان لیست متغیر دسته بندی ما عمل می کند، در حالی که y لیست به عنوان لیست متغیر عددی عمل می کند.

این کد نتیجه می دهد:

طرح خط ساده زاده دریا

برای این منظور، می‌توانیم از انواع داده‌های دیگر، مانند رشته‌ها برای محور دسته‌بندی استفاده کنیم:

import matplotlib.pyplot as plt
import seaborn as sns

sns.set_theme(style="darkgrid")

x = ('day 1', 'day 2', 'day 3')
y = (1, 5, 4)

sns.lineplot(x, y)
plt.show()

و این منجر به:

طرح خط طبقه بندی شده در دریا

توجه داشته باشید: اگر از اعداد صحیح به عنوان فهرست دسته بندی خود استفاده می کنید، مانند (1, 2, 3, 4, 5)، اما سپس برای رفتن به 100، همه مقادیر بین 5..100 پوچ خواهد بود:

import seaborn as sns

sns.set_theme(style="darkgrid")

x = (1, 2, 3, 4, 5, 10, 100)
y = (1, 5, 4, 7, 4, 5, 6)

sns.lineplot(x, y)
plt.show()

نمودار خطی مقادیر گمشده در دریا

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

import matplotlib.pyplot as plt
import seaborn as sns

sns.set_theme(style="darkgrid")

x = ('day 1', 'day 2', 'day 3', 'day 100')
y = (1, 5, 4, 5)

sns.lineplot(x, y)
plt.show()

نمودار خطی مقادیر مقوله‌ای گمشده در دریا

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

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

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

import pandas as pd
df = pd.read_csv('hotel_bookings.csv')
print(df.head())

بیایید به ستون های این مجموعه داده نگاهی بیندازیم:

          hotel  is_canceled reservation_status  ... arrival_date_month  stays_in_week_nights
0  Resort Hotel            0          Check-Out  ...               July                     0
1  Resort Hotel            0          Check-Out  ...               July                     0
2  Resort Hotel            0          Check-Out  ...               July                     1
3  Resort Hotel            0          Check-Out  ...               July                     1
4  Resort Hotel            0          Check-Out  ...               July                     2

این یک نمای کوتاه است، زیرا تعداد زیادی ستون در این مجموعه داده وجود دارد. به عنوان مثال، بیایید این مجموعه داده را با استفاده از کاوش کنیم arrival_date_month به عنوان محور X طبقه بندی ما، در حالی که ما از آن استفاده می کنیم stays_in_week_nights به عنوان محور Y عددی ما:

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

sns.set_theme(style="darkgrid")

df = pd.read_csv('hotel_bookings.csv')

sns.lineplot(x = "arrival_date_month", y = "stays_in_week_nights", data = df)
plt.show()

ما از پانداها برای خواندن داده‌های CSV و بسته‌بندی آن در یک استفاده کرده‌ایم DataFrame. سپس، ما می توانیم اختصاص دهیم x و y استدلال های lineplot() به عنوان نام ستون ها در آن دیتا فریم عمل می کند. البته، ما باید مشخص کنیم که با کدام مجموعه داده کار می کنیم با تخصیص چارچوب داده به data بحث و جدل.

حال، این نتیجه می شود:

نمودار خط مجموعه داده دریا

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

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

به طور کلی، مردم 2.8 روز می مانند روی شب‌های هفته، در ماه ژوئیه، اما فاصله اطمینان از آن شروع می‌شود 2.78-2.84.

ترسیم داده های گسترده

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

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

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

df = pd.read_csv('hotel_bookings.csv')


df = df(('arrival_date_year', 'arrival_date_month', 'stays_in_week_nights'))

order = df('arrival_date_month')

df_wide = df.pivot_table(index='arrival_date_month', columns='arrival_date_year', values='stays_in_week_nights')

df_wide = df_wide.reindex(order, axis=0)

print(df_wide)

در اینجا، ابتدا مجموعه داده را به چند ستون مرتبط کوتاه کرده ایم. سپس، ترتیب ماه‌های تاریخ ورود را ذخیره کرده‌ایم تا بتوانیم آن را برای بعد حفظ کنیم. هر چند می توانید در اینجا هر ترتیبی را تنظیم کنید.

سپس، برای تبدیل داده‌های با فرم باریک به شکل گسترده، جدول را حول آن چرخانده‌ایم arrival_date_month ویژگی، چرخش arrival_date_year به ستون ها، و stays_in_week_nights به ارزش ها در نهایت، ما استفاده کرده ایم reindex() برای اجرای همان دستور ماه های ورود که قبلاً داشتیم.

بیایید نگاهی بیندازیم که مجموعه داده ما اکنون چگونه به نظر می رسد:

arrival_date_year       2015      2016      2017
arrival_date_month
July                2.789625  2.836177  2.787502
July                2.789625  2.836177  2.787502
July                2.789625  2.836177  2.787502
July                2.789625  2.836177  2.787502
July                2.789625  2.836177  2.787502
...                      ...       ...       ...
August              2.654153  2.859964  2.956142
August              2.654153  2.859964  2.956142
August              2.654153  2.859964  2.956142
August              2.654153  2.859964  2.956142
August              2.654153  2.859964  2.956142

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

sns.lineplot(data=df_wide)
plt.show()

این lineplot() تابع می تواند به طور بومی مجموعه داده های گسترده را تشخیص دهد و آنها را بر اساس آن رسم کند. این منجر به:

نمودار خطی دریازاد مجموعه داده گسترده

سفارشی کردن خطوط خط با Seaborn

اکنون که روش رسم داده‌های درج شده به صورت دستی، روش ترسیم ویژگی‌های مجموعه داده ساده، و همچنین دستکاری مجموعه داده‌ها برای انطباق با نوع دیگری از تجسم را بررسی کرده‌ایم – بیایید نگاهی بیندازیم که چگونه می‌توانیم نمودارهای خط خود را برای ارائه بیشتر سفارشی کنیم. اطلاعات آسان برای هضم

طرح خط طرح با رنگ ها

رنگ ها می توان از آن برای تفکیک یک مجموعه داده به چند نمودار خط جداگانه استفاده کرد روی یک ویژگی که مایلید آنها را بر اساس گروه بندی (رنگ آمیزی) قرار دهید. به عنوان مثال، ما می توانیم گرایش مرکزی را تجسم کنیم stays_in_week_nights ویژگی، در طول ماه ها، اما آن را بگیرید arrival_date_year همچنین در نظر گرفته شده و بر اساس نمودارهای خط فردی گروه بندی کنید روی آن ویژگی

این دقیقاً همان کاری است که ما در مثال قبلی انجام دادیم – به صورت دستی. ما مجموعه داده را به یک دیتافریم با فرم گسترده تبدیل کرده و آن را رسم کرده ایم. با این حال، می‌توانستیم سال‌ها را به دو دسته تقسیم کنیم رنگ ها همچنین، که دقیقاً همان نتیجه را برای ما به ارمغان می آورد:

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

df = pd.read_csv('hotel_bookings.csv')

sns.lineplot(x = "arrival_date_month", y = "stays_in_week_nights", hue='arrival_date_year', data = df)
plt.show()

با تنظیم arrival_date_year ویژگی به عنوان hue استدلال، ما به Seaborn گفته‌ایم که هر نگاشت XY را بر اساس آن جدا کند arrival_date_year ویژگی، بنابراین ما با سه نمودار خطی مختلف به پایان خواهیم رسید:

رنگ های طرح خط دریایی

این بار، ما همچنین فواصل اطمینان را در اطراف تمایلات مرکزی خود مشخص کرده ایم.

بازه اطمینان خط خط را با Seaborn سفارشی کنید

شما می توانید با استفاده از چند آرگومان به راحتی در اطراف کمانچه، فعال/غیرفعال و نوع فواصل اطمینان را تغییر دهید. این ci آرگومان را می توان برای تعیین اندازه فاصله استفاده کرد و می توان آن را به یک عدد صحیح تنظیم کرد، 'sd' (انحراف معیار) یا None اگر می خواهید آن را خاموش کنید

این err_style را می توان برای مشخص کردن استفاده کرد سبک از فواصل اطمینان – band یا bars. ما تا کنون دیده‌ایم که گروه‌ها چگونه کار می‌کنند، بنابراین بیایید یک فاصله اطمینان را امتحان کنیم bars بجای:

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

df = pd.read_csv('hotel_bookings.csv')

sns.lineplot(x = "arrival_date_month", y = "stays_in_week_nights", err_style='bars', data = df)
plt.show()

این منجر به:

Seaborn سفارشی کردن فاصله اطمینان طرح خط

و بیایید فاصله اطمینان را که به طور پیش فرض روی تنظیم شده است تغییر دهیم 95، برای نمایش انحراف استاندارد به جای آن:

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

df = pd.read_csv('hotel_bookings.csv')

sns.lineplot(x = "arrival_date_month", y = "stays_in_week_nights", err_style='bars', ci='sd', data = df)
plt.show()

فاصله اطمینان طرح خط دریازاد

نتیجه

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

ما روش دستکاری مجموعه داده ها و تغییر شکل آنها برای تجسم چندین ویژگی و همچنین روش سفارشی کردن خطوط خطی را بررسی کرده ایم.

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

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

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

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

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

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



منتشر شده در 1403-01-12 03:56:04

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

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

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