approxQuantile (DataFrameStatFunctions)

Vypočítá přibližné kvantové hodnoty číselných sloupců DataFrame.

Výsledek tohoto algoritmu má následující deterministický mez: pokud DataFrame má N prvků a pokud požádáme kvantily pravděpodobností p až do chyby err, vrátí algoritmus vzorek x z DataFrame tak, aby přesný pořadí x bylo blízko (p _ N). Přesněji řečeno, floor((p - err) _ N) <= rank(x) <= ceil((p + err) \* N).

Tato metoda implementuje variantu algoritmu Greenwald-Khanna s některými optimalizacemi rychlosti.

Syntaxe

approxQuantile(col, probabilities, relativeError)

Parametry

Parameter Typ Description
col str, list nebo řazená kolekce členů Název jednoho sloupce nebo seznam názvů pro více sloupců
probabilities seznam nebo řazená kolekce členů float Seznam kvantových pravděpodobností. Každé číslo musí být plovoucí v rozsahu [0, 1]. Například 0,0 je minimum, 0,5 je medián a 1,0 je maximum.
relativeError float Relativní cílová přesnost k dosažení (>= 0). Pokud je hodnota nastavená na nulu, vypočítá se přesné quantily, což může být velmi nákladné. Hodnoty větší než 1 dávají stejný výsledek jako 1.

Návraty

list

Pokud col je řetězec, vrátí seznam float. Pokud col je seznam nebo řazená kolekce řetězců, vrátí seznam seznamů float.

Poznámky

Hodnoty null se před výpočtem ignorují v číselných sloupcích. Pro sloupce obsahující pouze hodnoty null se vrátí prázdný seznam.

Příklady

Vypočítat quantily pro jeden sloupec.

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]

Výpočet quantiles pro více sloupců

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

Zpracování hodnot null

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]