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]