# atoti.agg.quantile module#

atoti.agg.quantile(operand: NonConstantColumnConvertibleOrLevel, /, q: Union[float, NonConstantMeasureConvertible], *, mode: Literal['simple', 'centered', 'inc', 'exc'] = 'inc', interpolation: Literal['linear', 'higher', 'lower', 'nearest', 'midpoint'] = 'linear') MeasureDescription#
atoti.agg.quantile(operand: NonConstantMeasureConvertible, /, q: Union[float, NonConstantMeasureConvertible], *, 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"` and `interpolation="lower"`

• R-2: `mode="centered"` and `interpolation="midpoint"`

• R-3: `mode="simple"` and `interpolation="nearest"`

• R-4: `mode="simple"` and `interpolation="linear"`

• R-5: `mode="centered"` and `interpolation="linear"`

• R-6 (similar to Excel’s `PERCENTILE.EXC`): `mode="exc"` and `interpolation="linear"`

• R-7 (similar to Excel’s `PERCENTILE.INC`): `mode="inc"` and `interpolation="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 – The operand to get the quantile of.

• q – The quantile to take. Must be between `0` and `1`. For instance, `0.95` is the 95th percentile and `0.5` is the median.

• mode

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

If the quantile index is not an integer, the interpolation decides what value is returned. The different options are, considering a quantile index `k` with `i < k < j` for a sorted vector `X`:

• `linear`: `v = X[i] + (X[j] - X[i]) * (k - i)`

• `lower`: `v = X[i]`

• `higher`: `v = X[j]`

• `nearest`: `v = X[i]` or `v = X[j]` depending on which of `i` or `j` is closest to `k`

• `midpoint`: `v = (X[i] + X[j]) / 2`

• scope – The scope of the aggregation.