Freigeben über


caQuantile (DataFrameStatFunctions)

Berechnet die ungefähren Quantiles numerischer Spalten eines .DataFrame

Das Ergebnis dieses Algorithmus weist die folgende deterministische Bindung auf: Wenn die DataFrame N-Elemente vorhanden sind und wenn wir das Quantile bei der Wahrscheinlichkeit p bis zum Fehler erranfordern, gibt der Algorithmus eine Stichprobe x aus der DataFrame so zurück, dass die genaue Rangfolge x nahe (p _ N) liegt. Genauer gesagt. floor((p - err) _ N) <= rank(x) <= ceil((p + err) \* N)

Diese Methode implementiert eine Variation des Greenwald-Khanna Algorithmus mit einigen Geschwindigkeitsoptimierungen.

Syntax

approxQuantile(col, probabilities, relativeError)

Parameter

Parameter Typ Beschreibung
col str, list, or tuple Ein einzelner Spaltenname oder eine Liste mit Namen für mehrere Spalten.
probabilities Liste oder Tupel von Float Eine Liste der Quantile-Wahrscheinlichkeiten. Jede Zahl muss ein Gleitkomma im Bereich [0, 1] sein. Beispielsweise ist 0,0 das Minimum, 0,5 ist der Median, und 1,0 ist das Maximum.
relativeError Schweben Die relative Zielgenauigkeit, die erreicht werden soll (>= 0). Bei Festlegung auf Null werden die genauen Quantiles berechnet, was sehr teuer sein könnte. Werte größer als 1 geben dasselbe Ergebnis wie 1 an.

Rückkehr

list

Wenn col es sich um eine Zeichenfolge handelt, wird eine Liste von Floats zurückgegeben. Wenn col es sich um eine Liste oder ein Tupel von Zeichenfolgen handelt, wird eine Liste mit Listen mit Floats zurückgegeben.

Hinweise

Nullwerte werden vor der Berechnung in numerischen Spalten ignoriert. Bei Spalten, die nur NULL-Werte enthalten, wird eine leere Liste zurückgegeben.

Beispiele

Berechnen von Quantiles für eine einzelne Spalte.

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]

Berechnen von Quantiles für mehrere Spalten.

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

Behandeln sie Nullwerte.

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]