时间序列的变化频率

2024-04-26 04:26:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个布尔变量的数据帧,由时间戳定义。时间戳是不规则的,我想填补空白。我知道需要的频率是3毫秒

到目前为止,我可以做以下工作:

df = pd.read_csv(path, sep= ';')
df['timestamp'] = pd.to_datetime(df ['timestamp'], errors='raise',infer_datetime_format = True)
df = df.sort(['timestamp'])
df = df.set_index('timestamp')
df.reindex(pd.period_range(df.index[0], df.index[-1], freq='ms'))     
df = df.fillna(method = 'ffill')

因此,我使用ms间隔重新建立索引,并向前填充缺失的值(这正适合我的情况:所有变量都是布尔值,所以在每一时刻,当前状态都是数据中最后出现的状态)。在

如何每3毫秒重新采样一次?在

编辑:好像数据帧.重采样也可用于上采样。关于如何在我的案例中使用它有什么建议吗?我好像不明白它是怎么工作的。在


Tags: csv数据pathdfreaddatetimeindex定义
2条回答

使用^{}

df = pd.DataFrame({
    'timestamp': pd.to_datetime(['2015-02-01 15:14:11.30',
                                 '2015-02-01 15:14:11.36',
                                 '2015-02-01 15:14:11.39']),
    'B': [7,10,3]
})
print (df)
                timestamp   B
0 2015-02-01 15:14:11.300   7
1 2015-02-01 15:14:11.360  10
2 2015-02-01 15:14:11.390   3

df = df.set_index('timestamp').asfreq('3ms', method='ffill')

^{pr2}$

如果索引中有时间戳:

df = df.resample('3ms').ffill()

编辑:

绩效基准

^{pr2}$

结果:

0.03699994087219238
0.029999732971191406
(1459667, 1)

相关问题 更多 >