بلاگ

نمودار جعبه‌ای (boxplot) چیست؟

نمودار جعبه ای

تصویر بالا، نمایشگر یک نمودار جعبه‌ای (boxplot) است. نمودار جعبه‌ای یک روش استاندارد برای نمایش توزیع داده‌ها بر اساس پنج عدد می‌باشد:

  • Minimum – مینیمم
  • First quartile (Q1) – چارک اول
  • Median – میانه
  • Third quartile (Q3) – چارک سوم
  • Maximum – ماکزیمم

این نمودار می‌تواند در مورد داده‌های پرت (outliers) و مقادیر آن‌ها به شما اطلاعاتی بدهد. همچنین اطلاعاتی در مورد فشردگی و یا متقارن بودن داده‌ها نیز به شما می‌دهد.

باکس پلات چیست؟

برای بعضی از توزیع‌ها / مجموعه داده‌ها، شما به اطلاعاتی فراتر از گرایشات مرکزی (میانه، میانگین و مد) نیاز دارید.

شما باید اطلاعات مربوط به تنوع (variability) یا توزیع (dispersion) داده‌ها را داشته باشید. نمودار جعبه‌ای نموداری است که به شما نشان می‌دهد که چگونه مقادیر داده‌ها گسترش می‌یابد. اگرچه نمودار جعبه‌ای در مقایسه با نمودار هیستوگرام (histogram) یا نمودار چگالی (density plot) ممکن است ابتدایی باشد، اما مزیت آن این است که فضای کمتری را در بر می‌گیرد که زمانیکه در حال مقایسه توزیع بین گروه‌ها یا دیتاست‌های زیادی هستیم، مفید است.

میانه (Q2 – 50th Percentile): عدد وسط مجموعه‌ای از اعداد مرتب شده بر اساس مقدار آنها.

چارک اول (Q1 – 25th Percentile): عدد وسط بین کوچک‌ترین عدد و میانه.

چارک سوم (Q3 – 75th Percentile): عدد وسط بین میانه و بزرگ‌ترین عدد.

دامنه میان چارکی (IQR – interquartile range): دامنه بین صدک ۲۵ ام تا ۷۵ ام.

ویسکرز (whiskers): با رنگ آبی نشان داده شده است.

داده‌های پرت (outliers): با دایره‌های سبز نشان داده شده است.

مقدار ماکزیمم: Q3 + 1.5*IQR

مقدار مینیمم: Q1 -1.5*IQR

رسم و تفسیر نمودار جعبه‌ای

بدیهی است که شما همیشه یک توزیع نرمال برای باکس پلات نخواهید داشت. بیایید از مجموعه اطلاعات Wisconsin Cancer Breast Cancer برای نشان دادن نحوه استفاده از نمودار جعبه‌ای در داده‌های واقعی استفاده کنیم. می‌توانید مجموعه داده‌ها را از اینجا دانلود کنید.

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

# Put dataset on my github repo
df = pd.read_csv(‘https://raw.githubusercontent.com/mGalarnyk/Python_Tutorials/master/Kaggle/BreastCancerWisconsin/data/data.csv’)

رسم نمودار جعبه‌ای

نمودار جعبه‌ای زیر برای آنالیز رابطه بین یک ویژگی کتگوریکال (malignant tumor یا benign tumor) و یک ویژگی پیوسته (area_mean) استفاده می‌شود.

چندین روش برای نمایش یک نمودار جعبه‌ای با استفاده از پایتون وجود دارد. شما می‌توانید نمودار جعبه‌ای را از طریق seaborn، یا matplotlib و یا pandas رسم کنید.

seaborn

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

sb.boxplot(x=’diagnosis’, y=’area_mean’, data=df)

matplotlib

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

malignant = df[df[‘diagnosis’]==’M’][‘area_mean’]
benign = df[df[‘diagnosis’]==’B’][‘area_mean’]
fig = plt.figure()
ax = fig.add_subplot(111)
ax.boxplot([malignant,benign], labels=[‘M’, ‘B’])

pandas

df.boxplot(column = ‘area_mean’, by = ‘diagnosis’);
plt.title(”)

تفسیر نمودار جعبه‌ای

با استفاده از این نمودار، می‌توانیم محدوده و توزیع area_mean را برای تشخیص تومورهای بدخیم (malignant) و خوش خیم (benign) مقایسه کنیم. مشاهده میکنیم که area_mean برای تومور بدخیم تنوع بیشتری دارد و همچنین داده‌های پرت بزرگ‌تری نیز برای تومور بدخیم وجود دارد.

منبع: این لینک

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

دیدگاهتان را بنویسید