メインコンテンツまでスキップ

パーセンタイル

指定されたパーセンテージにおける数値列exprの正確なパーセンタイルを、[0.0, 1.0] の範囲の値で返します。

構文

Python
from pyspark.sql import functions as sf

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

パラメーター

パラメーター

Type

説明

col

pyspark.sql.Column または文字列

数値列。

percentage

pyspark.sql.Column、float、floatのリスト、またはfloatのタプル

小数点以下のパーセンテージ(0.0 ~ 1.0 の範囲でなければなりません)。

frequency

pyspark.sql.Column または整数

頻度を制御する正の数値リテラル (デフォルト: 1)。

戻り値

pyspark.sql.Column: 数値列の正確なpercentile

例1 :複数のパーセンタイルを計算する

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

例2 :グループ別にパーセンタイルを計算する

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...|
+---+-------------------------+