atoti.agg.quantile module#
- atoti.agg.quantile(operand: ColumnOrOperationOrLevel, /, q: Union[float, MeasureDescription], *, mode: Literal['simple', 'centered', 'inc', 'exc'] = "'inc'", interpolation: Literal['linear', 'higher', 'lower', 'nearest', 'midpoint'] = "'linear'") MeasureDescription #
- atoti.agg.quantile(operand: MeasureDescription, /, q: Union[float, MeasureDescription], *, mode: Literal['simple', 'centered', 'inc', 'exc'] = "'inc'", interpolation: Literal['linear', 'higher', 'lower', 'nearest', 'midpoint'] = "'linear'", scope: Scope) MeasureDescription
Return a measure equal to the requested quantile of the passed operand across the specified scope.
Here is how to obtain the same behavior as these standard quantile calculation methods:
R-1:
mode="centered"
andinterpolation="lower"
R-2:
mode="centered"
andinterpolation="midpoint"
R-3:
mode="simple"
andinterpolation="nearest"
R-4:
mode="simple"
andinterpolation="linear"
R-5:
mode="centered"
andinterpolation="linear"
R-6 (similar to Excel’s
PERCENTILE.EXC
):mode="exc"
andinterpolation="linear"
R-7 (similar to Excel’s
PERCENTILE.INC
):mode="inc"
andinterpolation="linear"
R-8 and R-9 are not supported
The formulae given for the calculation of the quantile index assume a 1-based indexing system.
- Parameters
operand (
Union
[Column
,Operation
,Level
,MeasureDescription
]) – The operand to get the quantile of.q (
Union
[float
,MeasureDescription
]) – The quantile to take. Must be between0
and1
. For instance,0.95
is the 95th percentile and0.5
is the median.mode (
Literal
[‘simple’, ‘centered’, ‘inc’, ‘exc’]) –The method used to calculate the index of the quantile. Available options are, when searching for the q quantile of a vector
X
:simple
:len(X) * q
centered
:len(X) * q + 0.5
exc
:(len(X) + 1) * q
inc
:(len(X) - 1) * q + 1
interpolation (
Literal
[‘linear’, ‘higher’, ‘lower’, ‘nearest’, ‘midpoint’]) –If the quantile index is not an integer, the interpolation decides what value is returned. The different options are, considering a quantile index
k
withi < k < j
for a sorted vectorX
:linear
:v = X[i] + (X[j] - X[i]) * (k - i)
lower
:v = X[i]
higher
:v = X[j]
nearest
:v = X[i]
orv = X[j]
depending on which ofi
orj
is closest tok
midpoint
:v = (X[i] + X[j]) / 2
scope (
Union
[CumulativeScope
,OriginScope
,SiblingsScope
,None
]) – The scope of the aggregation.
- Return type