PySpark DataFrame 的 sample(~)
方法返回 DataFrame 行的随机子集。
参数
1.withReplacement
| boolean
| optional
-
如果
True
,则进行替换采样,即允许重复行。 -
如果
False
,则不进行替换采样,即不允许重复行。
默认情况下,withReplacement=False
。
警告
如果 withReplacement=False
,则执行伯努利采样,这是一种迭代每个元素并将该元素以 fraction
的概率包含到样本中的技术。另一方面,withReplacemnt=True
将使用泊松采样。其实我不太明白这个,如果你知道这是什么,请告诉我!
2. fraction
| float
0
和 1
之间的数字,表示某个值包含在样本中的概率。例如,如果 fraction=0.5
,则每个元素将以 0.5
的概率包含在样本中。
警告
子集的样本大小将是随机的,因为采样是使用伯努利采样执行的(如果 withReplacement=True
)。这意味着即使设置fraction=0.5
也可能导致样本没有任何行!但平均而言,提供的 fraction
值将反映返回的行数。
3. seed
| int
| optional
再现性的种子。默认情况下,不会设置种子,这意味着每次派生的样本都是随机的。
返回值
PySpark 数据帧 (pyspark.sql.dataframe.DataFrame
)。
例子
考虑以下PySpark DataFrame:
df = spark.createDataFrame([["Alex", 20],\
["Bob", 24],\
["Cathy", 22],\
["Doge", 22]],\
["name", "age"])
df.show()
+-----+---+
| name|age|
+-----+---+
| Alex| 20|
| Bob| 24|
|Cathy| 22|
| Doge| 22|
+-----+---+
从 PySpark DataFrame 中采样随机行(伯努利采样)
要获取一个随机样本,其中某个元素包含在样本中的概率为 0.5
:
df.sample(fraction=0.5).show()
+----+---+
|name|age|
+----+---+
|Doge| 22|
+----+---+
再次运行代码可能会产生不同大小的样本:
df.sample(fraction=0.5).show()
+-----+---+
| name|age|
+-----+---+
| Alex| 20|
|Cathy| 22|
+-----+---+
这是因为采样是基于伯努利采样,如开头所述。
放回采样(泊松采样)
再次考虑以下PySpark DataFrame:
df = spark.createDataFrame([["Alex", 20],\
["Bob", 24],\
["Cathy", 22],\
["Doge", 22]],\
["name", "age"])
df.show()
+-----+---+
| name|age|
+-----+---+
| Alex| 20|
| Bob| 24|
|Cathy| 22|
| Doge| 22|
+-----+---+
要进行替换采样(使用泊松采样),请使用 withReplacement=True
:
df.sample(fraction=0.5, withReplacement=True).show()
+-----+---+
| name|age|
+-----+---+
| Alex| 20|
| Bob| 24|
| Bob| 24|
| Bob| 24|
|Cathy| 22|
+-----+---+
请注意样本大小如何超过原始数据集大小。
相关用法
- Python Pandas DataFrame sample方法用法及代码示例
- Python PySpark DataFrame sampleBy方法用法及代码示例
- Python Pandas DataFrame swaplevel方法用法及代码示例
- Python Pandas DataFrame set_axis方法用法及代码示例
- Python Pandas DataFrame select_dtypes方法用法及代码示例
- Python PySpark DataFrame selectExpr方法用法及代码示例
- Python PySpark DataFrame show方法用法及代码示例
- Python PySpark DataFrame select方法用法及代码示例
- Python Pandas DataFrame stack方法用法及代码示例
- Python Pandas DataFrame shift方法用法及代码示例
- Python Pandas DataFrame sort_index方法用法及代码示例
- Python Pandas DataFrame size属性用法及代码示例
- Python Pandas DataFrame set_index方法用法及代码示例
- Python Pandas DataFrame swapaxes方法用法及代码示例
- Python PySpark DataFrame sort方法用法及代码示例
- Python Pandas DataFrame sub方法用法及代码示例
- Python Pandas DataFrame sem方法用法及代码示例
- Python Pandas DataFrame sum方法用法及代码示例
- Python Pandas DataFrame std方法用法及代码示例
- Python PySpark DataFrame summary方法用法及代码示例
- Python Pandas DataFrame shape属性用法及代码示例
- Python Pandas DataFrame sort_values方法用法及代码示例
- Python Pandas DataFrame slice_shift方法用法及代码示例
- Python Pandas DataFrame squeeze方法用法及代码示例
- Python Pandas DataFrame empty属性用法及代码示例
注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 PySpark DataFrame | sample method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。