时间序列同步和重采样库。
syncing的Python项目详细描述
什么是同步?
syncing是同步和重新采样时间的有用库 系列。
synchronization基于fourier变换 re sampling使用特定的插值方法执行。
安装
要安装它,请使用(具有根用户权限):
$ pip install syncing
或者下载最后一个git版本并使用(具有根权限):
$ python setup.py install
安装附加组件
已启用一些附加功能安装以下 附加服务:
- cli:启用命令行界面。
- 打印:允许打印模型流程及其工作流。
- dev:安装所有库和开发库。
要安装同步和所有附加功能(开发库除外),请执行以下操作:
$ pip install syncing[all]
同步实验室数据
此示例演示如何同步两个数据集obd和dyno (它们分别是车辆的车载诊断和 底盘测功机)带有参考信号ref。为了达到这个目的我们 使用模型同步模型可视化模型:
>>> from syncing.model import dsp >>> model = dsp.register() >>> model.plot(view=False) SiteMap(...)[graph]
提示:你可以点击它来浏览图表。
首先,我们综合生成数据集以 型号:
>>> import numpy as np >>> data_sets = {} >>> time = np.arange(0, 150, .1) >>> velocity = (1 + np.sin(time / 10)) * 60 >>> data_sets['ref'] = dict( ... time=time, # [10 Hz] ... velocity=velocity / 3.6 # [m/s] ... ) >>> data_sets['obd'] = dict( ... time=time[::10] + 12, # 1 Hz ... velocity=velocity[::10] + np.random.normal(0, 5, 150), # [km/h] ... engine_rpm=np.maximum( ... np.random.normal(velocity[::10] * 3 + 600, 5), 800 ... ) # [RPM] ... ) >>> data_sets['dyno'] = dict( ... time=time + 6.66, # 10 Hz ... velocity=velocity + np.random.normal(0, 1, 1500) # [km/h] ... )
要同步数据集并打印工作流:
>>> from syncing.model import dsp >>> sol = dsp(dict( ... data=data_sets, x_label='time', y_label='velocity', ... reference_name='ref', interpolation_method='cubic' ... )) >>> sol.plot(view=False) SiteMap(...)[graph]
最后,我们可以分析时间偏移和同步 重新采样的数据集:
>>> import pandas as pd >>> import schedula as sh >>> pd.DataFrame(sol['shifts'], index=[0]) # doctest: +SKIP obd dyno ... >>> df = pd.DataFrame(dict(sh.stack_nested_keys(sol['resampled']))) >>> df.columns = df.columns.map('/'.join) >>> df['ref/velocity'] *= 3.6 >>> ax = df.set_index('ref/time').plot(secondary_y='obd/engine_rpm') >>> ax.set_ylabel('[km/h]'); ax.right_ax.set_ylabel('[RPM]') Text(...)