0

我正在寻找计算小数据集的第 1 和第 3 四分位数以确定异常值:

6000 13500 15000 15000 17948

虽然理论上计算相当简单,但我发现 python 使用的方法与我想要的方法不同(以及 Excel 函数 Quartile.EXC 使用的方法)。不同之处在于python在四分位数计算中包含了中位数。因此,对于第一个四分位数 python 输出 13500,对于第三个 15000。我想要的是 9750 和 16474。我还没有找到可以让我这样做的选项。

我已经使用了几个代码来尝试找到该解决方案,我目前的第一个四分位数是q1 = df.NSOT.quantile(0.25, interpolation = 'midpoint').

df 是数据框, NSOT 是具有给定值的列。

https://www.mathwords.com/o/outlier.htm上是一个示例,说明如何使用所需的第一和第三四分位数以我想要的方式计算异常值。

有什么建议么?

对不起,如果这个问题有什么不符合规定的。我刚刚创建了这个帐户,需要快速得到答案:/

4

1 回答 1

0

我认为这可以解决问题。当有一组偶数时,它应该包括一个中间值来计算四分位数。虽然我很想简单地包含一个选项,但这对我来说是这样的。

        df.sort_values("NSOT", axis = 0, ascending = True, inplace = True, na_position ='last')
        df = df.reset_index(drop=True)
        medianindex = int(len(df.NSOT) / 2)
        if (len(df.NSOT) % 2 == 0):
           # even   
            q1_NSOT = np.percentile(df.NSOT[:medianindex-1], 50)
            q3_NSOT = np.percentile(df.NSOT[medianindex:], 50)

        else:
            # odd
            q1_NSOT = np.percentile(df.NSOT[:medianindex], 50)
            q3_NSOT = np.percentile(df.NSOT[medianindex+1:], 50)
于 2020-03-26T10:12:41.677 回答