箱形图(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    # 最大值

 

  • 87
    点赞
  • 322
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
要使用Python箱形图,可以使用matplotlib库中的boxplot函数来实现。下面是一个示例代码来展示如何使用Python箱形图: ``` import numpy as np import matplotlib.pyplot as plt # 创建数据 data = np.random.normal((3, 5, 4), (1.25, 1.00, 1.25), (100, 3)) # 设置图形大小和字体样式 plt.figure(figsize=(10, 8)) plt.rcParams['font.family'] = 'SimHei' plt.rcParams['axes.unicode_minus'] = False # 绘制箱形图 plt.subplot(121) plt.title('标准情况下') view = plt.boxplot(data) plt.subplot(122) plt.title('添widths') view = plt.boxplot(data, widths=[2, 0.5, 0.7]) plt.show() ``` 上述代码中,首先导入numpy和matplotlib.pyplot库。然后,使用numpy生成随机数据作为箱形图的数据。接下来,可以设置图形的大小和字体样式。然后,在subplot中绘制两个子图,分别展示了标准情况下和添widths参数的箱形图。最后,使用plt.show()函数显示绘制的图形。 通过调整参数,可以实现不同的效果。比如,可以使用vert参数(默认为True)来控制箱形图是竖直还是水平显示,可以使用whis参数来控制箱形图的须的长度等等。下面是一个示例代码来展示如何使用这些参数: ``` import numpy as np import matplotlib.pyplot as plt # 创建数据 data = np.random.normal((3, 5, 4), (1.25, 1.00, 1.25), (100, 3)) # 设置图形大小和字体样式 plt.figure(figsize=(10, 8)) plt.rcParams['font.family'] = 'SimHei' plt.rcParams['axes.unicode_minus'] = False # 绘制箱形图 plt.subplot(121) plt.title('vert=True') view = plt.boxplot(data, vert=True) plt.subplot(122) plt.title('vert=False') view = plt.boxplot(data, vert=False) plt.show() ``` 上面的代码中,在绘制箱形图时,添了vert参数来控制箱形图的显示方向。当vert为True时,表示箱形图竖直显示;当vert为False时,表示箱形图水平显示。 除了vert参数之外,还可以通过设置whis参数来控制箱形图的须的长度。下面是一个示例代码来展示如何使用whis参数: ``` import numpy as np import matplotlib.pyplot as plt # 创建数据 data = np.random.normal((3, 5, 4), (1.25, 1.00, 1.25), (100, 3)) # 设置图形大小和字体样式 plt.figure(figsize=(10, 8)) plt.rcParams['font.family'] = 'SimHei' plt.rcParams['axes.unicode_minus'] = False # 绘制箱形图 plt.subplot(121) plt.title('标准情况下') view = plt.boxplot(data) plt.subplot(122) plt.title('添whis') view = plt.boxplot(data, whis=1) plt.show() ``` 上面的代码中,使用whis参数来设置箱形图须的长度。默认情况下,whis为1.5,即须的长度为1.5倍的四分位距。通过改变whis的值,可以调整箱形图须的长度。 这些是使用Python绘制箱形图的一些基本方法和参数。可以根据具体需求进行调整和定制,以满足自己的绘图需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python 绘制箱型图](https://blog.csdn.net/KIKI_ZSH/article/details/123419113)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值