重新采样赫兹在pandas数据框中

2024-09-28 20:56:59 发布

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

我正在做一个关于python的熊猫项目。我收到如下.csv文件作为输入:

Name   Timestamp       Data
A1       259           [1.1,1.0,0.1]
A1       260           [-0.1,1.2,0.3]
A1       261           [0.1,0.2,-0.3]
...
A1       14895         [1.4,0.3,1.8]
...      
A2       278           [-1.1,1.2,0.4]
A2       353           [-0.1,1.2,0.3]
A2       409           [-0.1,1.2,0.3]
...
A2       14900         [-0.1,1.2,0.3]
...
A1140    107           [-0.5,-1.0,-1.0]
A1140    107           [0.6,0.1,0.3]
A1140    114           [-1.1,-1.2,0.3] 
... 
A1140    14995         [-1,1.2,0.4]

我有1140多个名字,每个名字都有成百上千的数据。 数据是以200Hz的频率记录的,我认为时间戳数字表示毫秒,尽管我不确定,但我无法访问这些信息。 我得重新采样到50赫兹的频率。在

我该怎么做?是否需要将时间戳转换为实际秒数,然后使用0.25s的.resample()函数?我应该使用.groupby["Name"]函数吗? 提前谢谢你!在


Tags: 文件csv数据项目函数namea2data
1条回答
网友
1楼 · 发布于 2024-09-28 20:56:59

我不能完整地回答这个问题,因为即使你也不确定时间戳,但我会给你一些一般性的指导。
这里的数据称为面板数据,每个“名称”有许多不同的时间序列。
groupby(['Name']).apply(<func>)确实是一种有用的方法,因为它允许分别操作每个不同的名称,允许您使用时间序列的更简单的数据类型 时间序列是以下类型的数据:

Date                  Value
2000-01-01 00:00:00   3
2000-01-01 00:03:00   12
2000-01-01 00:06:00   21

如您所见,每个样本的采样时间是3分钟。我们可以调用resample()并将其转换为10分钟,如下所示:

^{pr2}$

请注意,您可以使用.apply(<func>)来选择下采样方法,而不是mean。有关频率的更多信息,请考虑this问题。


总之,最好的办法是找出时间戳的确切含义,将其转换为日期时间,然后使用其中之一
df.groupby(['Name']).resample('20L').mean()

或者使用for循环遍历每个名称并分别对每个序列使用重采样。在

相关问题 更多 >