繁体   English   中英

在熊猫数据框中重新采样Hz

[英]Resampling Hz in a pandas dataframe

我正在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多个名称,每个名称都有成千上万的数据。 数据以200 Hz的频率记录,我认为时间戳记数字表示毫秒,尽管我不确定,我无法访问此信息。 我必须重新采样到50 Hz频率。

我怎样才能做到这一点? 我需要将时间戳转换为实际秒数,然后使用0.25s的.resample()函数吗? 我应该使用.groupby["Name"]函数吗? 先感谢您!

即使您不确定时间戳记,我也无法完全完整地回答该问题,但我会尽力为您提供一些一般性指导。
您在这里拥有的称为面板数据 ,每个“名称”有许多不同的时间序列。
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分钟,如下所示:

series.resample('10T').mean()

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


最后,最好的选择是尝试找出确切的时间戳,将其转换为DateTime,然后使用

 df.groupby(['Name']).resample('20L').mean() 

或使用for循环遍历每个名​​称,并分别对每个系列使用重采样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM