You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建包含季节性和趋势的合成时间序列数据集

虚拟时间序列数据集生成实现方案

用Python的pandas和numpy库即可快速实现需求,无需额外复杂工具。

前置依赖安装

先安装需要的依赖库,执行以下命令:

pip install pandas numpy openpyxl

其中openpyxl用于支持DataFrame直接导出为Excel文件。

完整实现代码

import pandas as pd
import numpy as np

# -------------------------- 自定义参数配置 --------------------------
start_date = "2023-01-01"  # 序列起始日期
end_date = "2023-03-31"    # 序列结束日期
ts_count = 5               # 需要生成的时间序列组数
trend_coef_range = (0.1, 0.9) # 每组序列趋势系数的随机取值范围,系数越大趋势斜率越高
daily_seasonality_amp = 6  # 日度季节性波动幅度
weekly_seasonality_amp = 4 # 周度季节性波动幅度
noise_std = 1.5            # 高斯噪声标准差,数值越大随机波动越强
# -------------------------------------------------------------------

# 生成15分钟间隔的时间索引
datetime_series = pd.date_range(start=start_date, end=end_date, freq="15T")
n_samples = len(datetime_series)
x = np.arange(n_samples) # 整数序号X值,可按需加入数据集

# 初始化结果容器
result_dict = {
    "X": x, # 整数序号X,不需要可以删除该行
    "datetime": datetime_series # 时间维度X
}

# 循环生成多组Y序列
for i in range(ts_count):
    # 1. 生成线性趋势
    trend_coef = np.random.uniform(*trend_coef_range)
    trend = trend_coef * x / 96 # 按天维度计算趋势,避免数值增长过快

    # 2. 生成季节性(支持叠加多周期,可按需增删年度/月度等周期)
    daily_season = daily_seasonality_amp * np.sin(2 * np.pi * x / 96) # 日度周期:1天共96个15分钟采样点
    weekly_season = weekly_seasonality_amp * np.sin(2 * np.pi * x / (96*7)) # 周度周期:1周共672个15分钟采样点
    seasonality = daily_season + weekly_season

    # 3. 生成高斯噪声
    noise = np.random.normal(0, noise_std, size=n_samples)

    # 合并得到最终Y值
    result_dict[f"Y_{i+1}"] = trend + seasonality + noise

# 转为DataFrame格式
df = pd.DataFrame(result_dict)

# 导出到Excel,直接执行即可生成文件
df.to_excel("虚拟时间序列数据集.xlsx", index=False)

可调参数说明

  • 若不需要整数序号X,直接删除结果字典里对应的"X": x行即可
  • 若需要新增其他周期的季节性,直接按照已有的日/周度季节性逻辑,新增对应周期的正弦项叠加即可
  • 若需要非线性趋势,可把线性趋势的计算逻辑替换为多项式、指数等任意你需要的趋势公式

内容的提问来源于stack exchange,提问作者EnigmAI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:36:03