You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何手动编写计算列表中Percentiles的自定义函数?

手动实现百分位数计算

核心数学逻辑

百分位数的计算核心是排序+位置插值,步骤如下:

  • 把输入数据集按从小到大排序
  • 计算目标百分位的位置索引:i = (p / 100) * (n - 1),其中p是要计算的百分位数(比如50对应中位数),n是数据的总个数
  • 根据索引i的类型计算结果:
    • 若i是整数,直接取排序后数组中索引为i的元素
    • 若i是小数,拆分出整数部分k和小数部分d,用线性插值得到结果:(1 - d) * 排序数组[k] + d * 排序数组[k+1]
    • 特殊情况:当p=100时,直接返回排序数组的最后一个元素

Python实现代码

def calculate_percentile(data, p):
    if not data:
        raise ValueError("数据集不能为空")
    sorted_data = sorted(data)
    n = len(sorted_data)
    i = (p / 100) * (n - 1)
    k = int(i)
    d = i - k
    if k >= n - 1:
        return sorted_data[-1]
    return (1 - d) * sorted_data[k] + d * sorted_data[k + 1]

测试验证

用常见数据集测试,和NumPy默认逻辑对齐:

# 测试数据
test_data = [1, 3, 5, 7, 9]
# 计算50百分位数(中位数)
print(calculate_percentile(test_data, 50))  # 输出5.0
# 计算90百分位数
print(calculate_percentile(test_data, 90))  # 输出8.2

内容的提问来源于stack exchange,提问作者P6A08李倬霖

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 04:52:54