Aller au contenu principal

percentile_approx

Renvoie la valeur percentile approximative de la colonne numérique col, qui est la plus petite valeur parmi les col valeurs ordonnées (triées de la plus petite à la plus grande) telle que pas plus de percentage des col valeurs sont inférieures ou égales à cette valeur.

Syntaxe

Python
from pyspark.sql import functions as sf

sf.percentile_approx(col, percentage, accuracy=10000)

parameter

parameter

Type

Description

col

pyspark.sql.Column ou str

Colonne d'entrée.

percentage

pyspark.sql.Column, flottant, liste de flottants ou tuple de flottants

Pourcentage décimal (doit être compris entre 0,0 et 1,0). Lorsque le pourcentage est un tableau, chaque valeur doit être comprise entre 0,0 et 1,0.

accuracy

pyspark.sql.Column ou int

Un littéral numérique positif qui contrôle la précision de l'approximation au détriment de la mémoire. Une valeur plus élevée offre une meilleure précision. 1,0/accuracy is the relative error (default: 10000).

parameter

Type

Description

col

pyspark.sql.Column ou str

Colonne d'entrée.

percentage

pyspark.sql.Column, flottant, liste de flottants ou tuple de flottants

Pourcentage décimal (doit être compris entre 0,0 et 1,0). Lorsque le pourcentage est un tableau, chaque valeur doit être comprise entre 0,0 et 1,0.

accuracy

pyspark.sql.Column ou int

Un littéral numérique positif qui contrôle la précision de l'approximation au détriment de la mémoire. Une valeur plus élevée offre une meilleure précision. 1,0/accuracy is the relative error (default: 10000).

Renvoie

pyspark.sql.Column: percentile approximatif de la colonne numérique.

Exemples

Exemple 1 : Calculer des percentiles approximatifs

Python
from pyspark.sql import functions as sf
key = (sf.col("id") % 3).alias("key")
value = (sf.randn(42) + key * 10).alias("value")
df = spark.range(0, 1000, 1, 1).select(key, value)
df.select(
sf.percentile_approx("value", [0.25, 0.5, 0.75], 1000000)
).show(truncate=False)
Output
+----------------------------------------------------------+
|percentile_approx(value, array(0.25, 0.5, 0.75), 1000000) |
+----------------------------------------------------------+
|[0.7264430125286..., 9.98975299938..., 19.335304783039...]|
+----------------------------------------------------------+

Exemple 2 : Calculer le percentile approximatif par groupe

Python
from pyspark.sql import functions as sf
key = (sf.col("id") % 3).alias("key")
value = (sf.randn(42) + key * 10).alias("value")
df = spark.range(0, 1000, 1, 1).select(key, value)
df.groupBy("key").agg(
sf.percentile_approx("value", sf.lit(0.5), sf.lit(1000000))
).sort("key").show()
Output
+---+--------------------------------------+
|key|percentile_approx(value, 0.5, 1000000)|
+---+--------------------------------------+
| 0| -0.03519435193070...|
| 1| 9.990389751837...|
| 2| 19.967859769284...|
+---+--------------------------------------+