Pular para o conteúdo principal

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

col

string, lista ou tupla

Um único nome de coluna ou uma lista de nomes para várias colunas.

probabilities

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.

relativeError

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.

Python
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.

Python
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.

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