异常值检测-箱线图 头歌代码注释

 方法一:

import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats
import numpy as npdata = pd.read_csv("src/death.csv", index_col='Unnamed: 0')data = data.dropna(axis=1, thresh=data.shape[0] * 0.2)
data = data.dropna(axis=0, thresh=data.shape[1] * 0.2)a = pd.isna(data).sum()
cols = [x for i, x in enumerate(a.index) if a[i] > 0]mode_list = 'FIPS Admin2'
for i in cols:if mode_list.find(i) != -1:data[i] = data[i].fillna(data[i].mode().iloc[0])else:data[i] = data[i].fillna(data.mean()[i])cols = '2008/10/20,2008/11/20,2008/12/20'.split(',')
x = data[cols]########## Begin ########## out_index = []
for col in x.columns: # 对每一列分别用箱型图进行判断Q1 = x[col].quantile(q=0.25)       # 下四分位Q3 = x[col].quantile(q=0.75)       # 上四分位low_whisker = Q1 - 1.5 * (Q3 - Q1)  # 下边缘up_whisker = Q3 + 1.5 * (Q3 - Q1)   # 上边缘# 寻找异常点,获得异常点索引值,删除索引值所在行数据rule = (x[col] > up_whisker) | (x[col] < low_whisker)  #得到异常值的下标out = x[col].index[rule]#转化成列表,并入out_index中out_index += out.tolist()#打印该列的异常值数目print("%s    %d"%(col,len(out.tolist()))) 
#删除异常值
x_c1=x.drop(out_index)print("dtype: int64")########## End ########## 
x_c1.boxplot()
plt.savefig(r'src/step1/ans_img')
plt.show()

个人觉得其中比较难理解的是这一步 

rule = (x[col] > up_whisker) | (x[col] < low_whisker) 

 rule是一个布尔型Pandas Series,它通过比较数据子集 x 中的每个元素与预先计算的上下界阈值来标识潜在的异常值。

表达式 (x < lower_limit) | (x > upper_limit) 会返回一个新的布尔系列,其中:

  • 对于所有小于 lower_limit 的数值,对应位置上的布尔值为 True
  • 对于所有大于 upper_limit 的数值,对应位置上的布尔值也为 True
  • 其余数值对应的布尔值为 False

 print("dtype: int64")

这一步单纯是凑答案了,图像没问题,就少了一个这个。

 方法二:

来源  http://t.csdnimg.cn/lGnci

Q1 = x.quantile(0.25)
Q3 = x.quantile(0.75)
IQR = Q3 - Q1lower_limit = Q1 - 1.5 * IQR
upper_limit = Q3 + 1.5 * IQRoutliers_index = (x < lower_limit) | (x > upper_limit)# 使用波浪线(~)进行逻辑非操作,选出不在 outliers_index 的行
# 即保留非异常值的行
x_c1 = x[~outliers_index]
print(outliers_index.sum())

outliers_index.sum() 是对布尔型Pandas Series outliers_index 进行求和操作。在布尔类型数据中,True 被视为 1,False 被视为 0。当执行 .sum() 操作时,实际上是计算出   outliers_index 中所有 True 值的数量,即标识为异常值的数据点数量。这段代码的主要目的是统计经过四分位数范围(IQR)方法检测后,在数据子集 x 中识别出的异常值个数。这样输出的结果就直接是答案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/720091.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【如何在Docker中,修改已经挂载的卷(Volume)】

曾梦想执剑走天涯&#xff0c;我是程序猿【AK】 提示&#xff1a;添加投票&#xff01;&#xff01;&#xff01; 目录 简述概要知识图谱 简述概要 如何在Docker中&#xff0c;修改已经挂载的卷&#xff08;Volume&#xff09; 知识图谱 在Docker中&#xff0c;修改已经挂载…

C#双向链表实现:在当前节点后插入新数据的方法Insert()

目录 1.定义一个泛型节点类并自动属性 2.定义链表类&#xff0c;并实现Append、Print、MoveFirst、 Insert 3.Main方法 1.定义一个泛型节点类并自动属性 /// <summary> /// 定义泛型节点类 /// </summary> /// <typeparam name"T">泛型运算符&…

本地navicate连接vm虚拟机中的mysql5.7docker容器

一&#xff0c;配置 前提是我已经启动的mysql5.7容器 使用 docker ps -a 查看所有的容器 使用 docker exec -it c4f9 bash 进入mysql命令行&#xff0c;注意这个c4f9是容器唯一id&#xff0c;不用写全连接mysql mysql -uroot -p123456&#xff0c;连接成功后 输入 show datab…

蓝桥杯——123

123 二分等差数列求和前缀和数组 题目分析 连续一段的和我们想到了前缀和&#xff0c;但是这里的l和r的范围为1e12&#xff0c;明显不能用O(n)的时间复杂度去求前缀和。那么我们开始观察序列的特点&#xff0c;可以按照等差数列对序列进行分块。如上图&#xff0c;在求前10个…

LDA(Latent Dirichlet Allocation,隐含狄利克雷分布)模型简单使用

LDA&#xff08;Latent Dirichlet Allocation&#xff0c;隐含狄利克雷分布&#xff09;模型 机器学习高级算法中LDA算法有线性判别分析&#xff08;Linear Discriminant Analysis&#xff0c;LDA&#xff09;和隐含狄利克雷分布&#xff08;Latent Dirichlet Allocation&…

Android的多线程和异步处理

