【问题标题】:How to select n chunks randomly from a dataset如何从数据集中随机选择 n 个块
【发布时间】:2019-06-27 06:01:35
【问题描述】:

我有 100 个样本块,每个块有 100 个元素。一个chunk中的元素相隔5秒;然而,来自不同块的元素之间的时间差至少是 5 小时(不是固定时间)。我的主要目标是从数据集中随机挑选 10 个块。

我的数据集:

index     time                  value   
i       12-1-2019 05:22:43       12         }  Chunk 1
i+1     12-1-2019 05:22:48       13
i+2     12-1-2019 05:22:53       14
..
i+99  ...............................

i+x      12-1-2019 13:32:12      31         }  Chunk 2
i+x+1    12-1-2019 13:32:17      77
i+x+2    12-1-2019 13:32:22      16
..
i+x+99  ...............................

i+x      14-1-2019 23:45:43      14         }  Chunk 3
i+x+1    14-1-2019 23:45:48      57
i+x+2    14-1-2019 23:45:53      46
..
i+x+99  ...............................

注意:块是有序的(即:块 1 出现在块 2 之前,块 2 之前出现在块 3 之前,依此类推)。

我想随机选择 100 个中的 10 个。但是,chunk中元素的顺序很重要,不能打乱。

【问题讨论】:

  • 那么,数据集是什么格式的?一个文本文件、一个列表列表、一个字典列表、一个熊猫数据框。两种格式都可以,但我想知道你的格式是什么...
  • @SergeBallesta 它在熊猫数据帧中

标签: python pandas random


【解决方案1】:

如果我没记错的话,你的第一个块从索引 0 到索引 99,第二个块从索引 99 到索引 199,依此类推。

如果正确,您可以从数据集中获得 0 到 99 和 iloc 适当行的十个唯一随机数。

假设您的数据在 pandas DataFrame 中:

[dataset.iloc[index*100:index*100 + 100] for index in random.sample(range(0,100),10)]

我没有测试代码,因为我没有你的数据,但上面的代码行应该给你一个包含 10 个长度为 100 的块的列表。

如果列表中的块需要按照原始数据框中的顺序进行排序,您可以对随机数进行排序:

[dataset.iloc[index*100:index*100 + 100] for index in sorted(random.sample(range(0,100),10))]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多