メインコンテンツまでスキップ

approxQuantile (DataFrameStatFunctions)

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

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

この手法は、速度最適化を施したグリーンウォルド・カンナアルゴリズムの変種を実装したものです。

構文

approxQuantile(col, probabilities, relativeError)

パラメーター

パラメーター

Type

説明

col

文字列、リスト、またはタプル

単一の列名、または複数の列名のリスト。

probabilities

float型のリストまたはタプル

分位確率のリスト。各数値は[0, 1]の範囲内の浮動小数点数でなければなりません。例えば、0.0は最小値、0.5は中央値、1.0は最大値です。

relativeError

float

達成すべき相対的な目標精度(≧0)。ゼロに設定すると、正確な分位数はコンピュートとなり、非常にコストがかかる可能性があります。 1より大きい値は、1と同じ結果をもたらします。

戻り値

list

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

注意

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

単一列の分位数を計算します。

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

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

Python
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値を処理する。

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