如何通过仅提供采样率来对时间序列进行采样?

时间:2017-05-25 12:09:19

标签: python pandas time-series

我有一个系列vec已经以2000Hz采样。我想做的是以50Hz的步长对这个系列进行采样。我的问题是我不太明白如何用熊猫做到这一点。

我不太明白如何将vec包裹到DataFrame并相应地使用pd.date_range设置时间戳。

可以显示的代码是完全错误的,因此我无法向您展示到目前为止我所做的事情。但是我可以用伪Python向你展示我想做的事情:

# Get a date range for vec 
date_range = pd.date_range(len(vec), sampling_rate=2000, unit='Hz')
# Create a DataFrame for the 2000Hz series
df_2k = pd.DataFrame(vec, index=date_range)

# Sample down to 1950Hz, 1900Hz, ..
df_1950Hz = df_2k.resample(sampling_rate=1950, unit='Hz')
df_1900Hz = df_2k.resample(sampling_rate=1900, unit='Hz')

知道我该怎么做吗?

我认为什么也可以工作就像

 df_1950Hz = df_2k.drop_every(nth_sample=int(2000/50))

1 个答案:

答案 0 :(得分:3)

首先,从你的频率构建一个时期:

freq = 1950
period = '{}N'.format(int(1e9 / freq))

这为您提供了'512820N',Pandas将其理解为纳秒级。然后:

df2k.resample(period).mean() # you could use e.g. `last()` instead

至于你的初始索引,也许你想要这个:

freq = 2000
period = '{}N'.format(int(1e9 / freq))
index = pd.date_range(start, periods=len(vec), freq=period)

start是任意的。