approxQuantile (DataFrameStatFunctions)
Calcula os quantis aproximados das colunas numéricas de um DataFrame.
O resultado deste algoritmo tem o seguinte limite determinístico: se o DataFrame tem N elementos e se solicitarmos o quantil com probabilidade p até erro err, então o algoritmo retornará uma amostra x do DataFrame tal que a classificação exata de x é próxima de (p _ N). Mais precisamente, floor((p - err) _ N) <= rank(x) <= ceil((p + err) \* N).
Este método implementa uma variação do algoritmo de Greenwald-Khanna com algumas otimizações de velocidade.
Sintaxe
approxQuantile(col, probabilities, relativeError)
Parâmetros
Parâmetro | Tipo | Descrição |
|---|---|---|
| string, lista ou tupla | Um único nome de coluna ou uma lista de nomes para várias colunas. |
| lista ou tupla de números de ponto flutuante | Uma lista de probabilidades quantílicas. Cada número deve ser um número de ponto flutuante no intervalo [0, 1]. Por exemplo, 0,0 é o mínimo, 0,5 é a mediana e 1,0 é o máximo. |
| Float | A precisão relativa alvo a ser alcançada (>= 0). Se definido como zero, os quantis exatos são calculados, o que pode ser muito custoso. Valores maiores que 1 produzem o mesmo resultado que 1. |
Devoluções
list
Se col for uma string, retorna uma lista de números de ponto flutuante. Se col for uma lista ou tupla de strings, retorna uma lista de listas de floats.
Notas
Valores nulos são ignorados em colunas numéricas antes do cálculo. Para colunas que contêm apenas valores nulos, uma lista vazia é retornada.
Exemplos
Calcule os quantis para uma única coluna.
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]
Calcular quantis para múltiplas colunas.
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]]
Lidar com valores nulos.
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]