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

dis*_*ame 0 python time-series pandas

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

我不太明白如何将我的包装vec成 aDataFrame并相应地设置时间戳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')
Run Code Online (Sandbox Code Playgroud)

知道我该怎么做吗?

我认为也可以工作的是

 df_1950Hz = df_2k.drop_every(nth_sample=int(2000/50))
Run Code Online (Sandbox Code Playgroud)

Joh*_*nck 5

首先,从您的频率构建一个周期:

freq = 1950
period = '{}N'.format(int(1e9 / freq))
Run Code Online (Sandbox Code Playgroud)

这为您'512820N'提供了 Pandas 理解为纳秒的内容。然后:

df2k.resample(period).mean() # you could use e.g. `last()` instead
Run Code Online (Sandbox Code Playgroud)

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

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

哪里start随意。