gpt4 book ai didi

python - 在 pandas 数据框中重新采样 Hz

转载 作者:行者123 更新时间:2023-12-01 07:18:10 27 4
gpt4 key购买 nike

我正在 python 上的 pandas 中开发一个项目。我收到这样的 .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 频率。

我该怎么做?我是否需要将 Timestamp 转换为实际秒数,然后使用 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>)选择下采样方法。有关频率的更多信息,请考虑 this问题。

<小时/>总而言之,您最好的选择是尝试找出时间戳到底是什么,将其转换为日期时间,然后使用

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

或者使用 for 循环迭代每个名称并对每个系列单独使用重新采样。

关于python - 在 pandas 数据框中重新采样 Hz,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57844540/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com