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

如何将时间序列图表X轴日期标准化为参考日期的相对值

时间序列日期相对参考日期标准化方案

需求说明

处理时间序列数据时,将所有日期转换为相对于指定参考日期的相对标识(如t-2表示比参考日期早2天,t2表示晚2天),便于突出前后对比效果。

解决步骤及代码实现

基于你提供的随机时间序列数据,可通过以下步骤实现日期标准化:

  1. 定义参考日期并统一格式
    确保参考日期与数据中的日期类型一致,避免计算误差;
  2. 计算日期差值
    用每个日期减去参考日期,提取天数维度的差值;
  3. 生成相对日期标识
    根据天数差值生成tX格式的字符串,负数直接保留负号。

完整代码如下:

import numpy as np
import pandas as pd
from datetime import date, timedelta
import matplotlib.pyplot as plt

# 生成原始时间序列数据
np.random.seed(0); randnums = np.random.randint(1,101,31)
sdate = date(2023,3,1)   # 起始日期
edate = date(2023,4,1)   # 结束日期
datelist = list(pd.date_range(sdate,edate-timedelta(days=1),freq='d'))
df = pd.DataFrame(zip(datelist,randnums),columns=['date','data'])

# 日期标准化核心逻辑
ref_date = pd.to_datetime('2023-03-15')  # 指定参考日期
# 计算每个日期与参考日期的天数差
df['days_diff'] = (df['date'] - ref_date).dt.days
# 生成相对日期标识
df['relative_date'] = df['days_diff'].apply(lambda x: f't{x}')

# 绘制带相对日期的对比图表
plt.subplots(figsize=(12, 6))
plt.plot(df['relative_date'], df['data'])
plt.xticks(rotation=45)  # 旋转x轴标签避免重叠
plt.xlabel('相对参考日期')
plt.ylabel('数据值')
plt.title('时间序列数据(以2023-03-15为参考点)')
plt.tight_layout()
plt.show()

关键代码解释

  • (df['date'] - ref_date).dt.days:利用pandas的datetime运算特性,直接计算两个日期的天数差,正数表示日期晚于参考点,负数表示早于参考点;
  • lambda x: f't{x}':通过字符串格式化将天数差转为目标格式,例如天数差为2时生成t2,差为-2时生成t-2。

如果需要将参考日期当天明确标识为t0,可以微调lambda表达式:

df['relative_date'] = df['days_diff'].apply(lambda x: 't0' if x == 0 else f't{x}')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 15:22:13