approxQuantile (DataFrameStatFunctions)

Calcula los cuantiles aproximados de columnas numéricas de .DataFrame

El resultado de este algoritmo tiene el siguiente límite determinista: si tiene DataFrame N elementos y si solicitamos el cuantitil en probabilidad p hasta el error err, el algoritmo devolverá una muestra x de DataFrame para que la clasificación exacta de x esté cerca de (p _ N). Más precisamente, floor((p - err) _ N) <= rank(x) <= ceil((p + err) \* N).

Este método implementa una variación del algoritmo de Greenwald-Khanna con algunas optimizaciones de velocidad.

Sintaxis

approxQuantile(col, probabilities, relativeError)

Parámetros

Parámetro Tipo Descripción
col str, list o tupla Un nombre de columna único o una lista de nombres para varias columnas.
probabilities lista o tupla de float Lista de probabilidades cuantiles. Cada número debe ser un float en el intervalo [0, 1]. Por ejemplo, 0,0 es el mínimo, 0,5 es la mediana y 1,0 es el máximo.
relativeError flotante Precisión de destino relativa que se va a lograr (>= 0). Si se establece en cero, se calculan los cuantiles exactos, lo que podría ser muy caro. Los valores mayores que 1 dan el mismo resultado que 1.

Devoluciones

list

Si col es una cadena, devuelve una lista de floats. Si col es una lista o tupla de cadenas, devuelve una lista de listas de floats.

Notas

Los valores NULL se omiten en columnas numéricas antes del cálculo. Para las columnas que solo contienen valores NULL, se devuelve una lista vacía.

Ejemplos

Calcule cuantiles para una sola columna.

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]

Calcule cuantiles para varias columnas.

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]]

Controle los valores 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]