随机进入采样,限制在几分之一秒内

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了随机进入采样,限制在几分之一秒内相关的知识,希望对你有一定的参考价值。

我有带时间戳的标记数据,每个规则时间段的条目数不规则。即,有时我每秒可以输入25个条目,而其他人每秒可以输入100个条目(这是财务数据)。

要创建一个新的数据库,我想随机选择一个我在定义的时间段内拥有的条目,比如说前半秒和后半秒,以减小数据集的大小,并且在条目内创建统一性。如何在熊猫中做到这一点?

非常感谢。

答案

[可能不是最好的,但我认为它可以工作:按您想要的秒数除以resample您的DataFrame / Series,然后从每个bin中挑选一个随机行(如果没有数据,则放NaN):

import pandas as pd
import numpy as np

#making fake date, randomly picked times in a minute at 100ms frequency
dr = pd.date_range('01-01-2020 9:00:00', '01-01-2020 9:01:00', freq='100ms')
dates = sorted(np.random.choice(dr, size=100))
df = pd.DataFrame(index=dates,data=np.random.random(size=(100,2)),columns=['Values','Values2'])

#resample
resampled = df.resample('500ms')

#iterate over resampled, and pick a random row (if there, else np.nan)
output = pd.DataFrame(columns=df.columns)
for time,frame in resampled:
    if not frame.empty:
        random_index = np.random.choice(range(len(frame.index)))
        output.loc[time] = list(frame.iloc[random_index])
    else:
        output.loc[time] = np.nan

输入:

#df.head(10)
                           Values   Values2
2020-01-01 09:00:00.100  0.190373  0.831841
2020-01-01 09:00:00.200  0.218069  0.586812
2020-01-01 09:00:00.500  0.611154  0.603198
2020-01-01 09:00:00.900  0.076038  0.061462
2020-01-01 09:00:00.900  0.519908  0.259880
2020-01-01 09:00:00.900  0.652016  0.925601
2020-01-01 09:00:01.000  0.256711  0.586374
2020-01-01 09:00:01.300  0.939387  0.409488
2020-01-01 09:00:01.400  0.075527  0.691568
2020-01-01 09:00:01.400  0.283443  0.490719

输出:

#output.head(3)
                           Values   Values2
2020-01-01 09:00:00.000  0.190373  0.831841
2020-01-01 09:00:00.500  0.652016  0.925601
2020-01-01 09:00:01.000  0.256711  0.586374

以上是关于随机进入采样,限制在几分之一秒内的主要内容,如果未能解决你的问题,请参考以下文章

可构建AI的「AI」诞生:几分之一秒内,就能预测新网络的参数

使用 X509 证书进行消息签名

nmap 在 localhost 上显示随机打开的端口几分之一秒

你如何在 Java 中写入磁盘(使用刷新)并保持性能?

AudioQueue 不起作用 Window Miniaturize

Spark SQL/Hive 查询永远需要加入