以下是一个使用Python实现按范围分层抽样的示例代码:
import random
def stratified_sampling(data, ranges, sizes):
sample = []
for r, s in zip(ranges, sizes):
# 根据范围获取符合条件的数据
filtered_data = [x for x in data if r[0] <= x <= r[1]]
# 随机抽样
sample.extend(random.sample(filtered_data, s))
return sample
# 示例数据
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 按范围定义多个层次
ranges = [(1, 4), (5, 7), (8, 10)]
# 每个层次的抽样大小
sizes = [2, 1, 2]
# 进行按范围分层抽样
sample = stratified_sampling(data, ranges, sizes)
print(sample)
在上述示例中,stratified_sampling
函数接受三个参数:原始数据data
、范围列表ranges
和大小列表sizes
。ranges
列表定义了每个层次的范围,sizes
列表定义了每个层次的抽样大小。
函数首先创建一个空的sample
列表,然后对于每个层次,根据范围对原始数据进行筛选,并使用random.sample
函数从符合条件的数据中随机抽样指定大小。最后,将抽样结果添加到sample
列表中。
在示例中,原始数据是一个包含1到10的整数列表,范围列表定义了三个层次的范围,大小列表定义了每个层次的抽样大小。运行示例代码后,将输出一个按范围分层抽样的结果列表。
下一篇:按范围分组的SQL查询