PySpark 中的系统采样
Systematic sampling in PySpark
我对 PySpark 很陌生,一直在努力寻找我正在寻找的答案。
我的住户样本量很大,想进行系统抽样。就像真正的系统抽样一样,我想从一个随机起点开始,然后定期 select 个家庭(例如每 50 个家庭)。我研究了 sample() 和 sampleBy(),但我认为这些并不是我所需要的。任何人都可以就我如何做到这一点提出任何建议吗?非常感谢您的帮助!
您可能想使用 monotonically_increasing_id
然后对 50 求模以获得您想要的结果。
如果你只有 1 个分区,monotonically_increasing_id
有效,所以如果你有不止 1 个分区,你可以考虑 row_number
.
中的“备注”
和row_number
,
from pyspark.sql import functions as F
df = df.withColumn("index", F.row_number().over(Window.orderBy('somecol')))
.filter(((F.col('index') + random_start) % 50) == 0)
我对 PySpark 很陌生,一直在努力寻找我正在寻找的答案。
我的住户样本量很大,想进行系统抽样。就像真正的系统抽样一样,我想从一个随机起点开始,然后定期 select 个家庭(例如每 50 个家庭)。我研究了 sample() 和 sampleBy(),但我认为这些并不是我所需要的。任何人都可以就我如何做到这一点提出任何建议吗?非常感谢您的帮助!
您可能想使用 monotonically_increasing_id
然后对 50 求模以获得您想要的结果。
monotonically_increasing_id
有效,所以如果你有不止 1 个分区,你可以考虑 row_number
.
和row_number
,
from pyspark.sql import functions as F
df = df.withColumn("index", F.row_number().over(Window.orderBy('somecol')))
.filter(((F.col('index') + random_start) % 50) == 0)