Aller au contenu principal

centile

Renvoie le ou les centiles exacts de la colonne numérique expr au(x) pourcentage(s) donné(s) avec une plage de valeurs de [0.0, 1.0].

Syntaxe

Python
from pyspark.sql import functions as sf

sf.percentile(col, percentage, frequency=1)

parameter

parameter

Type

Description

col

pyspark.sql.Column ou str

La colonne numérique.

percentage

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

Pourcentage décimal (doit être compris entre 0,0 et 1,0).

frequency

pyspark.sql.Column ou int

Un littéral numérique positif qui contrôle la fréquence (default : 1).

parameter

Type

Description

col

pyspark.sql.Column ou str

La colonne numérique.

percentage

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

Pourcentage décimal (doit être compris entre 0,0 et 1,0).

frequency

pyspark.sql.Column ou int

Un littéral numérique positif qui contrôle la fréquence (default : 1).

Renvoie

pyspark.sql.Column: l'exacte percentile de la colonne numérique.

Exemples

Exemple 1 : Calculer plusieurs centiles

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("value", [0.25, 0.5, 0.75], sf.lit(1))
).show(truncate=False)
Output
+--------------------------------------------------------+
|percentile(value, array(0.25, 0.5, 0.75), 1) |
+--------------------------------------------------------+
|[0.7441991494121..., 9.9900713756..., 19.33740203080...]|
+--------------------------------------------------------+

**Exemple 2** : Calculer le percentile 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("value", sf.lit(0.5), sf.lit(1))
).sort("key").show()
Output
+---+-------------------------+
|key|percentile(value, 0.5, 1)|
+---+-------------------------+
| 0| -0.03449962216667...|
| 1| 9.990389751837...|
| 2| 19.967859769284...|
+---+-------------------------+