• 2022-08-16


    1.今天做画箱线图需求,发现有个问题,同事给我的图,没有离群点,而我用pandas,matplotlib画的都有离群点,于是有点懵逼,不知道哪个对,于是只能一通搜索,后来发现这块确实有分歧,博客上搜的一个图,对于箱线图的解释,这里面是有异常值的解释的,原来我看,貌似没有异常值这个,只有最大最小值,但是目前绘图库里貌似都是新的算法和解释了。

     关于异常值的判断标准

    某些文档中,异常值分为 温和异常值(mild outliers) 和 极端异常值(extreme outliers)
    「Q1-1.5IQR」也被称为内下限值,「Q3+1.5IQR」也被称为内上限值;
    「Q1-3IQR」也被称为外下限值,「Q3+3IQR」也被称为外上限值;
    数据落在内限值和外限值之间则称为温和异常值,用"O"标识;
    数据落在外限值之外则称为极端异常值,用"*"标识;
    非特别说明,温和异常值,极端异常值不予区分,统称异常值

    IQR:75%分位数(Q3)-25%分位数(Q1)也就是箱体长度。

    现在的绘图算法由于都加入了异常值判断,所以上下限不再是最大最小值,而是叫最大最小观测值!!!

    2.用pandas循环绘图,坐标不随数据的改变而改变。需求是这样的,我循环一个dataframe,然后用我需要的每一个列绘制一个箱线图,但是绘完图之后发现纵坐标都是10000,我的列里面有的只有0.6这样的数量级,导致绘出的图没法看。解决方法,默认情况下,所有的图都绘制再默认的画布上,也就是说是一块画布,多个图,这样,图多了就重合在一起了,解决方法是,一个画布一个图,也就是说在每次循环的时候都创建一块新画布就ok了。

    1. def box_plt(self,a):
    2. self.need_data[a]['myindex'] = np.arange(0,self.need_data[a].shape[0])
    3. i = 1
    4. for col in self.exists_list:
    5. #创建一块画布,不需要用变量接收
    6. plt.figure(i)
    7. print(self.need_data[a][col])
    8. ax = self.need_data[a].boxplot(column=[col])
    9. ax.get_figure().savefig('./icon/' + col + '.png')
    10. i += 1

  • 相关阅读:
    智慧城市中的数字孪生:数字孪生技术助力智慧城市提高公共服务水平
    Seata 分布式事务 详解+使用
    学习pytorch12 神经网络-线性层
    Hadoop之HDFS重点架构原理简介
    GB/T 24721.1-2023 公路用玻璃纤维增强塑料产品检测
    二分查找详解
    面试系列Redis:缓存穿透、击穿、雪崩的解决方案
    5G将如何改变我们的生活和工作方式?
    【stream】并行流与顺序流
    #Docker 提示空间不足的解决方法#
  • 原文地址:https://blog.csdn.net/zy1620454507/article/details/126362428