Aller au contenu principal

approxQuantile (DataFrameStatFunctions)

Calcule les quantiles approximatifs des colonnes numériques d’un DataFrame.

Le résultat de cet algorithme a la borne déterministe suivante : si le DataFrame a N éléments et si nous demandons le quantile à la probabilité p jusqu'à l'erreur err, alors l'algorithme retournera un échantillon x du DataFrame de sorte que le rang exact de x soit proche de (p _ N). Plus précisément, floor((p - err) _ N) <= rank(x) <= ceil((p + err) \* N).

Cette méthode implémente une variation de l'algorithme Greenwald-Khanna avec quelques optimisations de vitesse.

Syntaxe

approxQuantile(col, probabilities, relativeError)

parameter

parameter

Type

Description

col

str, liste ou tuple

Un seul nom de colonne, ou une liste de noms pour plusieurs colonnes.

probabilities

liste ou tuple de flottants

Liste de probabilités quantiles. Chaque nombre doit être un flottant dans la plage [0, 1]. Par exemple, 0,0 est le minimum, 0,5 est la médiane et 1,0 est le maximum.

relativeError

Présentation libre

La précision cible relative à atteindre (>= 0). Si la valeur est définie à zéro, les quantiles exacts sont calculés, ce qui pourrait être très coûteux. Les valeurs supérieures à 1 donnent le même résultat que 1.

parameter

Type

Description

col

str, liste ou tuple

Un seul nom de colonne, ou une liste de noms pour plusieurs colonnes.

probabilities

liste ou tuple de flottants

Liste de probabilités quantiles. Chaque nombre doit être un flottant dans la plage [0, 1]. Par exemple, 0,0 est le minimum, 0,5 est la médiane et 1,0 est le maximum.

relativeError

Présentation libre

La précision cible relative à atteindre (>= 0). Si la valeur est définie à zéro, les quantiles exacts sont calculés, ce qui pourrait être très coûteux. Les valeurs supérieures à 1 donnent le même résultat que 1.

Renvoie

list

Si col est une chaîne de caractères, renvoie une liste de nombres à virgule flottante. Si col est une liste ou un tuple de chaînes, cela retourne une liste de listes de nombres à virgule flottante.

Notes

Les valeurs nulles sont ignorées dans les colonnes numériques avant le calcul. Pour les colonnes ne contenant que des valeurs nulles, une liste vide est renvoyée.

Exemples

Calculez les quantiles pour une seule colonne.

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]

Calculer les quantiles pour plusieurs colonnes.

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

Gérer les valeurs nulles.

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]