9.16学习笔记(异常值处理)

异常值:有固定业务规则的可以套用业务规则,没有固定业务规则的可以采用常见的数学模型判断

  • 基于概率分布的模型(如正态分布的标准差范围)
  • 基于聚类的方法(如KMeans)
  • 基于密度的方法(如LOF)
  • 基于分类的方法(如KNN)
  • 基于统计的方法(如分位数法)等

z分数(标准分数):一个分数与平均数的差再除以标准差的过程。标准分数可以看出某分数在分布中相对位置,通过查阅标准分数在正态曲线下的面基的表格来得知平均数与标准分数之间的面积,进而得知原始分数在数据集合中的百分等级

示例(通常当阈值设定为2时,已经是相对异常的表现值了)

import pandas as pd
#发现、剔除异常值
data2=pd.DataFrame({'col1':[1,9020,23,13,5,100],'col2':[2,12,45,9,29,99999]})
print(data2)
#通过Z方法判断异常值
#复制一个用来存储z得分的数据框
data_zs=data2.copy()
#获取列名
cols=data2.columns
#循环读取每列进行计算
for col in cols:
    data_col=data2[col] #得到每列的值
    z_score=(data_col-data_col.mean())/data_col.std() #计算每列的z得分
    data_zs[col]=z_score.abs()>2.0 #得分大于2为异常值
    print(z_score)
print("===data_zs===")
print(data_zs)

结果:
col1 col2
0 1 2
1 9020 12
2 23 45
3 13 9
4 5 29
5 100 99999
0 -0.415692
1 2.041140
2 -0.409699
3 -0.412423
4 -0.414602
5 -0.388724
Name: col1, dtype: float64
0 -0.408675
1 -0.408430
2 -0.407621
3 -0.408503
4 -0.408013
5 2.041241
Name: col2, dtype: float64
=data_zs=
col1 col2
0 False False
1 True False
2 False False
3 False False
4 False False
5 False True

发布了5 篇原创文章 · 获赞 2 · 访问量 2672

猜你喜欢

转载自blog.csdn.net/weixin_43621813/article/details/100884892