首页 > 解决方案 > functools:计算四分位数范围

问题描述

我用functools这种方式计算百分位数:

import functools
percentiles = tuple(functools.partial(np.percentile, q=q) for q in (75, 85, 95))

percentiles
(functools.partial(<function percentile at 0x7f91fe1e9730>, q=75),
 functools.partial(<function percentile at 0x7f91fe1e9730>, q=85),
 functools.partial(<function percentile at 0x7f91fe1e9730>, q=95))

这样我的代码中的任何地方我都可以像这样计算百分位数:

stat_functions =  percentiles

然后我想将四分位数添加到我的百分位数函数中,但是添加 [75-25] 来计算平均值。

percentiles = tuple(functools.partial(np.percentile, q=q) for q in (75, 85, 95, 75-25))

percentiles
(functools.partial(<function percentile at 0x7f91fe1e9730>, q=75),
 functools.partial(<function percentile at 0x7f91fe1e9730>, q=85),
 functools.partial(<function percentile at 0x7f91fe1e9730>, q=95),
 functools.partial(<function percentile at 0x7f91fe1e9730>, q=50))

我的目的是获得四分位间距的值而不是平均值。我该如何解决?

标签: pythonnumpyscipypercentilefunctools

解决方案


不久前我添加了一个iqr功能scipy.stats

您可以按如下方式修改理解:

percentiles = tuple(ss.iqr if q is None else functools.partial(np.percentile, q=q) for q in (75, 85, 95, None))

推荐阅读