approxQuantile (DataFrameStatFunctions)

Beräknar ungefärliga quantiles för numeriska kolumner i en DataFrame.

Resultatet av den här algoritmen har följande deterministiska bindning: om DataFrame har N-element och om vi begär kvantilen med sannolikhet p upp till fel errreturnerar algoritmen ett exempel x från DataFrame så att den exakta rangordningen x för är nära (p _ N). Mer exakt, floor((p - err) _ N) <= rank(x) <= ceil((p + err) \* N).

Den här metoden implementerar en variant av Greenwald-Khanna-algoritmen med vissa hastighetsoptimeringar.

Syntax

approxQuantile(col, probabilities, relativeError)

Parameters

Parameter Type Beskrivning
col str, list eller tuppeln Ett enstaka kolumnnamn eller en lista med namn för flera kolumner.
probabilities lista eller tuppeln av flyttal En lista över kvantilannolikheter. Varje tal måste vara en flyttal i intervallet [0, 1]. Till exempel är 0,0 det minsta, 0,5 är medianvärdet och 1,0 är det maximala.
relativeError flyta/sväva Den relativa målprecisionen för att uppnå (>= 0). Om värdet är noll beräknas de exakta kvantantiklarna, vilket kan vara mycket dyrt. Värden som är större än 1 ger samma resultat som 1.

Retur

list

Om col är en sträng returnerar du en lista med flyttal. Om col är en lista eller tuppeln med strängar returnerar en lista med listor med flyttal.

Notes

Null-värden ignoreras i numeriska kolumner före beräkningen. För kolumner som endast innehåller null-värden returneras en tom lista.

Exempel

Beräkna kvantantiles för en enda kolumn.

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]

Beräkna kvantantiles för flera kolumner.

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

Hantera null-värden.

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]