aproxQuantile (DataFrameStatFunctions)

Calcula os quantiles aproximados das colunas numéricas de um DataFrame.

O resultado deste algoritmo tem o seguinte limite determinístico: se o DataFrame tiver N elementos e se pedirmos o quantil com probabilidade p até erro err, então o algoritmo devolverá uma amostra x de , DataFrame de modo que o posto exato de x seja próximo de (p _ N). Mais precisamente, floor((p - err) _ N) <= rank(x) <= ceil((p + err) \* N).

Este método implementa uma variação do algoritmo Greenwald-Khanna com algumas otimizações de velocidade.

Sintaxe

approxQuantile(col, probabilities, relativeError)

Parâmetros

Parâmetro Tipo Descrição
col str, lista ou tupla Um nome de uma única coluna, ou uma lista de nomes para múltiplas colunas.
probabilities Lista ou tupla de flutuador Uma lista de probabilidades quantíceis. Cada número deve ser um 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 do alvo a alcançar (>= 0). Se definido para zero, são calculados os quantiles exatos, o que pode ser muito dispendioso. Valores superiores a 1 dão o mesmo resultado que 1.

Devoluções

list

Se col for uma cadeia, devolve uma lista de floats. Se col for uma lista ou tupla de cadeias, devolve uma lista de listas de flutuantes.

Notes

Os valores nulos são ignorados nas colunas numéricas antes do cálculo. Para colunas que contêm apenas valores nulos, é devolvida uma lista vazia.

Exemplos

Calcule os quantiles 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]

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

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