Skip to main content

用于下采样时间序列类数据的最大三角形三桶算法

项目描述

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 点:

https://git.sr.ht/~javiljoen/lttb-numpy/blob/master/tests/timeseries.png

输入验证

默认情况下,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

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

lttb-0.3.1.tar.gz (106.7 kB 查看哈希

已上传 source

内置发行版

lttb-0.3.1-py3-none-any.whl (6.5 kB 查看哈希

已上传 py3

lttb-0.3.1-py2-none-any.whl (6.5 kB 查看哈希

已上传 py2