异常数据处理-箱型图

1.箱型图

它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较

 

 

 2.适合数据类型

针对连续型变量

 

 

 图表解读:

1.箱子的大小取决于数据的四分位距,即IQR = Q3 - Q1(Q3: 75%分位数 , Q1: 25%分位数 , Q3和Q1为四分位数)。50%的数据集中于箱体,若箱体太大即数据分布离散,数据波动较大,箱体小表示数据集中。

2.箱子的上边为上四分位数Q3,下边为下四分位数Q1,箱体中的横线为中位数Q2(50%分位数)

3.箱子的上触须为数据的最大值Max,下触须为数据的最小值Min(注意是非离群点的最大最小值,称为上下相邻值)

4.若数据值 > Q3+1.5 * IQR(上限值) 或 数据值 < Q1-1.5 * IQR(下限值) ,均视为异常值。数据值 > Q3+3 * IQR 或 数据值 < Q1-3 * IQR ,均视为极值。在实际应用中,不会显示异常值与极值的界限,而且一般统称为异常值。

  • 也表明上下触须不一定是数据的最大最小值,
  • (1)若数据的最大值比上限值小的,那么上触须顶点就是观察到的最大的;若数据的最大值比上限值大的,那么上触须顶点就是上限值,观察到的最大值就是异常点。
  • (2)若数据的最小值比下限值大的,那么下触须顶点就是观察到的最小值;若数据的最小值比下限值小的,那么下触须顶点就是下限值,观察到的最小值就是异常点。
  • 上述情况复杂,在线范围外的,直接理解成异常值即可

3.python中plt.boxplot()使用

下面是plt.boxplot()的参数

plt.boxplot(x,
notch=None,
sym=None,
vert=None,
whis=None,
positions=None,
widths=None,
patch_artist=None,
bootstrap=None,
usermedians=None,
conf_intervals=None,
meanline=None,
showmeans=None,
showcaps=None,
showbox=None,
showfliers=None,
boxprops=None,
labels=None,
flierprops=None,
medianprops=None,
meanprops=None,
capprops=None,
whiskerprops=None,
manage_xticks=True,
autorange=False,
zorder=None,
hold=None,
data=None)

    • x:指定要绘制箱线图的数据;
    • notch:是否是凹口的形式展现箱线图,默认非凹口;
    • sym:指定异常点的形状,默认为+号显示;
    • vert:是否需要将箱线图垂直摆放,默认垂直摆放;
    • whis:指定上下须与上下四分位的距离,默认为1.5倍的四分位差;
    • positions:指定箱线图的位置,默认为[0,1,2…];
    • widths:指定箱线图的宽度,默认为0.5;
    • patch_artist:是否填充箱体的颜色;
    • meanline:是否用线的形式表示均值,默认用点来表示;
    • showmeans:是否显示均值,默认不显示;
    • showcaps:是否显示箱线图顶端和末端的两条线,默认显示;
    • showbox:是否显示箱线图的箱体,默认显示;
    • showfliers:是否显示异常值,默认显示;
    • boxprops:设置箱体的属性,如边框色,填充色等;
    • labels:为箱线图添加标签,类似于图例的作用;
    • filerprops:设置异常值的属性,如异常点的形状、大小、填充色等;
    • medianprops:设置中位数的属性,如线的类型、粗细等;
    • meanprops:设置均值的属性,如点的大小、颜色等;
    • capprops:设置箱线图顶端和末端线条的属性,如颜色、粗细等;
    • whiskerprops:设置须的属性,如颜色、粗细、线的类型等;

例子

import numpy as np
import matplotlib.pyplot as plt
plt.style.use("ggplot")
plt.rcParams["font.sans-serif"]=["SimHei"] #正常显示中文标签
plt.rcParams["axes.unicode_minus"]=False #正常显示负号
np.random.seed(800) #设置随机种子
data=np.random.randint(1,100,55)
plt.figure(figsize=(5,6)) #设置图形尺寸大小
plt.boxplot(data,
notch=False, #中位线处不设置凹陷
widths=0.2, #设置箱体宽度
medianprops={'color':'red'}, #中位线设置为红色
boxprops=dict(color="blue"), #箱体边框设置为蓝色
labels="A", #设置标签
whiskerprops = {'color': "black"}, #设置须的颜色,黑色
capprops = {'color': "green"}, #设置箱线图顶端和末端横线的属性,颜色为绿色
flierprops={'color':'purple','markeredgecolor':"purple"} #异常值属性,这里没有异常值,所以没表现出来
)
plt.title("55个1-100的随机整数的箱线图",fontsize="xx-large",color="#DE0052")
plt.show()

posted @   Q星星  阅读(1168)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示