percentileofscore — SciPy v1.15.2 Manual (original) (raw)

scipy.stats.

scipy.stats.percentileofscore(a, score, kind='rank', nan_policy='propagate')[source]#

Compute the percentile rank of a score relative to a list of scores.

A percentileofscore of, for example, 80% means that 80% of the scores in a are below the given score. In the case of gaps or ties, the exact definition depends on the optional keyword, kind.

Parameters:

aarray_like

A 1-D array to which score is compared.

scorearray_like

Scores to compute percentiles for.

kind{‘rank’, ‘weak’, ‘strict’, ‘mean’}, optional

Specifies the interpretation of the resulting score. The following options are available (default is ‘rank’):

nan_policy{‘propagate’, ‘raise’, ‘omit’}, optional

Specifies how to treat nan values in a. The following options are available (default is ‘propagate’):

Returns:

pcosfloat

Percentile-position of score (0-100) relative to a.

Examples

Three-quarters of the given values lie below a given score:

import numpy as np from scipy import stats stats.percentileofscore([1, 2, 3, 4], 3) 75.0

With multiple matches, note how the scores of the two matches, 0.6 and 0.8 respectively, are averaged:

stats.percentileofscore([1, 2, 3, 3, 4], 3) 70.0

Only 2/5 values are strictly less than 3:

stats.percentileofscore([1, 2, 3, 3, 4], 3, kind='strict') 40.0

But 4/5 values are less than or equal to 3:

stats.percentileofscore([1, 2, 3, 3, 4], 3, kind='weak') 80.0

The average between the weak and the strict scores is:

stats.percentileofscore([1, 2, 3, 3, 4], 3, kind='mean') 60.0

Score arrays (of any dimensionality) are supported:

stats.percentileofscore([1, 2, 3, 3, 4], [2, 3]) array([40., 70.])

The inputs can be infinite:

stats.percentileofscore([-np.inf, 0, 1, np.inf], [1, 2, np.inf]) array([75., 75., 100.])

If a is empty, then the resulting percentiles are all nan:

stats.percentileofscore([], [1, 2]) array([nan, nan])