在Android开发中&#xff0c;多线程和异步处理是处理耗时操作、提高应用响应性和性能的关键技术。以下是一些关于Android多线程和异步处理的基本概念和实践&#xff1a; 1. **主线程&#xff08;UI线程&#xff09;**&#xff1a; - Android应用的主线程负责处理UI操作和事…

AI大预言模型——ChatGPT科研与AI绘图及论文高效写作教程

原文链接&#xff1a;AI大预言模型——ChatGPT科研与AI绘图及论文高效写作教程 2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚…

当代体育科技期刊投稿邮箱

《当代体育科技》杂志是由国家新闻出版总署批准的正规体育类学术期刊&#xff0c;刊登国内外体育科技领域的新技术、新成果&#xff0c;介绍体育运动项目新的训练方法、动态和发展趋势&#xff0c;宣传科学技术在体育行业中的应用&#xff0c;促进我国体育科技事业的发展。适用…

【笔记版】docker常用指令---systemctl类、docker状态

systemctl [options] docker 启动&#xff1a;system start docker查看状态&#xff1a;systemctl status docker停止&#xff1a;systemctl stop docker有警告&#xff1a;service关闭了&#xff0c;但是docker.socket仍响应解决方法&#xff1a;systemctl stop docker.socket…

springboot2入门到实战-数据库缓存同步框架canal

canal框架 canal [kə’nl]&#xff0c;译意为水道/管道/沟渠&#xff0c;主要用途是基于 MySQL 数据库增量日志解析&#xff0c;提供增量数据订阅和消费 早期阿里巴巴因为杭州和美国双机房部署&#xff0c;存在跨机房同步的业务需求&#xff0c;实现方式主要是基于业务 trig…

文章汇总(专题整理、面试总结、自学教程)

这么多年的程序员职业生涯中&#xff0c;都没有好好整理所知所会的知识&#xff0c;老是时间一长会忘记。在这里做一个总结&#xff0c;也当是自己的复盘。 面试题整理&#xff1a; 内容链接Java基础面试题Java 基础面试题-CSDN博客集合&#xff08;hashMap&#xff09;。。。…

【sgCollapseBtn】自定义组件:底部折叠/展开按钮

特性&#xff1a; 支持自定义折叠状态支持自定义标签名称 sgCollapseBtn源码 <template><div :class"$options.name" click"show !show" :placement"placement"><div class"collapse-btns"><div class"c…

嵌入式中volatile关键字的使用方法

Hi,大家好&#xff01; 今天我们来学习一下volatile关键字&#xff0c;volatile关键字想必大家在平时编程中都见过或用过。可是小伙伴们有没有想过什么时候需要使用volatile关键字吗&#xff1f; 在C语言中&#xff0c;volatile是一个关键字&#xff0c;用于告诉编译器不要优化…

Java 打包 SpringBoot 项目报错

Java 打包 SpringBoot 项目报错 问题重现 Please refer to xxxx for the individual test results. Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream. 解决问题 在 pom.xml 的 <properties> 中添加项目代码 <s…

MySQL-- 优化(慢查询)

MySQL–优化&#xff08;慢查询&#xff09; 定位慢查询SQL执行计划索引 存储引擎索引底层数据结构聚簇和非聚簇索引索引创建原则索引失效场景 SQL优化经验 一、如何定位慢查询&#xff1f; 定位慢查询是数据库性能优化的关键步骤之一。当数据库执行某些查询时&#xff0c;如…

QUIC来了!

什么是QUIC QUIC&#xff0c;快速UDP网络连接(Quick UDP Internet Connection)的简称&#xff0c;即RFC文档描述它为一个面向连接的安全通用传输协议。其基于UDP协议实现了可靠传输及拥塞控制&#xff0c;简单来说&#xff0c;QUIC TCP TLS。 为什么有了QUIC HTTP2.0为了为了…

知识图谱(Knowledge Graph)

知识图谱&#xff08;Knowledge Graph&#xff09;是一种图结构化的信息表达方式&#xff0c;旨在将丰富多样的知识、概念和实体之间的复杂关系以图形式表示&#xff0c;以便计算机系统能够理解和推理这些信息。知识图谱是人工智能和语义网技术领域的重要应用&#xff0c;通过构…

2193. 分配问题(网络流,费用流,二分图最优匹配)

活动 - AcWing 有 n 件工作要分配给 n 个人做。 第 i 个人做第 j 件工作产生的效益为 cij。 试设计一个将 n 件工作分配给 n 个人做的分配方案。 对于给定的 n 件工作和 n 个人&#xff0c;计算最优分配方案和最差分配方案。 输入格式 第 1 行有 1 个正整数 n&#xff0c…

2023年计算机视觉技术进展概览

2023年计算机视觉技术进展概览 在2023年&#xff0c;计算机视觉领域出现了多个标志性的进步。以下是十大突破性进展的简要概述&#xff1a; SAM (Segment Anything Model)&#xff1a;由Meta AI开发的SAM成为了分割任务的基础模型&#xff0c;它改革了像素级分类&#xff0c;可…

JavaScript:require 和 import

文章目录 require()起源&#xff1a;语法&#xff1a;使用场景&#xff1a;加载时机&#xff1a;示例 import起源语法使用场景加载时机异步加载示例 require 和 import 是 JavaScript 中用于模块导入的不同语法&#xff0c;它们遵循不同的模块规范 require() 起源&#xff1a;…