失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 用python绘制箱线图

用python绘制箱线图

时间:2022-05-20 01:28:37

相关推荐

用python绘制箱线图

箱线图作用-python实践-异常值识别

文章目录

一、别名二、历史三、定义四、作用(1)识别异常值(2)判断偏态(3)评估数据集中程度五、用python绘制箱线图参考

一、别名

箱须图、箱形图、盒图、盒须图、盒式图、盒状图

Box plot、Box-whisker Plot

二、历史

箱线图因形状如箱子而得名。1977年,美国著名数学家John W. Tukey首先在他的著作《Exploratory Data Analysis》中介绍了箱形图。

三、定义

假设一组数据有n个数,将它们从小到大排列,分为四等分。位于第25%(n+1)位置的数字是第一四分位数Q1。位于第50%(n+1)位置的数字是第二四分位数Q2,也是中位数。位于第75%(n+1)位置的数字是第三四分位数Q3。第三四分位数与第一四分位数的差值称为四分位距IQR,IQR=Q3-Q1。

在箱线图中,箱子的中间有一条线,代表了数据的中位数。箱子的上底是第三四分位数Q3,下底是第一四分位数Q1。所以箱体包含了50%的数据。箱体的上面有一条线,值为Q3+1.5IQR,称为上限。箱体的下面也有一条线,值为Q1-1.5IQR,称为下限。上限是非异常范围的最大值,下限是非异常范围的最小值,即正常范围是[Q1-1.5IQR,Q3+1.5IQR],也是[2Q1-1.5Q3,2Q3-1.5Q1]。超过该正常范围的就是异常值

若25%(n+1),50%(n+1),75%(n+1)为整数,则取该位置的数值为四分位数。若其中之一为小数,则按照以下规则计算:

假设25%(n+1)=4.5,则Q1=0.25×第4项+0.75×第5项;

假设50%(n+1)=4.5,则Q2=0.5×第4项+0.5×第5项;

假设75%(n+1)=4.5,则Q3=0.75×第4项+0.25×第5项;

四、作用

箱线图在使用场景上最常见的是用于质量管理人事测评探索性数据分析等统计分析活动。

(1)识别异常值

异常值是指数据中远离其他大部分值的数据。

箱线图的大小是由数据升序排列后,中间的50%个数据决定的。因此前25%个数据和后25%个数据都没法影响箱线图,它们可以变得任意远,但不会扰动四分位值,所以异常值不会影响箱线图的形状。

(2)判断偏态

偏态是指与正态分布相对,非对称分布的偏斜状态。若平均数大于众数,则为右偏态(正偏态);若平均数小于众数,则为左偏态(负偏态)。

若数据集是标准正态分布,则中位数是位于Q1和Q3中间的,箱线图的中间线恰好位于上底和下底的正中央。若中位数偏向于下底,则数据集倾向于左偏态;若中位数偏向于上底,则数据集倾向于右偏态。

(3)评估数据集中程度

箱线图的宽度一定程度反映了数据的波动程度。因为箱线图包含中间50%的数据,若它越扁,则说明数据较为集中;若它越宽,则说明数据较为分散。

五、用python绘制箱线图

在线测试地址:/index.php/Kaka/Python/query/name/boxplot

实例1:普通例子

#!/usr/bin/python3#code-python(3.6)import matplotlib.pyplot as pltx = [1,2,3,5] #数据集plt.boxplot(x) #垂直显示箱线图plt.show()#显示该图

实例2:水平显示箱线图

#!/usr/bin/python3#code-python(3.6)import matplotlib.pyplot as pltx = [1,2,3,5] #数据集plt.boxplot(x,vert = False) #水平显示箱线图plt.show()#显示该图

实例3:并列画多个箱线图

#!/usr/bin/python3#code-python(3.6)import matplotlib.pyplot as pltx = [1,2,3,5] #数据集y = [4,3,7,9]z= [2,4,8]plt.boxplot((x,y,z),labels=('x','y','z'))plt.show()

实例4:对数据框中每列画箱线图-pandas

#!/usr/bin/python3#code-python(3.6)import pandas as pd #导入pandasimport matplotlib.pyplot as pltdt = pd.DataFrame({#用字典去建立数据表,第一列的列名a,列值是[1,2,3,4,5];第二列的列名是b,列值是 [5, 6, 7, 8],以此类推'a': [1, 2, 3, 4],'b': [5, 6, 7, 8],'c': [9, 10, 11, 12],'d': [13, 14, 15, 16]})dt.boxplot() #对数据框中每列画箱线图,pandas自己有处理的过程,很方便plt.show()

实例5:对数据框中每列画箱线图-matplotlib

#!/usr/bin/python3#code-python(3.6)import pandas as pd #导入pandasimport matplotlib.pyplot as pltdt = pd.DataFrame({#用字典去建立数据表,第一列的列名a,列值是[1,2,3,4,5];第二列的列名是b,列值是 [5, 6, 7, 8],以此类推'a': [1, 2, 3, 4],'b': [5, 6, 7, 8],'c': [9, 10, 11, 12],'d': [13, 14, 15, 16]})#用matplotlib来画出箱型图plt.boxplot(x=dt.values,labels=dt.columns,whis=1.5) #columns列索引,values所有数值plt.show()

参考

/a/26877_434937 5分钟包你搞懂箱形图分析!

/a/218322591_416207 不会数学统计没关系——5分钟教你轻松掌握箱线图 | 图表家族#24

如果觉得《用python绘制箱线图》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。