数据可视化之箱形图 – 标点符 您所在的位置:网站首页 excel怎么添加箱式图的图例 数据可视化之箱形图 – 标点符

数据可视化之箱形图 – 标点符

2023-07-15 10:28| 来源: 网络整理| 查看: 265

数据, 术→技巧

数据可视化之箱形图 钱魏Way · 2020-10-05 · 10,133 次浏览 箱形图简介

箱形图(英文:Box plot),又是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。箱形图于1977年由美国著名统计学家约翰·图基(John Tukey)发明。它能显示出一组数据的最大值、最小值、中位数、及上下四分位数。

四分位数

四分位数(Quartile)是统计学中分位数的一种,即把所有数值由小到大分成四等份,处于三个分割点位置的数值就是四分位数。

第一四分位数($Q_1$):也称下四分位数(Lower Quartile),等于该样本中所有数值由小到大排列后第25%的数字。 第二四分位数($Q_2$):也称中位数(Middle Quartile or Median),等于该样本中所有数值由小到大排列后第50%的数字。 第三四分位数($Q_3$):也称上四分位数(Upper Quartile),等于该样本中所有数值由小到大排列后第75%的数字。

$Q_3$和$Q_1$的差距称为四分位距(InterQuartile Range, IQR):

$${\Delta}Q = Q_3-Q_1$$

上界/下界

上界/下界,英文名为Upper Whisker和Lower Whisker,有时又被称为最大值和最小值,但是这样容易引起误解,因为它们并非数据集里面的最大值或最小值,而是去除所有离群值和极端值之后的最小值和最大值。它们定义和计算方式如下:

$$\text{Lower Whisker} = Q_1 – 1.5{\Delta}Q$$

$$\text{Upper Whisker} = Q_3 + 1.5{\Delta}Q$$

离群值与极端值

离群值(mild outlier)和极端值(extreme outlier)有时统称为离群值或异常值(outlier)。再理解离群值和极端值之前我们先要理解内限和外限:

内限:$Q_1 – 1.5{\Delta}Q$和$Q_3 + 1.5{\Delta}Q$ 外限:$Q_1 – 3{\Delta}Q$和$Q_3 + 3{\Delta}Q$

处于内限以外位置的点表示的数据都是异常值,其中在内限与外限之间的异常值为温和的异常值 mild outliers,在外限以外的为极端的异常值 extreme outliers。

箱形图的Python实现

matplotlib.pyplot.boxplot()

matplotlib.pyplot.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, bootstrap=None, usermedians=None, conf_intervals=None, meanline=None, showmeans=None, showcaps=None, showbox=None, showfliers=None, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None, manage_ticks=True, autorange=False, zorder=None, *, data=None)

参数说明:

x: 数组或者向量序列,指定要绘制箱线图的数据 notch:是否是凹口箱线图,默认为否。凹口表示中值附近的置信区间 sym:指定异常点的形状,默认是+号显示 vert:是否需要将箱线图垂直摆放,默认垂直摆放 whis:指定上下须跟上下四分位的距离,默认是5倍四分位差 positions:指定箱线图的位置,默认为[0,1,2…] widths:设置每个框的宽度,标量或者序列,默认5 patch_artist:默认是用二维线性绘制(Line2D artist) bootstrap:是否为凹口位置的中位数设置置信区间 usermedians:设置每个元素的中位数,默认由matplotlib计算 conf_intervals:置信区间 meanline:是否用线的形式表示均值,默认用点来表示 showmeans:是否显示均值,默认不显示 showcaps:是否显示箱线图顶端和末端的两条线,默认显示 showbox:是否显示箱线图的箱体,默认显示 showfliers:是否显示异常值,默认显示 boxprops:设置箱体的属性,如边框色,填充色等 labels:为箱线图添加标签,类似于图例的作用 filerprops:设置异常值的属性,如异常点的形状、大小、填充色等 medianprops:设置中位数的属性,如线的类型、粗细等 meanprops:设置均值的属性,如点的大小、颜色等 capprops:设置箱线图顶端和末端线条的属性,如颜色、粗细等 whiskerprops:设置须的属性,如颜色、粗细、线的类型等 manage_ticks:调整tick的位置,默认True autorange:是否用线的形式来表示均值,默认是点 zorder:设置箱线图的zorder

参考链接:matplotlib.pyplot.boxplot.html#matplotlib.pyplot.boxplot

代码示例:

