一、基本概念
在正态分布中σ代表标准差,μ代表均值。x=μ即为图像的对称轴
3σ原则为:
数值分布在(μ-σ,μ+σ)中的概率为0.6826(1)
数值分布在(μ-2σ,μ+2σ)中的概率为0.9545(2)
数值分布在(μ-3σ,μ+3σ)中的概率为0.9973(3)
可以认为,Y 的取值几乎全部集中在(μ-3σ,μ+3σ)区间内,超出这个范围的可能性仅占不到0.3%
我们认为在(3)范围之外的数据可以看作极端值
二、适用条件
1、数据正态分布或近似正态分布的情况
2、测量次数充分大的情况
三、代码展示
import numpy as np
import pandas as pd
import matplotlib as mpl
from scipy import stats #导入K-S检验
import matplotlib.pyplot as plt
data=pd.read_csv(r'data_demo.csv')#读取数据
data.head(5)#输出前五行
测试数据的前五行展示如下:
data.describe().T
测试数据>30符合条件2
#检验正态性
for col in data.columns:
u = data[col].mean()
std = data[col].std()
print(col,stats.kstest(data[col], 'norm', (u, std)))
使用KS检验依次检验各个变量的正态性
可以看出各个变量的P值均>0.05不能拒绝原假设,认为各个变量均服从正态分布
符合条件1
定义3sigma准则函数
#使用3sigma准则除去极端值
def three_sigma(df):#定义函数
way = (df.mean() - 3 * df.std() < df) &(df.mean() + 3 * df.std() > df) #使用法则取得非极端值
index = np.arange(df.shape[0])[way] #获取非极端值索引
output= df.iloc[index] #获取位置
return output#输出位置
for col in data.columns:
data[col]=three_sigma(data[col])
使用3sigma原则删除数据表中各个变量所对应的极端值
去除极端值之后的情况
data.describe().T
Original: https://blog.csdn.net/qq_51397866/article/details/126211257
Author: qq_51397866
Title: 使用3sigma原则去除数据表中的极端值
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/758016/
转载文章受原作者版权保护。转载请注明原作者出处!