通过计算 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 中的异常值的主要内容,如果未能解决你的问题,请参考以下文章