当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。