【问题标题】:Limiting outlier values to 91st percentile将异常值限制为第 91 个百分位
【发布时间】:2020-01-04 13:53:27
【问题描述】:

我正在处理具有 614 个观察值的数据集变量中的异常值。但我无法编写代码。

我正在处理一个包含 614 个观察值的数据集,由于某种原因,我不想修剪它以响应处理变量。我希望任何大于第 91 个百分位的值都等于第 91 个百分位,而不会减少观察次数。

简单来说,我想用 10171.5 替换所有高于 10171.5(第 91 个百分位)的值。

【问题讨论】:

  • 您的数据是如何表示/存储的?到目前为止,您尝试过什么?
  • 它被存储为一个数据框。 1. 我尝试使用 df.loc 提取值大于第 91 个百分位的行,然后使用替换更改它,但它显示错误。 2. 条件语句我也试过了,但还是不行。
  • 在这种情况下,您将在下面得到答案。最好发布你的代码和你得到的错误,否则人们很难给你相关的答案。幸好下面的人猜对了。我们仍然不知道为什么您的代码不起作用。
  • 您必须发布您的失败代码(以及它导致的错误回溯),否则我们无法知道您的确切问题是什么。如果马里奥的回答回答了您的问题,那么请考虑接受它。如果没有,请告诉我们问题出在哪里(即发布带有回溯的失败代码)。就目前而言,这个问题不是可重复使用的资源。
  • 欢迎来到 SO。请阅读如何提问的指南,尤其是关于questions having to have an MCVE (Minimal, Complete Verifiable Example)的部分

标签: python logistic-regression outliers


【解决方案1】:

如果您的数据是数据框的形式,对于每一列,您可以通过以下方式获得分位数:

q = df["col"].quantile(0.91)

然后过滤:

df[df["col"] < q]

我还建议阅读此article 对异常值检测技术进行了很好的概述,然后您需要剪裁异常值或过滤它们。你也可以查看answer1answer2general answer

【讨论】:

    猜你喜欢
    • 2021-01-12
    • 2012-10-31
    • 2016-05-01
    • 2019-12-26
    • 2011-10-10
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多