箱形图(python画箱线图) |
您所在的位置:网站首页 › 自己在家如何画身高图 › 箱形图(python画箱线图) |
学习笔记 目录 箱形图 价值 局限性 Python画图 箱形图如下灰色框里的就是箱形图(英文:Box plot):又称为盒须图、盒式图、盒状图或箱线图,是一种用作显示一组数据分散情况资料的统计图。因型状如箱子而得名。 箱形图最大的优点就是不受异常值的影响,可以以一种相对稳定的方式描述数据的离散分布情况。 五数概括法:即用下面的五个数来概括数据(最小值;第1四分位数(Q1);中位数(Q2);第3四分位数(Q3);最大值),箱形图与之类似。 举个栗子:num=[1,2,3,4,5,6,7,8] 中位数Q2=4.5 下四分分位数Q1=2.75:是怎么计算出来的呢?首先序列长度n=8,(1+n)/4=2.25,说明上四分位数在第2.25个位置数,实际上这个数是不存在的,但我们知道这个位置是在第2个数与第3个数之间的。假设从第2个数到第3个数之间是均匀分布的。那么第2.25个数就是第二个数*0.25+第三个数*0.75,即2*0.25+3*0.75=0.5+2.25=2.75。 下四分位数Q3=6.25:这个下四分位数所在位置计算方法同上,只不过是(1+n)/4*3=6.75,这个是个介于第六个位置与第七个位置之间的地方。对应的具体的值是0.75*6+0.25*7=6.25。 四分位距IQR=Q3-Q1,上限=(Q3+1.5IQR,max)取最小,下限=(Q1-1.5IQR ,min)取最大。 异常值:比如num=[1,2,3,4,5,6,7,8,20],20会被识别为异常值。 价值 序号价值备注1直观明了地识别数据批中的异常值箱线图判断异常值的标准以四分位数和四分位距为基础,四分位数具有一定的耐抗性,多达25%的数据可以变得任意远而不会很大地扰动四分位数,所以异常值不会影响箱形图的数据形状,箱线图识别异常值的结果比较客观。由此可见,箱线图在识别异常值方面有一定的优越性。2利用箱线图判断数据批的偏态和尾重对于标准正态分布的样本,只有极少值为异常值。异常值越多说明尾部越重,自由度越小(即自由变动的量的个数); 而偏态表示偏离程度,异常值集中在较小值一侧,则分布呈左偏态;异常值集中在较大值一侧,则分布呈右偏态。3利用箱线图比较几批数据的形状同一数轴上,几批数据的箱线图并行排列,几批数据的中位数、尾长、异常值、分布区间等形状信息便昭然若揭。如上图,可直观得看出第三季度各分公司的销售额大体都在下降。 import numpy as np import pandas as pd import matplotlib.pyplot as plt data = { 'China': [1000, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2500], 'America': [1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100], 'Britain': [1000, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000], "Russia": [800, 1000, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900] } df = pd.DataFrame(data) df.plot.box(title="Consumer spending in each country") plt.grid(linestyle="--", alpha=0.3) plt.show()各国的消费(代码来源于https://www.cnblogs.com/wwxbi/p/9032248.html) 局限性不能精确地衡量数据分布的偏态和尾重程度;对于批量比较大的数据,反映的信息更加模糊以及用中位数代表总体评价水平有一定的局限性 Python画图在pyton命令行直接运行就OK import numpy as np import pandas as pd import matplotlib.pyplot as plt data = [1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100] df = pd.DataFrame(data) df.plot.box(title="hua tu") plt.grid(linestyle="--", alpha=0.3) plt.show()箱形图描述数据 五数概括法:描述数据 import numpy as np import pandas as pd import matplotlib.pyplot as plt data = [1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100] df = pd.DataFrame(data) print(df.describe()) count 10.000000 # 条数 mean 1650.000000 # 均值 std 302.765035 # 标准差 min 1200.000000 # 最小值 25% 1425.000000 # 下四分位 50% 1650.000000 # 中位数 75% 1875.000000 # 上四分位 max 2100.000000 # 最大值
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |