首页 > 解决方案 > 如何从数据集中提取 n 个块?

问题描述

我有一个包含 100,000 个样本和 2 个目标的数据集 {Pass, Fail} 我的主要目标是从数据集中随机提取 5 个连续样本的 5 个块(组),目标为“FAIL”。

我的数据集:

i           target             value
0            Fail               12
1            Fail               12
2            Fail               14
3            Fail               13
4            Fail               8 
5            Pass               40
6            Fail               12
7            Fail               7
8            Fail               9
9            Fail               11
10           Fail               19
11           Pass               44
12           Fail               16
13           Fail               4
.........................................
n

对于上述数据集,

List1=[0,1,2,3,4]

List2=[6,7,8,9,10]

可以是正确的结果;但是,应该从整个数据集中随机挑选块。

PS:数据集存储在excel表格中,并使用pandas导入。

标签: pythonpandasindexingchunks

解决方案


我会首先确定所有可接受大小的块,然后在该列表中随机选择。以下代码采用 RangeIndex 形式的简单数字索引(编号从 0 到 len-1)。如果索引不同,请使用reset_index干净的 RangeIndex。

s = pd.Series(np.where(df2.target=='Fail', 1, np.nan), index=df2.index)
ends = np.random.choice(s[s.rolling(5).count()==5].index.values, 5)

endsFail包含 5 个连续行的 5 个随机序列的终止索引df


推荐阅读