Condividi tramite


circaQuantile (DataFrameStatFunctions)

Calcola i quantili approssimativi delle colonne numeriche di un oggetto DataFrame.

Il risultato di questo algoritmo ha il limite deterministico seguente: se ha DataFrame n elementi e se si richiede il quantile con probabilità p fino all'errore err, l'algoritmo restituirà un campione x da DataFrame in modo che il rango esatto di x sia vicino a (p _ N). Più precisamente, floor((p - err) _ N) <= rank(x) <= ceil((p + err) \* N).

Questo metodo implementa una variante dell'algoritmo Greenwald-Khanna con alcune ottimizzazioni della velocità.

Sintassi

approxQuantile(col, probabilities, relativeError)

Parametri

Parametro Tipo Descrizione
col str, list o tupla Nome di una singola colonna o elenco di nomi per più colonne.
probabilities list o tupla di float Elenco di probabilità quantile. Ogni numero deve essere un valore float nell'intervallo [0, 1]. Ad esempio, 0,0 è il valore minimo, 0,5 è la median e 1,0 è il valore massimo.
relativeError galleggiare Precisione di destinazione relativa da ottenere (>= 0). Se impostato su zero, vengono calcolati i quantili esatti, che potrebbero essere molto costosi. I valori maggiori di 1 danno lo stesso risultato di 1.

Restituzioni

list

Se col è una stringa, restituisce un elenco di valori float. Se col è un elenco o una tupla di stringhe, restituisce un elenco di elenchi di valori float.

Note

I valori Null vengono ignorati nelle colonne numeriche prima del calcolo. Per le colonne contenenti solo valori Null, viene restituito un elenco vuoto.

Examples

Calcolare i quantili per una singola colonna.

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]

Calcolare i quantili per più colonne.

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

Gestire i valori 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]