首页常见问题正文

时间序列分析:创建固定频率的时间序列

更新时间:2022-12-29 来源:黑马程序员 浏览量:

IT培训班

  Pandas中提供了一个date_range()函数,主要用于生成一个具有固定频率的DatetimeIndex对象,该函数的语法格式如下:

pandas.date_range(start=None, end=None, periods=None,
                  freq=None, tz=None, normalize=False,
                  name=None, closed=None, **kwargs)

  部分参数的含义如下:

  (1)start:表示起始日期,默认为None。

  (2)end:表示终止日期,默认为None。

  (3)periods:表示产生多少个时间戳索引值。若设置为None,则start与end必须不能为None。

  (4)freq:表示以自然日为单位,这个参数用来指定计时单位,比如‘5H’表示每隔5个小时计算一次。

  (5)tz:表示时区,比如Asia/Hong_Kong。

  (6)normalize:接收布尔值,默认值为False。如果设为True的话,那么在产生时间戳索引值之前,会将start和end都转化为当日的午夜0点。

  (7)name:给返回的时间序列索引指定一个名字。

  (8)closed:表示start和end这个区间端点是否包含在区间内,可以取值为如下选项:

  ◆left:表示左闭右开区间。

  ◆right:表示左开右闭区间。

  ◆None:表示两边都是闭区间。

  需要注意的是,start、end、periods、freq这四个参数至少要指定三个参数,否则会出现错误。

  当调用date_range()函数创建DatetimeIndex对象时,如果只是传入了开始日期(start参数)与结束日期(end参数),则默认生成的时间点是按天计算的,即freq参数为D,示例代码如下。

In [17]: # 创建DatetimeIndex对象时,只传入开始日期与结束日期
         pd.date_range('2018/08/10', '2018/08/20')
Out[17]:
DatetimeIndex(['2018-08-10', '2018-08-11', '2018-08-12', '2018-08-13',
               '2018-08-14', '2018-08-15', '2018-08-16', '2018-08-17',
               '2018-08-18', '2018-08-19', '2018-08-20'],
              dtype='datetime64[ns]', freq='D')

  如果只是传入了开始日期或结束日期,则还需要用periods参数指定产生多少个时间戳,示例代码如下。

In [18]: # 创建DatetimeIndex对象时,传入start与periods参数
         pd.date_range(start='2018/08/10', periods=5)
Out[18]:
DatetimeIndex(['2018-08-10', '2018-08-11', '2018-08-12', '2018-08-13',
               '2018-08-14'], dtype='datetime64[ns]', freq='D')
In [19]: # 创建DatetimeIndex对象时,传入end与periods参数
         pd.date_range(end='2018/08/10', periods=5)
Out[19]:
DatetimeIndex(['2018-08-06', '2018-08-07', '2018-08-08', '2018-08-09

  由此可知,起始日期与结束日期定义了时间序列索引的严格边界。

分享到:
在线咨询 我要报名
和我们在线交谈!