限制异常值。

4

我有一个数据框,其中有3个数值变量,我试图将其在0.01到0.99百分位之间的异常值进行截尾,但不起作用。

df[['TotalVisits', 'Total Time Spent on Website', 
'Page Views Per Visit']].describe(percentiles=[.25, .5, .75, .90, .95, .99])

这是输出结果

现在我尝试将异常值限制在以下范围:

q_l = df['TotalVisits'].quantile(0.00)
q_h = df['TotalVisits'].quantile(0.99)

df['TotalVisits'][df['TotalVisits']<= q_l] = q_l
df['TotalVisits'][df['TotalVisits']>= q_h] = q_h

但输出结果仍然相同,而不是最大值更改为17。

1个回答

1
你正在进行链式切片分配,这将失败。
请修复你的代码。
q_l = df['TotalVisits'].quantile(0.00)
q_h = df['TotalVisits'].quantile(0.99)

df.loc[df['TotalVisits']<= q_l, 'TotalVisits'] = q_l
df.loc[df['TotalVisits']>= q_h], 'TotalVisits'] = q_h

使用pandas函数 clip 进行改进

df['TotalVisits'] = df['TotalVisits'].clip(lower = q_l, upper = q_h)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接