我有来自加速度计、陀螺仪、磁强计等传感器的数据,可以用可变采样率读取。我想减少采样到一个固定的采样率(30Hz)。以下是加速度计数据的示例:
Sensor X Y Z Mode Position
Timestamp
2013-02-12 05:51:58.265 A 0.561632 4.035009 11.055410 Car Chest
2013-02-12 05:51:58.267 A 1.404679 3.881728 9.484278 Car Chest
2013-02-12 05:51:58.268 A 1.174158 3.919450 9.981843 Car Chest
2013-02-12 05:51:58.269 A 0.561632 2.923720 11.093731 Car Chest
2013-02-12 05:51:58.284 A 1.519640 3.038681 10.174043 Car Chest
2013-02-12 05:51:58.286 A 2.480342 2.861599 8.639883 Car Chest
2013-02-12 05:51:58.288 A 1.814826 2.550546 9.535022 Car Chest
2013-02-12 05:51:58.289 A 2.040557 2.078129 10.788665 Car Chest
2013-02-12 05:51:58.290 A 2.498754 2.400708 10.625804 Car Chest
2013-02-12 05:51:58.292 A 2.208208 4.653673 9.372011 Car Chest
2013-02-12 05:51:58.310 A 2.909051 4.384083 8.916957 Car Chest
2013-02-12 05:51:58.320 A 2.189347 3.823349 8.916657 Car Chest
2013-02-12 05:51:58.340 A 1.487607 3.529510 9.110355 Car Chest
2013-02-12 05:51:58.360 A 1.665736 3.792813 9.294322 Car Chest
2013-02-12 05:51:58.396 A 1.856140 4.493655 8.671767 Car Chest
2013-02-12 05:51:58.402 A 0.986748 4.073030 9.238488 Car Chest
2013-02-12 05:51:58.426 A 1.353036 4.342619 9.574390 Car Chest
2013-02-12 05:51:58.440 A 2.628983 4.539909 9.556427 Car Chest
2013-02-12 05:51:58.470 A 2.980901 4.269272 9.765094 Car Chest
2013-02-12 05:51:58.494 A 2.846331 3.756588 10.500813 Car Chest
为了找出原始采样率,我尝试了:
pd.infer_freq(df.index)
但它返回None
,可能是因为时间戳索引不是“常量”。因此,我尝试了:
df[['X', 'Y', 'Z']].resample('1S').count().head(20)
Out[97]:
X Y Z
Timestamp
2013-02-12 05:51:58 43 43 43
2013-02-12 05:51:59 49 49 49
2013-02-12 05:52:00 49 49 49
2013-02-12 05:52:01 50 50 50
2013-02-12 05:52:02 49 49 49
2013-02-12 05:52:03 50 50 50
2013-02-12 05:52:04 50 50 50
2013-02-12 05:52:05 51 51 51
2013-02-12 05:52:06 49 49 49
2013-02-12 05:52:07 50 50 50
2013-02-12 05:52:08 50 50 50
2013-02-12 05:52:09 50 50 50
2013-02-12 05:52:10 50 50 50
2013-02-12 05:52:11 50 50 50
2013-02-12 05:52:12 50 50 50
2013-02-12 05:52:13 49 49 49
2013-02-12 05:52:14 48 48 48
2013-02-12 05:52:15 48 48 48
2013-02-12 05:52:16 46 46 46
2013-02-12 05:52:17 47 47 47
是这样吗?最后,这里是最后一个问题:如何将采样降低到固定的采样率(30Hz)? 它可以是:
freq = 30
ms = int(1/freq * 1000.0)
acc_df[['X', 'Y', 'Z']].resample(f'{ms}L').mean().head(20)
Out[101]:
X Y Z
Timestamp
2013-02-12 05:51:58.251 0.925525 3.689977 10.403815
2013-02-12 05:51:58.284 2.210197 3.138203 9.721769
2013-02-12 05:51:58.317 1.838477 3.676430 9.013506
2013-02-12 05:51:58.350 1.665736 3.792813 9.294322
2013-02-12 05:51:58.383 1.421444 4.283342 8.955127
2013-02-12 05:51:58.416 1.991010 4.441264 9.565409
2013-02-12 05:51:58.449 2.980901 4.269272 9.765094
2013-02-12 05:51:58.482 2.867362 3.984789 10.556423
2013-02-12 05:51:58.515 3.096760 5.097275 11.056608
2013-02-12 05:51:58.548 NaN NaN NaN
2013-02-12 05:51:58.581 2.998265 3.413352 12.136313
2013-02-12 05:51:58.614 2.888768 2.568434 12.271406
2013-02-12 05:51:58.647 2.061812 2.882406 10.878478
2013-02-12 05:51:58.680 NaN NaN NaN
2013-02-12 05:51:58.713 NaN NaN NaN
2013-02-12 05:51:58.746 1.299747 1.917063 11.613151
2013-02-12 05:51:58.779 0.625948 0.113414 9.400651
2013-02-12 05:51:58.812 0.518933 2.943180 6.333779
2013-02-12 05:51:58.845 1.275872 1.974245 6.052140
2013-02-12 05:51:58.878 3.206257 2.782788 5.986052
提前谢谢你
目前没有回答
相关问题 更多 >
编程相关推荐