箱线图中的计算及python绘图

一、定义

箱形图(英文:Box plot),又称为盒须图、盒式图、盒状图或箱线图,是一种用作显示一组数据分散情况资料的统计图。因型状如箱子而得名。在各种领域也经常被使用,常见于品质管理,快速识别异常值。

  • 箱形图最大的优点就是不受异常值的影响,能够准确稳定地描绘出数据的离散分布情况,同时也利于数据的清洗。

二、五大因“数”

我们一组序列数为例:12,15,17,19,20,23,25,28,30,33,34,35,36,37讲解这五大因“数”

在这里插入图片描述

1、下四分位数Q1

(1)确定四分位数的位置。Qi所在位置=(n+1)/4,其中i=1,2,3。n表示序列中包含的项数。

(2)根据位置,计算相应的四分位数。

例中:

Q1所在的位置=(14+1)/4=3.75,

Q1=0.25×第三项+0.75×第四项=0.25×17+0.75×19=18.5;

2、中位数(第二个四分位数)Q2

中位数,即一组数由小到大排列处于中间位置的数。若序列数为偶数个,该组的中位数为中间两个数的平均数。

例中:

Q2所在的位置=2(14+1)/4=7.5,

Q2=0.5×第七项+0.5×第八项=0.5×25+0.5×28=26.5

3、上四分位数Q3

计算方法同下四分位数。

例中:

Q3所在的位置=3(14+1)/4=11.25,

Q3=0.75×第十一项+0.25×第十二项=0.75×34+0.25×35=34.25。

4、上限

上限是非异常范围内的最大值。

四分位距IQR=Q3-Q1

上限=Q3+1.5IQR

5、下限

下限是非异常范围内的最小值。

下限=Q1-1.5IQR

其他情况说明:

计算四分位数首先要确定Q1、Q2、Q3的位置(n表示数字的总个数):

  • Q1的位置=(n+1)/4
  • Q2的位置=(n+1)/2
  • Q3的位置=3(n+1)/4

对于数字个数为奇数的,其四分位数比较容易确定。例如,数字“5、47、48、15、42、41、7、39、45、40、35”共有11项,由小到大排列的结果为“5、7、15、35、39、40、41、42、45、47、48”,计算结果如下:

  • Q1的位置=(11+1)/4=3,该位置的数字是15。
  • Q2的位置=(11+1)/2=6,该位置的数字是40。
  • Q3的位置=3(11+1)/4=9,该位置的数字是45。

而对于数字个数为偶数的,其四分位数确定起来稍微繁琐一点。例如,数字“8、17、38、39、42、44”共有6项,位置计算结果如下:

  • Q1的位置=(6+1)/4=1.75
  • Q2的位置=(6+1)/2=3.5
  • Q3的位置=3(6+1)/4=5.25

这时的数字以数据连续为前提,由所确定位置的前后两个数字共同确定。例如,Q2的位置为3.5,则由第3个数字38和第4个数字39共同确定,计算方法是:38+(39-38)×3.5的小数部分,即38+1×0.5=38.5。该结果实际上是38和39的平均数。

同理,Q1、Q3的计算结果如下:

  • Q1 = 8+(17-8)×0.75=14.75
  • Q3 = 42+(44-42)×0.25=42.5

三、python代码

示例1

#首先导入基本的绘图包
import matplotlib.pyplot as plt
import numpy as np
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["python程序设计"]=[85,78,81,95,70,67,82,72,80,81,77]

 #用matplotlib来画出箱型图
plt.boxplot(x=df.values,labels=df.columns,whis=1.5)
plt.show()

 #用pandas自带的画图工具更快
df.boxplot()
plt.show()

示例2

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np

# 防止乱码
mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False

x = np.array([12,15,17,19,20,23,25,28,30,33,34,35,36,37])

