當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python PySpark DataFrame sampleBy方法用法及代碼示例


PySpark DataFrame 的sampleBy(~) 方法基於列執行分層采樣。請參閱下麵的示例以進行說明。

參數

1.col | Columnstring

執行采樣的列。

2. fractions | dict

包含該值的概率。請參閱下麵的示例以進行說明。

3. seed | int | optional

每次對 seed 使用相同的值都會產生完全相同的結果。默認情況下,不會設置種子,這意味著每次運行該方法時結果都會不同。

返回值

PySpark 數據幀。

例子

考慮以下PySpark DataFrame:

from pyspark.sql.types import *
vals = ['a','a','a','a','a','a','b','b','b','b']
df = spark.createDataFrame(vals, StringType())
df.show(3)



+-----+
|value|
+-----+
|    a|
|    a|
|    a|
+-----+
only showing top 3 rows

執行分層抽樣

讓我們根據 value 列進行分層采樣:

df.sampleBy('value', fractions={'a':0.5,'b':0.25}).show()



+-----+
|value|
+-----+
|    a|
|    a|
|    a|
|    b|
|    b|
+-----+

在這裏,值為 'a' 的行將以 0.5 的概率包含在我們的樣本中,而值為 'b' 的行將以 0.25 的概率包含在我們的樣本中。

警告

每次包含的樣本數量都會不同。例如,指定 {'a':0.5} 並不意味著將包含值為 'a' 的一半行 - 相反,它意味著將以 0.5 的概率包含每一行。這意味著在某些情況下,所有具有值 'a' 的行都將出現在最終樣本中。

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 PySpark DataFrame | sampleBy method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。