[英]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>)
来选择下采样方法。 有关频率的更多信息,请考虑此问题。
df.groupby(['Name']).resample('20L').mean()
或使用for循环遍历每个名称,并分别对每个系列使用重采样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.