目录

上一个主题

7. Pandas 第三部分

下一个主题

7.2. Pandas时间差(Timedelta)


>>> from env_helper import info; info()
待更新

7.1. Pandas日期功能

日期功能扩展了时间序列,在财务数据分析中起主要作用。在处理日期数据的同时,我们经常会遇到以下情况 -

生成日期序列
将日期序列转换为不同的频率

创建一个日期范围

通过指定周期和频率,使用 date.range() 函数就可以创建日期序列。 默认情况下,范围的频率是天。参考以下示例代码 -

>>> import pandas as pd
>>> datelist = pd.date_range('2020/11/21', periods=5)
>>>
>>> datelist
DatetimeIndex(['2020-11-21', '2020-11-22', '2020-11-23', '2020-11-24',
               '2020-11-25'],
              dtype='datetime64[ns]', freq='D')

更改日期频率

>>> pd.date_range('2020/11/21', periods=5,freq='M')
DatetimeIndex(['2020-11-30', '2020-12-31', '2021-01-31', '2021-02-28',
               '2021-03-31'],
              dtype='datetime64[ns]', freq='M')

bdate_range()函数

bdate_range()用来表示商业日期范围,不同于date_range(),它不包括星期六和星期天。

>>> import pandas as pd
>>> datelist = pd.date_range('2011/11/03', periods=5)
>>> print(datelist)
DatetimeIndex(['2011-11-03', '2011-11-04', '2011-11-05', '2011-11-06',
               '2011-11-07'],
              dtype='datetime64[ns]', freq='D')

观察到11月3日以后,日期跳至11月6日,不包括4日和5日(因为它们是周六和周日)。

像date_range和bdate_range这样的便利函数利用了各种频率别名。date_range的默认频率是日历中的自然日,而bdate_range的默认频率是工作日。参考以下示例代码 -

>>> import pandas as pd
>>> start = pd.datetime(2017, 11, 1)
>>> end = pd.datetime(2017, 11, 5)
>>> dates = pd.date_range(start, end)
>>> print(dates)
DatetimeIndex(['2017-11-01', '2017-11-02', '2017-11-03', '2017-11-04',
               '2017-11-05'],
              dtype='datetime64[ns]', freq='D')

偏移别名

大量的字符串别名被赋予常用的时间序列频率。我们把这些别名称为偏移别名。

别名

描述说明

B

工作日频率

BQS

商务季度开始频率

D

日历/自然日频率

A

年度(年)结束频率

W

每周频率

BA

商务年底结束

M

月结束频率

BAS

商务年度开始频率

SM

半月结束频率

BH

商务时间频率

SM

半月结束频率

BH

商务时间频率

BM

商务月结束频率

H

小时频率

MS

月起始频率

T, min

分钟的频率

SMS

SMS半开始频率

S

秒频率

BMS

商务月开始频率

L, ms

毫秒

Q

季度结束频率

U, us

微秒

BQ

商务季度结束频率

N

纳秒

BQ

商务季度结束频率

QS

季度开始频率