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" 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 (Union[Column, Operation, Level, MeasureDescription]) – The operand to get the quantile of.

  • q (Union[float, MeasureDescription]) – 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 (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 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 (Union[CumulativeScope, OriginScope, SiblingsScope, None]) – The scope of the aggregation.

Return type

MeasureDescription