0

我是熊猫新手。我发现它对时间序列数据很有用,但仅当采样间隔是标准单位(例如,分钟、小时、天)时。如果我以更快但不寻常的速率(例如数据采集)对数据进行采样怎么办?例如。512 Hz(采样间隔 ~1.95 ms)

我可以不用 Pandas,但只是想知道它是否适合这种类型的时间序列,其中采样间隔不是标准时间单位的整数。

编辑:我很抱歉不精确。我设法让 Pandas 通过以下代码理解类似工程的时间序列(我们更习惯于以 Hz 为单位指定采样频率,而不是像天、周、月等长周期)...

import pandas as pd

fs = 256. #Hz
period = str(int(round(1000000./fs)))+'U'    #microseconds
rng = pd.date_range('1/1/2011', periods=len(dat), freq=period)
serialData = pd.Series(data,index = rng)

假设记录开始于 2011 年 1 月 1 日零小时,这有效并获得了正确的采样频率。

但是,从文档中如何做到这一点并不明显。

在尝试以 512Hz(频率加倍)重新采样数据时,我也遇到了问题。我收到此错误消息:

C:\Users\Andrew\Anaconda\lib\site-packages\pandas\core\format.py:1872: RuntimeWarning: 在更大的
has_large_values = (abs_vals > 1e8).any() 中遇到无效值 C:\Users\Andrew\ Anaconda\lib\site-packages\pandas\core\format.py:1873: RuntimeWarning: 在少遇到无效值 has_small_values = ((abs_vals < 10 ** (-self.digits)) & C:\Users\Andrew\Anaconda \lib\site-packages\pandas\core\format.py:1874: RuntimeWarning: 在更大 (abs_vals > 0)).any() 中遇到无效值

如果我将采样周期从“3906U”更改为“2S”并重新采样为“1S”(将采样频率加倍),我不会收到此错误。

我的数据有 800 万个样本。如果我尝试绘制 Pandas TimeSeries 对象,则会出现内存错误。

如果我只是将数据视为一维 numpy 数组,我不会遇到这些问题。所以我想我会在我通常使用的工程时间序列中坚持使用 numpy。

PS。我的编辑只是尝试帮助任何尝试对长数据和基于 Hz/KHz/MHz 等的采样做类似事情的人。

4

0 回答 0