در این مقاله با رسم چند نمودار پیشرفته با استفاده از زبان برنامه نویسی پایتون و کتابخانه های Seaborn و Matplotlib آشنا می شویم.
پیشنهاد می شود برای آشنایی بیشتر در صورت تمایل قبل از خواندن ادامه مطلب مقاله های زیر را مطالعه نمایید.
آشنایی با ترسیم داده ها (رسم نمودار) در پایتون
ترسیم داده ها (رسم نمودار) در پایتون با کتابخانه Seaborn
وارد کردن مجموعه داده (Importing Datasets)
import pandas as pd iris = pd.read_csv('iris.csv', names=['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'class']) wine_reviews = pd.read_csv('winemag-data-130k-v2.csv', index_col=0)
نمودار جعبه ای (Boxplot)
نمودار جعبهای یک روش استاندارد برای نمایش توزیع دادهها است که براساس شاخصهای آماری «کوچکترین مقدار» (Minimum)، «چارک اول» (First Quartile -Q1)، «میانه» (Median)، «چارک سوم» (Third Quartile- Q3) و «بزرگترین مقدار» (Maximum) ساخته شده است. همچنین این نمودار میتواند در مورد وجود دادههای پرت (Outlier)، اطلاعاتی خوبی ارائه نماید و مقدار آنها را تعیین کند. ما می توانیم با استفاده از تابع boxplot این نمودار را رسم نماییم.
df = wine_reviews[(wine_reviews['points']>=95) & (wine_reviews['price']<1000)] sns.boxplot('points', 'price', data=df)
نمودار حرارتی (Heat map)
نمودار حرارتی Heat Map یا نقشه رنگی یک نوع تصویرسازی از اطلاعات است که در آن مقدار هر خانه از ماتریس ورودی با یک رنگ نمایش دادهمیشود. این نمودار برای نشان دادن همبستگی ویژگی ها در یک مجموعه داده مناسب می باشد.
در اینجا از کتابخانه های Matplotlib و Seaborn برای ایجاد نمودار حرارتی استفاده نموده ایم.
import numpy as np import matplotlib.pyplot as plt # get correlation matrix corr = iris.corr() fig, ax = plt.subplots() # create heatmap im = ax.imshow(corr.values) # set labels ax.set_xticks(np.arange(len(corr.columns))) ax.set_yticks(np.arange(len(corr.columns))) ax.set_xticklabels(corr.columns) ax.set_yticklabels(corr.columns) # Rotate the tick labels and set their alignment. plt.setp(ax.get_xticklabels(), rotation=45, ha="right", rotation_mode="anchor") # Loop over data dimensions and create text annotations. for i in range(len(corr.columns)): for j in range(len(corr.columns)): text = ax.text(j, i, np.around(corr.iloc[i, j], decimals=2), ha="center", va="center", color="black")
sns.heatmap(iris.corr(), annot=True)
نمودار Faceting
عمل Faceting شکستن تغییرات داده ها در چند نمودار فرعی و ترکیب آن ها به یک شکل واحد است. اگر می خواهید داده ها را در یک نما مشاهده نمایید، Faceting بسیار مفید است. برای استفاده از این رورش باید از تابع FacetGrid استفاده کنیم. مقادیر مجموعه داده و ستون کلاس داده ها را برای تفکیک نمودارها به تابع معرفی می کنیم. سپس باید تابع g.map با تعیین نوع نموداری که می خواهیم نمایش داده شود، را فراخوانی نماییم.
g = sns.FacetGrid(iris, col='class') g = g.map(sns.kdeplot, 'sepal_length')
نمودار جفتی (Pair Plot)
نمودار جفتی با تابع pairplot در کتابخانه Seaborn قابل رسم می باشد. این مجموعه نمودار این امکان را می دهند تا شبکه ای از روابط زوج متغییر را در یک مجموعه داده نمایش دهیم. همانطور که در تصاویر مشاهده می کنید، این روش همواره دو ویژگی را با یکدیگر رسم می نماید. در قطر تصویر نمودار هیستوگرام جهت نمایش پراکندگی داده نمایان می باشد.
sns.pairplot(iris)
نمودار جفتی را می توان با تابع scatter_matrix در کتابخانه pandas نیز بصورت زیر رسم نمایید.
from pandas.plotting import scatter_matrix fig, ax = plt.subplots(figsize=(12,12)) scatter_matrix(iris, alpha=1, ax=ax)
امیدوارم این مقاله مفید بوده باشد.