Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Returnerar det ungefärliga percentile värdet för den numeriska kolumnen col som är det minsta värdet i de ordnade col värdena (sorterade från minst till störst) så att inte mer än percentage värden col är mindre än värdet eller lika med det värdet.
Syntax
from pyspark.sql import functions as sf
sf.percentile_approx(col, percentage, accuracy=10000)
Parameterar
| Parameter | Typ | Description |
|---|---|---|
col |
pyspark.sql.Column eller str |
Indatakolumn. |
percentage |
pyspark.sql.Column, float, list of floats or tuple of floats |
Procentandel i decimaltal (måste vara mellan 0,0 och 1,0). När procentvärdet är en matris måste varje värde vara mellan 0,0 och 1,0. |
accuracy |
pyspark.sql.Column eller int |
En positiv numerisk literal som styr uppskattningsnoggrannheten till minneskostnaden. Högre värde ger bättre noggrannhet. 1.0/precision är det relativa felet (standard: 10000). |
Retur
pyspark.sql.Column: ungefärligt percentile för den numeriska kolumnen.
Examples
Exempel 1: Beräkna ungefärliga percentiler
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)
+----------------------------------------------------------+
|percentile_approx(value, array(0.25, 0.5, 0.75), 1000000) |
+----------------------------------------------------------+
|[0.7264430125286..., 9.98975299938..., 19.335304783039...]|
+----------------------------------------------------------+
Exempel 2: Beräkna ungefärlig percentil efter grupp
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()
+---+--------------------------------------+
|key|percentile_approx(value, 0.5, 1000000)|
+---+--------------------------------------+
| 0| -0.03519435193070...|
| 1| 9.990389751837...|
| 2| 19.967859769284...|
+---+--------------------------------------+