日期功能扩展了时间序列,在财务数据分析中起主要作用。在处理日期数据的同时,我们经常会遇到以下情况 -
- 生成日期序列
- 将日期序列转换为不同的频率
创建一个日期范围
通过指定周期和频率,使用date.range()
函数就可以创建日期序列。 默认情况下,范围的频率是天。参考以下示例代码 -
import pandas as pd datelist = pd.date_range('2020/11/21', periods=5) print(datelist)
输出结果:
DatetimeIndex(['2020-11-21', '2020-11-22', '2020-11-23', '2020-11-24',
'2020-11-25'],
dtype='datetime64[ns]', freq='D')
更改日期频率
import pandas as pd datelist = pd.date_range('2020/11/21', periods=5,freq='M') print(datelist)
输出结果:
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(['2017-11-03', '2017-11-06', '2017-11-07', '2017-11-08',
'2017-11-09'],
dtype='datetime64[ns]', freq='B')
观察到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 | 季度开始频率 |