【问题标题】:Sensor Data Sampling Frequency Mismatch传感器数据采样频率不匹配
【发布时间】:2021-08-22 07:29:32
【问题描述】:

我有以不同频率捕获的传感器数据(这是我为简化操作而发明的数据)。我想通过增加数据点的数量来重新采样电压数据并对其进行插值,所以我有 16 个而不是 12 个。

Pandas 具有重采样/上采样功能,但我只能找到人们从每周数据变为每日数据的示例(通过在两个每周数据点之间插值添加 6 个每日数据点)。

时间(压力) 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8

压力 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 2.1 2.2 2.3 2.4 2.5

时间(电压) 0.07 0.14 0.21 0.28 0.35 0.42 0.49 0.56 0.63 0.7 0.77 0.84

电压 2.2 2.5 2.8 3.1 3.4 3.7 4 4.3 4.6 4.9 5.2 5.5

我希望我的电压有 16 个样本,而不是 12 个插入缺失值的样本。谢谢!

【问题讨论】:

标签: python pandas time-series


【解决方案1】:

让我们假设两个系列,“压力”和“电压”:

pressure = pd.Series({0.05: 1.0, 0.1: 1.1, 0.15: 1.2, 0.2: 1.3, 0.25: 1.4, 0.3: 1.5, 0.35: 1.6, 0.4: 1.7, 0.45: 1.8,
                       0.5: 1.9, 0.55: 2.0, 0.6: 2.1, 0.65: 2.2, 0.7: 2.3, 0.75: 2.4, 0.8: 2.5}, name='pressure')
voltage = pd.Series({0.07: 2.2,  0.14: 2.5,  0.21: 2.8,  0.28: 3.1,  0.35: 3.4,  0.42: 3.7,
                     0.49: 4.0,  0.56: 4.3,  0.63: 4.6,  0.7: 4.9,  0.77: 5.2,  0.84: 5.5}, name='voltage')

您可以使用pandas.merge_asof:

pd.merge_asof(pressure, voltage, left_index=True, right_index=True)

输出:

pandas.concat+interpolate:

(pd.concat([pressure, voltage], axis=1)
   .sort_index()
   .apply(pd.Series.interpolate)
   #.plot(x='pressure', y='voltage', marker='o') # uncomment to plot
)

输出:

最后,只对电压进行插值,首先在压力上降低 NA:

(pd.concat([pressure, voltage], axis=1)
   .sort_index()
   .dropna(subset=['pressure'])
   .apply(pd.Series.interpolate)
)

输出:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多