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 |
|---|---|---|
| str, liste ou tuple | Un seul nom de colonne, ou une liste de noms pour plusieurs colonnes. |
| 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. |
| 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.
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.
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.
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]