我有一个函数,我想找到有序整数列表的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。
默认情况下 numpy.quantile 正在执行插值。我相信你更想要最近的点。
numpy.quantile
您可以使用 method='nearest' 参数( ,对于早期版本,请使用 interpolation='nearest' 相反):
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}
{'Q1': 14, 'Q2': 30, 'Q3': 34}