数据清洗 | 通过 Z-Score 方法判断异常值

谁说我不能喝 提交于 2020-02-27 13:30:58

 

判断异常值方法:Z-Score

计算公式 Z = (X-μ)/σ 其中μ为总体平均值,X-μ为离均差,σ表示标准差。z的绝对值表示在标准差范围内的原始分数与总体均值之间的距离。当原始分数低于平均值时,z为负,以上为正。

代码演示

1 生成一个 df

1 import pandas as pd  # 导入pandas库
2 # 生成异常数据
3 df = pd.DataFrame({'col1': [1, 120, 3, 5, 2, 12, 13],
4                    'col2': [12, 17, 31, 53, 22, 32, 43]})

 

2 通过Z-Score方法判断异常值

 1 df_zscore = df.copy()  # 复制一个用来存储Z-score得分的数据框
 2 cols = df.columns  # 获得数据框的列名
 3 
 4 for col in cols:  # 循环读取每列
 5     df_col = df[col]  # 得到每列的值
 6     z_score = (df_col - df_col.mean()) / df_col.std()  # 计算每列的Z-score得分
 7     # 判断Z-score得分是否大于2.2,(此处2.2代表一个经验值),如果是则是True,否则为False
 8     df_zscore[col] = z_score.abs() > 2.2  
 9 
10 print(df_zscore)  # 打印输出

 

3 删除异常值所在的行

  留下==False的,df_zscore['col1'] == True 的就能丢掉了

1 df_drop_outlier = df[df_zscore['col1'] == False]
2 print(df_drop_outlier)

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!