plt.boxplot(x)
plt.xticks([1],["箱线图"])
plt.ylabel("数值")
plt.title("普通箱线图")
plt.grid(axis="y",ls=":",lw=1,color="gray",alpha=0.4)
plt.show()
  • 8
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 在Pandas,可以使用`describe()`函数来获取数据的基本统计信息,如最大值、最小值、均值、位数和四分位数等。而箱线图就是基于四分位数来绘制的,因此我们可以利用`describe()`函数来获取四分位数,并根据四分位数来去除异常值。 具体地,我们可以使用以下代码来去除异常值: ```python import pandas as pd import numpy as np # 生成随机数据 data = pd.DataFrame(np.random.randn(100, 4), columns=['A', 'B', 'C', 'D']) # 获取四分位数 q1 = data.quantile(q=0.25) q3 = data.quantile(q=0.75) iqr = q3 - q1 # 去除异常值 data = data[~((data < (q1 - 1.5 * iqr)) | (data > (q3 + 1.5 * iqr))).any(axis=1)] # 绘制箱线图 data.plot(kind='box') ``` 这段代码首先生成了一个随机数据集,然后使用`quantile()`函数获取数据的四分位数,接着计算出IQR(即四分位距),最后使用`any()`函数和`~`符号去除了异常值,并绘制了箱线图。 ### 回答2: Pandas是一个开源的Python数据分析库,它提供了丰富的数据处理和分析工具。而箱线图是一种可视化工具,用于显示数据的分布情况以及异常值的存在。 绘制箱线图的第一步是先获取数据并使用Pandas进行数据清洗和预处理。在数据清洗过程,可以使用Pandas的函数来处理缺失值或异常值。 在Pandas,可以使用`read_csv()`函数导入数据,并使用`dropna()`函数删除含有缺失值的行或列。接下来,使用`describe()`函数来获取数据的统计信息,包括均值、标准差、最小值、最大值等。 绘制箱线图需要用到Matplotlib库,而Pandas对Matplotlib进行了封装,因此可以直接通过Pandas的绘图函数来绘制箱线图。使用`plot()`函数,并将参数`kind='box'`设置为绘制箱线图。 由于箱线图能够展示数据的分布情况和异常值,所以绘制好箱线图后,我们可以根据箱线图的异常值来进行处理。一般来说,箱线图被定义为异常值的数据是根据统计学的常用方法,例如Tukey's fences或三个标准差等。 对于异常值的处理,可以根据业务需求来选择是删除异常值、替换为其他值或者保留原样。如果要删除异常值,可以使用Pandas的`drop()`函数或者通过布尔索引进行过滤。如果要替换异常值,可以使用Pandas的`fillna()`函数或者其他相关函数进行处理。 综上所述,Pandas提供了强大的数据处理和分析功能,而通过使用Pandas绘制箱线图可以帮助我们快速发现异常值并进行处理。 ### 回答3: pandas是一个功能强大的Python库,用于数据处理和分析。它提供了一个方便的功能来可视化数据,其之一就是绘制箱线图箱线图是一种可视化工具,用于显示数据的分布情况和异常值。它显示了数据的位数、上下四分位数和上下边界。通过绘制箱线图,可以很容易地检测到是否存在异常值。 要使用pandas绘制箱线图并去除异常值,可以按照以下步骤进行操作: 1. 导入pandas库和绘图库(如matplotlib)。 ```python import pandas as pd import matplotlib.pyplot as plt ``` 2. 读取数据源。可以从文件读取数据,如CSV文件,或者直接使用numpy数组。 ```python data = pd.read_csv('data.csv') ``` 3. 创建一个箱线图。可以使用`boxplot()`函数创建箱线图,并通过指定数据列来绘制。 ```python plt.figure() data.boxplot(column=['column1', 'column2', ...]) ``` 4. 去除异常值。可以通过设定箱线图的上下边界来去除异常值。一般来说,异常值可以定义为超过上下四分位数一定倍数的值。默认情况下,pandas将上下边界设为1.5倍的四分位距。 ```python plt.figure() data.boxplot(column=['column1', 'column2', ...], whis=1.5) ``` 5. 显示绘制结果。 ```python plt.show() ``` 通过以上步骤,就可以使用pandas绘制箱线图,并去除异常值。根据箱线图的结果,我们可以很容易地观察到数据的分布情况和异常值,以便进行进一步的数据分析和处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_44322234

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值