approxQuantile (DataFrameStatFunctions)

Berekent de geschatte kwantielen van numerieke kolommen van een DataFrame.

Het resultaat van dit algoritme heeft de volgende deterministische afhankelijkheid: als het DataFrame N-elementen bevat en als we het kwantiel bij waarschijnlijkheid p tot fout erraanvragen, retourneert het algoritme een steekproef x van de DataFrame waarde, zodat de exacte rang x van dicht bij (p _ N) ligt. Meer precies, floor((p - err) _ N) <= rank(x) <= ceil((p + err) \* N).

Met deze methode wordt een variatie van het Greenwald-Khanna algoritme geïmplementeerd met enkele snelheidsoptimalisaties.

Syntaxis

approxQuantile(col, probabilities, relativeError)

Parameterwaarden

Kenmerk Typ Beschrijving
col str, list of tuple Eén kolomnaam of een lijst met namen voor meerdere kolommen.
probabilities lijst of tuple van float Een lijst met kwantiel waarschijnlijkheden. Elk getal moet een float in het bereik [0, 1] zijn. 0,0 is bijvoorbeeld het minimum, 0,5 is de mediaan en 1,0 is het maximum.
relativeError zweven De relatieve doelprecisie om te bereiken (>= 0). Als deze is ingesteld op nul, worden de exacte kwantielen berekend, wat erg duur kan zijn. Waarden groter dan 1 geven hetzelfde resultaat als 1.

Retouren

list

Als col dit een tekenreeks is, wordt een lijst met floats geretourneerd. Als col dit een lijst of tuple met tekenreeksen is, retourneert u een lijst met lijsten met floats.

Aantekeningen

Null-waarden worden genegeerd in numerieke kolommen vóór de berekening. Voor kolommen met alleen null-waarden wordt een lege lijst geretourneerd.

Examples

Bereken kwantielen voor één kolom.

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]

Bereken kwantielen voor meerdere kolommen.

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

Null-waarden verwerken.

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]