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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。