approxQuantile (DataFrameStatFunctions)

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

Le résultat de cet algorithme a la limite déterministe suivante : si le DataFrame n éléments et si nous demandons le quantile à la probabilité p jusqu’à l’erreur err, l’algorithme retourne un échantillon x à partir de celui-ci DataFrame afin que le rang exact soit x proche (p _ N). Plus précisément, floor((p - err) _ N) <= rank(x) <= ceil((p + err) \* N).

Cette méthode implémente une variante de l’algorithme Greenwald-Khanna avec des optimisations de vitesse.

Syntaxe

approxQuantile(col, probabilities, relativeError)

Paramètres

Paramètre Type Description
col str, list ou tuple Un nom de colonne unique ou une liste de noms pour plusieurs colonnes.
probabilities liste ou tuple de float Liste des probabilités quantiles. Chaque nombre doit être un float 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 flotter Précision cible relative à atteindre (>= 0). Si la valeur est égale à zéro, les quantiles exacts sont calculés, ce qui peut être très coûteux. Les valeurs supérieures à 1 donnent le même résultat que 1.

Retours

list

S’il col s’agit d’une chaîne, retourne une liste de floats. S’il col s’agit d’une liste ou d’un tuple de chaînes, retourne une liste de listes de floats.

Remarques

Les valeurs Null sont ignorées dans les colonnes numériques avant le calcul. Pour les colonnes contenant uniquement des valeurs Null, une liste vide est retournée.

Exemples

Calculez des quantiles pour une seule colonne.

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]

Calculez des quantiles pour plusieurs colonnes.

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érez les valeurs 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]