数据可视化之箱形图

箱形图简介

箱形图(英文: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()

参数说明:

  • 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

参考链接:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.boxplot.html#matplotlib.pyplot.boxplot

代码示例:

pandas.DataFrame.boxplot()

参数说明:

  • 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().

参考链接:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.boxplot.html

使用示例:

seaborn.boxplot()

参数说明:

  • 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()中的其他参数

参考链接:https://seaborn.pydata.org/generated/seaborn.boxplot.html

使用示例:

微信支付标点符 wechat qrcode
支付宝标点符 alipay qrcode

分层时间记忆HTM学习笔记

分层时间记忆算法(Hierarchical Temporal Memory),全称HTM Cortical L

Expedia异常检测项目Adaptive Alerting

Adaptive Alerting(AA)是Expedia开源的异常检测项目,整个项目也是完整一套监控体系,包

格兰杰因果关系检验学习笔记

格兰杰因果关系检验简介 格兰杰因果关系检验(英语:Granger causality test)是一种假设检定

发表评论

电子邮件地址不会被公开。 必填项已用*标注