用于下采样时间序列类数据的最大三角形三桶算法
项目描述
Steinarsson 的Largest-Triangle-Three-Buckets算法的 Numpy 实现,用于对类似时间序列的数据进行下采样,同时保留数据的整体形状和可变性
LTTB 非常适合过滤时间序列数据以进行视觉表示,因为它减少了视觉冗余数据点的数量,从而导致文件更小并更快地渲染绘图。
请注意,它不是一种统计聚合技术,参见。回归模型或非参数曲线拟合/平滑。
此实现基于 https://github.com/sveinn-steinarsson/flot-downsample上的原始 JavaScript 代码 和 Sveinn Steinarsson 的 2013 年硕士论文 Downsampling Time Series for Visual Representation。
执照:麻省理工学院
用法
将lttb包安装到您的(虚拟)环境中:
$ pip install lttb
然后可以在 Python 代码中使用函数lttb.downsample() :
import numpy as np
import lttb
# Generate an example data set of 100 random points:
# - column 0 represents time values (strictly increasing)
# - column 1 represents the metric of interest: CPU usage, stock price, etc.
data = np.array([range(100), np.random.random(100)]).T
# Downsample it to 20 points:
small_data = lttb.downsample(data, n_out=20)
assert small_data.shape == (20, 2)
在tests/timeseries.csv的源代码库中提供了一个测试数据集。它从http://flot.base.is/下载并从 JSON 转换为 CSV。
这是它的样子,下采样到 100 点:
输入验证
默认情况下,downsample()检查输入数据是否满足以下约束:
它是一个两列的二维数组;
第一列中的值严格增加;和
数据中没有缺失 (NaN) 值。
可以跳过这些检查(例如,如果您知道您的数据将始终满足这些条件),或者可以通过传入不同的验证函数列表来添加其他检查(例如,时间值必须均匀分布),例如:
# No input validation:
small_data = lttb.downsample(data, n_out=20, validators=[])
# Stricter check on x values:
from lttb.validators import *
small_data = lttb.downsample(data, n_out=20, validators=[has_two_columns, x_is_regular])
历史
0.3.1 / 2020-10-14
所有模块和函数现在都有文档字符串。
[开发] 该库现在还针对 Python 3.9 进行了测试。无需更改代码。
[开发] 该项目现在托管在 SourceHut 上;PyPI 页面上的链接已更新。
[开发] CI 测试已从 Travis 迁移到 builds.sr.ht。
0.3.0 / 2020-09-15
输入数据的验证现在是可配置的。
新默认值:如果输入数据包含 NaN 值,downsample()将引发ValueError 。这可以通过从验证器列表中删除contains_no_nans()来禁用。
[开发] 导入现在使用 isort 排序。
0.2.2 / 2020-01-08
setup.py已修复,以便可以再次在 Python 2 中安装此包。
0.2.1 / 2019-11-25
[开发] 版本现在由setuptools_scm而不是bumpversion管理。
[dev] 代码用黑色格式化。
0.2.0 / 2018-02-11
性能改进
在 PyPI 上发布(2019-11-06)
0.1.0 / 2017-03-18
初步实施
贡献者
JA Viljoen – 原始 Numpy 实现
Guillaume Bethouart – 性能改进
Jens Krüger – 修复 py27
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。