import matplotlib.pyplot as plt import pandas as pd # 添加成绩表 plt.style.use("ggplot") plt.rcParams['axes.unicode_minus'] = False plt.rcParams['font.sans-serif'] = ['SimHei'] # 新建一个空的DataFrame df = pd.DataFrame() df["英语"] = [76, 90, 97, 71, 70, 93, 86, 83, 78, 85, 81] df["经济数学"] = [65, 95, 51, 74, 78, 63, 91, 82, 75, 71, 55] df["西方经济学"] = [93, 81, 76, 88, 66, 79, 83, 92, 78, 86, 78] df["计算机应用基础"] = [85, 78, 81, 95, 70, 67, 82, 72, 80, 81, 77] plt.boxplot(x=df.values, labels=df.columns, whis=1.5) plt.show()

pandas.DataFrame.boxplot()

DataFrame.boxplot(column=None, by=None, ax=None, fontsize=None, rot=0, grid=True, figsize=None, layout=None, return_type=None, **kwds)

参数说明:

column:默认为None,输入为str 或由str构成的list,其作用是指定要进行箱型图分析的列 by:默认为None,str or array-like,其作用为pandas的group by,通过指定by=‘columns’,可进行多组合箱型图分析 ax:matplotlib.axes.Axes的对象,没有太大作用 fontsize:箱型图坐标轴字体大小 rot:箱型图坐标轴旋转角度 grid:箱型图网格线是否显示 figsize:箱型图窗口尺寸大小 layout:必须配合by 一起使用,类似于subplot 的画布分区域功能 return_type:指定返回对象的类型,默认为None,可输入的参数为‘axes’,‘dict’,‘both’,当与by一起使用是,返回的对象为Series或array(for return_type = None) **kwds:All other plotting keyword arguments to be passed to matplotlib.pyplot.boxplot().

参考链接:pandas.DataFrame.boxplot

使用示例:

import matplotlib.pyplot as plt import pandas as pd # 添加成绩表 plt.style.use("ggplot") plt.rcParams['axes.unicode_minus'] = False plt.rcParams['font.sans-serif'] = ['SimHei'] # 新建一个空的DataFrame df = pd.DataFrame() df["英语"] = [76, 90, 97, 71, 70, 93, 86, 83, 78, 85, 81] df["经济数学"] = [65, 95, 51, 74, 78, 63, 91, 82, 75, 71, 55] df["西方经济学"] = [93, 81, 76, 88, 66, 79, 83, 92, 78, 86, 78] df["计算机应用基础"] = [85, 78, 81, 95, 70, 67, 82, 72, 80, 81, 77] df.boxplot() plt.show()

seaborn.boxplot()

seaborn.boxplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, width=0.8, dodge=True, fliersize=5, linewidth=None, whis=1.5, ax=None, **kwargs)

参数说明:

x:指定x轴的分类名称 y:指定y轴的分类名称 hue:指定第二次分类的数据类别(用颜色区分) data:数组或数组列表 order:显式指定指定第二次分类顺序 hue_order:显式指定分类顺序 orient:设置图的绘制方向(垂直或水平),v或者h color:matplotlib 颜色 palette:调色板名称,list类别或者字典,用于对数据不同分类进行颜色区别 saturation:控制用于绘制颜色的原始饱和度的比例。通常大幅填充在轻微不饱和的颜色下看起来更好,如果您希望绘图颜色与输入颜色规格完美匹配可将其设置为1。 width:不使用色调嵌套时完整元素的宽度,或主要分组变量一个级别的所有元素的宽度。 dodge:若设置为True则沿着分类轴,将数据分离出来成为不同色调级别的条带,否则,每个级别的点将相互叠加 fliersize:用于表示异常值观察的标记的大小。 linewidth:设置构图元素的线宽度 whis:控制在超过高低四分位数时 IQR 的比例,因此需要延长绘制的触须线段。超出此范围的点将被识别为异常值。 ax:matplotlib 轴,可选 **kwargs:pyplot.boxplot()中的其他参数

参考链接:seaborn.boxplot

使用示例:

import matplotlib.pyplot as plt import pandas as pd import seaborn as sns # 添加成绩表 plt.style.use("ggplot") plt.rcParams['axes.unicode_minus'] = False plt.rcParams['font.sans-serif'] = ['SimHei'] # 新建一个空的DataFrame df = pd.DataFrame() df["英语"] = [76, 90, 97, 71, 70, 93, 86, 83, 78, 85, 81] df["经济数学"] = [65, 95, 51, 74, 78, 63, 91, 82, 75, 71, 55] df["西方经济学"] = [93, 81, 76, 88, 66, 79, 83, 92, 78, 86, 78] df["计算机应用基础"] = [85, 78, 81, 95, 70, 67, 82, 72, 80, 81, 77] sns.boxplot(data=df) plt.show()

相关文章: 时间序列预测之ARIMA Scikit-Learn中的异常检测算法 机器学习算法之XGBoost 时序异常检测实战:酒店价格 高维数据降维及可视化工具t-SNE 可视化 箱形图 统计学


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有