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

NumPy百分位数计算方法与Excel独占中位数法匹配问题咨询

Excel独占中位数法四分位数与NumPy的适配方案

Excel Exclusive Median法的计算逻辑

Excel默认的四分位数计算(独占中位数法)核心步骤:

  • 将数据按升序排序
  • 划分上下数据段:
    • 若数据总量n为偶数:中位数是第n/2和n/2+1位数据的平均值,上下段分别取前n/2个和后n/2个数据
    • 若n为奇数:中位数是第(n+1)/2位数据,排除该中位数后,上下段各取前(n-1)/2个和后(n-1)/2个数据
  • Q1是下段数据的中位数,Q3是上段数据的中位数

NumPy无直接对应方法,但可手动复刻逻辑

NumPy的quantile/percentile系列方法(包括linear、lower、higher等内置计算模式)均未实现Excel的独占中位数逻辑,不过可以基于NumPy快速手动实现该计算:

实现代码示例

import numpy as np

def excel_exclusive_quantiles(data):
    data_sorted = np.sort(data)
    n = len(data_sorted)
    # 拆分上下数据段
    if n % 2 == 0:
        lower_half = data_sorted[:n//2]
        upper_half = data_sorted[n//2:]
    else:
        lower_half = data_sorted[:(n-1)//2]
        upper_half = data_sorted[(n+1)//2:]
    # 计算四分位数
    q1 = np.median(lower_half)
    q2 = np.median(data_sorted)
    q3 = np.median(upper_half)
    return q1, q2, q3

# 测试验证
test_data_odd = np.array([1,3,5,7,9,11,13])
q1, q2, q3 = excel_exclusive_quantiles(test_data_odd)
print(f"奇数长度数据结果:Q1={q1}, Q2={q2}, Q3={q3}")
# 输出:奇数长度数据结果:Q1=3.0, Q2=7.0, Q3=11.0(与Excel计算一致)

test_data_even = np.array([1,2,3,4,5,6])
q1, q2, q3 = excel_exclusive_quantiles(test_data_even)
print(f"偶数长度数据结果:Q1={q1}, Q2={q2}, Q3={q3}")
# 输出:偶数长度数据结果:Q1=2.0, Q2=3.5, Q3=5.0(与Excel计算一致)

内容的提问来源于stack exchange,提问作者mavi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 12:52:11