A sample quantile estimates a cut point in sorted observations using a selected rank and interpolation rule.
Python quantiles: choose an interpolation policy before reporting a threshold
Operation contract
The receipt-duration fixture validates 2 to 128 bounded finite numeric observations and compares inclusive and exclusive quartile policies on the same four values. They produce different cut points because they make different assumptions about the sample endpoints. Neither choice changes the actual observed durations. The result must carry its policy and sample definition if another service will reproduce a threshold.
Failure and ownership boundary
A quantile is not an observed record, a confidence interval or a proof of future latency. This fixture treats observations as an owned sample, with no claim about independent arrivals or production representativeness. NumPy bootstrap means: seeded resampling does not repair biased input, NumPy floating-point checks: finite values and declared tolerances and Pandas rolling windows: minimum observations and causal boundaries concern other sources of uncertainty.
Working program
import math
import statistics
def quartiles(durations, method):
if type(durations) is not list or not 2 <= len(durations) <= 128 or method not in ("inclusive", "exclusive") or any(type(value) not in (int, float) or not math.isfinite(value) or not 0 <= value <= 1000000 for value in durations):
raise ValueError("bounded finite durations and declared policy required")
return statistics.quantiles(durations, n=4, method=method)
durations = [100, 200, 300, 400]
print("inclusive:", quartiles(durations, "inclusive"))
print("exclusive:", quartiles(durations, "exclusive"))
try:
quartiles([100, float("nan")], "inclusive")
except ValueError:
print("nonfinite duration rejected")Output
inclusive: [175.0, 250.0, 325.0]
exclusive: [125.0, 250.0, 375.0]
nonfinite duration rejectedCosts and limits
Sorting n observations takes O(n log n) time and O(n) working storage in this library operation. The returned three cut points have fixed size. Input numbers and collection length are bounded here; output decimal formatting does not improve measurement accuracy.
Common Mistakes
- State the interpolation rule alongside a reported quantile.
- Remove or reject nonfinite values through an explicit policy, not accidental sort behavior.
Connected lessons
NumPy bootstrap means: seeded resampling does not repair biased input, NumPy floating-point checks: finite values and declared tolerances, Pandas rolling windows: minimum observations and causal boundaries.
Follow the ownership and update boundary
Python covariance: state the denominator and preserve paired observations.
