Darts项目中的TimeSeries核心概念解析与使用指南

Darts项目中的TimeSeries核心概念解析与使用指南

darts A python library for user-friendly forecasting and anomaly detection on time series. darts 项目地址: https://gitcode.com/gh_mirrors/da/darts

什么是TimeSeries

在Darts时间序列分析库中,TimeSeries是最核心的数据结构类,它专门用于表示单变量或多变量的时间序列数据。与普通的Pandas DataFrame或NumPy数组不同,TimeSeries提供了针对时间序列分析优化的特性和方法,确保数据具有完整且时间排序的索引。

TimeSeries的核心特性

1. 时间索引支持

TimeSeries支持两种时间索引类型:

  • pandas.DatetimeIndex:基于具体日期时间的索引
  • pandas.RangeIndex:基于整数的索引(适用于没有具体时间戳的顺序数据)

2. 数据维度支持

  • 单变量时间序列:每个时间点只有一个标量值
  • 多变量时间序列:每个时间点有多个值(称为"组件"或"维度")

3. 概率性支持

TimeSeries还能表示概率性时间序列,用于获取置信区间等概率性分析。

多变量时间序列 vs 多个时间序列

理解这一区别对正确使用Darts至关重要:

多变量时间序列

  • 单个TimeSeries对象
  • 多个组件共享相同的时间轴
  • 示例:一个病人的血压和心率随时间变化(2个组件)

多个时间序列

  • 多个TimeSeries对象组成的序列(如Python列表)
  • 各序列可以有不同时间索引甚至不同频率
  • 示例:多个病人的血压和心率数据(每个病人一个TimeSeries)

多变量时间序列示意图 图1:多变量时间序列(单个TimeSeries对象)

多个时间序列示意图 图2:多个时间序列(多个TimeSeries对象)

选择建议

  • 如果多个维度在时间上相关(如物体的多个坐标),使用多变量序列
  • 如果是多个独立观测(如不同实验数据),使用多个序列
  • 如果时间范围不同,必须使用多个序列

概率性时间序列

Darts通过蒙特卡洛采样表示概率性预测:

  • 概率性(随机)序列:包含多个样本
  • 确定性序列:只包含一个样本

创建TimeSeries的常用方法

Darts提供了多种工厂方法创建TimeSeries:

1. 从DataFrame创建

TimeSeries.from_dataframe(df)
  • 每列代表一个组件
  • 多列创建多变量序列

2. 从NumPy数组创建

TimeSeries.from_values(np_array)
  • 1D数组:单变量确定性序列
  • 2D数组:多变量确定性序列
  • 3D数组:多变量概率性序列

3. 指定时间索引创建

TimeSeries.from_times_and_values(time_index, values)

4. 序列拼接

from darts import concatenate

# 沿时间轴拼接
concatenate([series1, series2], axis=0)

# 沿组件轴拼接(创建多变量序列)
concatenate([series1, series2], axis=1)

# 沿样本轴拼接(创建概率性序列)
concatenate([series1, series2], axis=2)

数据导出方法

将TimeSeries数据导出为其他格式:

# 导出为Pandas DataFrame(确定性序列)
series.to_dataframe()

# 导出为xarray DataArray
series.data_array()

# 导出为NumPy数组(单个样本)
series.values()

# 导出为NumPy数组(所有样本)
series.all_values()

高级特性

静态协变量

可以附加与时间无关的静态数据:

# 添加静态协变量
static_df = pd.DataFrame({
    'location': ['NY', 'LA'],
    'type': ['A', 'B']
})
series = series.with_static_covariates(static_df)

层次结构

定义组件间的层次关系:

hierarchy = {
    "east_sales": ["total_sales"],
    "west_sales": ["total_sales"]
}

可用于预测后的协调处理。

实现原理

TimeSeries内部使用3维xarray.DataArray

  • 维度:(时间, 组件, 样本)
  • 单变量:组件维度大小为1
  • 确定性:样本维度大小为1
  • 不可变设计:操作返回新对象

最佳实践建议

  1. 数据检查:创建TimeSeries前确保时间索引完整且有序
  2. 维度规划:根据业务场景合理设计单变量/多变量结构
  3. 内存考虑:大型概率性序列会占用较多内存
  4. 预处理:利用Darts提供的转换器进行数据标准化等处理
  5. 模型匹配:选择支持所需特性的模型(多变量/概率性等)

通过掌握这些核心概念,您将能够更有效地使用Darts进行时间序列分析和预测建模。

darts A python library for user-friendly forecasting and anomaly detection on time series. darts 项目地址: https://gitcode.com/gh_mirrors/da/darts

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宗鲁宽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值