如何用 Pandas 快速生成时间序列数据?

如何用 Pandas 快速生成时间序列数据?
最新回答
倾城佳人

2026-01-25 04:10:46

在 Pandas 中快速生成时间序列数据可通过以下方法实现,核心是利用 pd.date_range 创建时间索引,并结合 DataFrame 构造数据。以下为具体步骤和示例:

方法 1:使用 pd.util.testing.makeTimeDataFrame(快速生成带随机数据的 DataFrame)
  • 功能:直接生成包含时间索引和随机数值的 DataFrame,支持自定义行数、列名及时间间隔。
  • 代码示例:import pandas as pd# 生成 10 行、默认 4 列(A/B/C/D)的随机数据,时间索引为日频率df = pd.util.testing.makeTimeDataFrame(10)print(df.head())输出: A B C D2000-01-03 0.932776 -1.509302 0.285825 0.9417292000-01-04 0.565230 -1.598449 -0.786274 -0.2214762000-01-05 -0.152743 -0.392053 -0.127415 0.8419072000-01-06 1.321998 -0.927537 0.205666 -0.0411102000-01-07 0.324359 1.512743 0.553633 0.392068
  • 参数说明:

    nper:行数(如 10)。

    freq:时间间隔(默认为 'B' 工作日,可选 'D' 日、'H' 小时等)。

    columns:自定义列名(如 columns=['A', 'B'])。

方法 2:手动构造时间索引 + 随机数据
  • 步骤:

    用 pd.date_range 生成时间索引。

    用 numpy.random 生成随机数据。

    组合为 DataFrame。

  • 代码示例:import pandas as pdimport numpy as np# 生成时间索引(10 个小时频率的时间点)dates = pd.date_range(start='2000-01-01', periods=10, freq='H')# 生成随机数据(3 列,每列 10 个随机整数)data = np.random.randint(1, 1000, size=(10, 3))# 构造 DataFramedf = pd.DataFrame(data, index=dates, columns=['商品编码', '商品销量', '商品库存'])print(df.head())输出: 商品编码 商品销量 商品库存2000-01-01 00:00:00 99 264 982000-01-01 01:00:00 294 406 8272000-01-01 02:00:00 89 221 9312000-01-01 03:00:00 962 153 9562000-01-01 04:00:00 538 46 374
  • 参数说明:

    pd.date_range 关键参数:

    start:起始时间(如 '2000-01-01')。

    periods:时间点数量(如 10)。

    freq:频率(如 'D' 日、'M' 月、'T' 分钟)。

    numpy.random.randint:生成指定范围的随机整数。

方法 3:使用 pd.util.testing.makeDateIndex(仅生成时间索引)
  • 功能:快速生成时间索引,适用于需单独控制索引的场景。
  • 代码示例:import pandas as pdimport numpy as np# 生成 10 个小时频率的时间索引index = pd.util.testing.makeDateIndex(10, freq='H')# 生成数据并赋值索引data = np.random.rand(10, 2)df = pd.DataFrame(data, index=index, columns=['温度', '湿度'])print(df.head())输出: 温度 湿度2000-01-01 00:00:00 0.548814 0.7151892000-01-01 01:00:00 0.602763 0.5448832000-01-01 02:00:00 0.423655 0.6458942000-01-01 03:00:00 0.437587 0.8917732000-01-01 04:00:00 0.963663 0.383442
关键注意事项
  1. 频率配置:通过 freq 参数灵活调整时间间隔(如 'D'、'H'、'T'、'S')。
  2. 数据类型:可根据需求生成整数(np.random.randint)或浮点数(np.random.rand)。
  3. 列名自定义:通过 columns 参数指定列名,增强可读性。
总结
  • 快速生成带随机数据的 DataFrame:优先用 pd.util.testing.makeTimeDataFrame。
  • 需要完全控制数据构造:手动组合 pd.date_range 和 numpy.random。
  • 仅需时间索引:使用 pd.util.testing.makeDateIndex。

图:makeTimeDataFrame 生成的随机时间序列数据