approxQuantile (DataFrameStatFunctions)

Вычисляет приблизительные квантили числовых столбцов объекта DataFrame.

Результат этого алгоритма имеет следующую детерминированную привязку: если DataFrame элементы N и если мы запрашиваем квантиль по вероятности p до ошибки err, алгоритм вернет выборку x из DataFrame следующего, чтобы точный ранг x был близок (p _ N). Точнее, floor((p - err) _ N) <= rank(x) <= ceil((p + err) \* N).

Этот метод реализует вариант алгоритма Greenwald-Khanna с некоторыми оптимизациями скорости.

Синтаксис

approxQuantile(col, probabilities, relativeError)

Параметры

Параметр Тип Описание
col str, list или кортеж Имя одного столбца или список имен для нескольких столбцов.
probabilities список или кортеж с плавающей запятой Список вероятностей квантилей. Каждое число должно быть плавающей запятой в диапазоне [0, 1]. Например, 0.0 является минимальным, 0,5 является медианом, а 1.0 — максимальное значение.
relativeError плавать Относительная точность целевого объекта для достижения (>= 0). Если задано равно нулю, вычисляются точные квантили, которые могут быть очень дорогими. Значения, превышающие 1, дают тот же результат, что и 1.

Возвраты

list

Если col это строка, возвращается список с плавающей запятой. Если col это список или кортеж строк, возвращается список списков с плавающей запятой.

Примечания

Значения NULL игнорируются в числовых столбцах перед вычислением. Для столбцов, содержащих только значения NULL, возвращается пустой список.

Примеры

Вычисляйте квантили для одного столбца.

data = [(1,), (2,), (3,), (4,), (5,)]
df = spark.createDataFrame(data, ["values"])
df.stat.approxQuantile("values", [0.0, 0.5, 1.0], 0.05)
# [1.0, 3.0, 5.0]

Вычисляйте квантили для нескольких столбцов.

data = [(1, 10), (2, 20), (3, 30), (4, 40), (5, 50)]
df = spark.createDataFrame(data, ["col1", "col2"])
df.stat.approxQuantile(["col1", "col2"], [0.0, 0.5, 1.0], 0.05)
# [[1.0, 3.0, 5.0], [10.0, 30.0, 50.0]]

Обработка значений NULL.

data = [(1,), (None,), (3,), (4,), (None,)]
df = spark.createDataFrame(data, ["values"])
df.stat.approxQuantile("values", [0.0, 0.5, 1.0], 0.05)
# [1.0, 3.0, 4.0]