3σ算法检测离群点--实例
一、原数据
如下,共有六列,第一行为空,之后会修正,利用数据整体均值进行代替。
二、文字流程
1. 检测整个数据集的整体均值与标准差,同时利用ks检验判断数据是否符合正态分布。
2. 3σ准则的代码实现(该算法需要数据符合正态分布)
3. 为检测结果图添加各种文字或直线标注,使数据更为直观
三、代码
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import numpy
from scipy import stats
from pylab import *
import math
# 对整个文件中的数据进行离群点检测
def threesigma(str1, n): # 3σ的3可以是n,自己根据数据来调整,选检测效果最好的。
df = pd.read_csv(str1)
# 第一部分,求dataframe所有列整体的均值和标准差,同时利用ks检验判断数据是否符合正态分布。
sum = df.sum()
sum = sum.sum()
u = sum / (df.shape[0] * df.shape[1])
# 计算整体均值
# dataframe按列转list
columns = df.columns
print(df.shape)
print(columns)
d