代码之家  ›  专栏  ›  技术社区  ›  Crawford Patten

如何获得整数列表的四分位数

  •  1
  • Crawford Patten  · 技术社区  · 2 年前

    我有一个函数,我想找到有序整数列表的Q1,Q2和Q3。

    intList = [5, 10, 14, 15, 26, 30, 31, 33, 34, 47, 64]
    
    def quartiles(numbers):
        Q1, Q2, Q3 = np.quantile(numbers, [0.25, 0.5, 0.75], axis=0)
        return {
            'Q1': Q1,
            'Q2': Q2,
            'Q3': Q3
        }
    

    函数正在返回:

    {'Q1': 14.5, 'Q2': 30.0, 'Q3': 33.5}
    

    但实际的Q1、Q2、Q3是14、30和34。

    1 回复  |  直到 2 年前
        1
  •  0
  •   mozway    2 年前

    默认情况下 numpy.quantile 正在执行插值。我相信你更想要最近的点。

    您可以使用 method='nearest' 参数( ,对于早期版本,请使用 interpolation='nearest' 相反):

    intList = [5, 10, 14, 15, 26, 30, 31, 33, 34, 47, 64,]
    
    def quartiles(numbers):
        Q1, Q2, Q3 = np.quantile(numbers, [0.25, 0.5, 0.75], axis=0, method='nearest')
        return {
            'Q1': Q1,
            'Q2': Q2,
            'Q3': Q3
        }
    

    输出: {'Q1': 14, 'Q2': 30, 'Q3': 34}