approxQuantile (DataFrameStatFunctions)

DataFrameの数値列の近似分位数を計算します。

このアルゴリズムの結果には、次の決定論的バインドがあります。DataFrameに N 個の要素があり、確率p誤差errまで分位点を要求した場合、アルゴリズムはxからサンプル DataFrameを返し、xランクが (p _ N) に近づくようにします。 より正確には、 floor((p - err) _ N) <= rank(x) <= ceil((p + err) \* N)

このメソッドは、いくつかの速度最適化を使用して、Greenwald-Khanna アルゴリズムのバリエーションを実装します。

構文

approxQuantile(col, probabilities, relativeError)

パラメーター

パラメーター タイプ 説明
col str、list、またはタプル 1 つの列名、または複数の列の名前のリスト。
probabilities float のリストまたはタプル 分位確率の一覧。 各数値は、[0, 1] の範囲の浮動小数点数である必要があります。 たとえば、0.0 は最小値、0.5 は中央値、1.0 は最大値です。
relativeError float 達成する相対ターゲット精度 (>= 0)。 0 に設定すると、正確な分位点が計算され、非常にコストがかかる可能性があります。 1 より大きい値は、1 と同じ結果になります。

返品

list

colが文字列の場合は、浮動小数点の一覧を返します。 colが文字列のリストまたはタプルである場合は、浮動小数点のリストのリストを返します。

メモ

計算前の数値列では null 値は無視されます。 null 値のみを含む列の場合は、空のリストが返されます。

例示

1 つの列の分位点を計算します。

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]

複数の列の分位点を計算します。

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 値を処理します。

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]