通过计算 z 分数来修复 pandas 中的异常值

Posted

技术标签:

【中文标题】通过计算 z 分数来修复 pandas 中的异常值【英文标题】:Fix outliers in pandas by calculating z - scores 【发布时间】:2021-11-11 00:21:34 【问题描述】:

这是一个模拟数据帧

import pandas as pd
from scipy import stats

df = pd.DataFrame('col1' : [1,2,5,8,4,9,3,800,600, np.nan, np.nan]) 

我想计算 z 分数以检测异常值并用平均值替换行。

这是我的尝试:

df['col1'] = np.where(np.abs(stats.zscore(df['col1'])) < 3, df['col1'].mean(),df['col1'])

这不起作用,异常值仍然存在。

【问题讨论】:

它对我有用,请再次检查 @BENY 更新了问题,我在熊猫系列中有NaNs 【参考方案1】:

在您的情况下,您可以 dropna ,然后分配回

s = df.col1.dropna()
out = np.where(np.abs(stats.zscore(s)) < 3, s.mean(),s)
df.loc[df.col1.notna(),'col1'] = out

【讨论】:

以上是关于通过计算 z 分数来修复 pandas 中的异常值的主要内容,如果未能解决你的问题,请参考以下文章

反向 z 分数 pandas 数据框

Pandas - 计算所有列的 z 分数

统计中的Z-score是啥意思

R使用Z分数和四分位数区间法去除异常值(outlier)

描述统计学:分布形态异常值

z模型怎么用电脑算