Pandas日期功能


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

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

创建一个日期范围

通过指定周期和频率来使用 date.range() 函数,我们可以创建日期序列。默认情况下,范围的频率是天。

import pandas as pd
print pd.date_range('1/1/2011', periods=5)

输出 如下 -

DatetimeIndex(['2011-01-01', '2011-01-02', '2011-01-03', '2011-01-04', '2011-01-05'],
dtype='datetime64[ns]', freq='D')

更改日期频率

import pandas as pd
print pd.date_range('1/1/2011', periods=5,freq='M')

输出 如下 -

DatetimeIndex(['2011-01-31', '2011-02-28', '2011-03-31', '2011-04-30', '2011-05-31'],
dtype='datetime64[ns]', freq='M')

bdate_range

bdate_range()代表商业日期范围。与date_range()不同,它不包括星期六和星期日。

import pandas as pd
print pd.date_range('1/1/2011', periods=5)

输出 如下 -

DatetimeIndex(['2011-01-01', '2011-01-02', '2011-01-03', '2011-01-04', '2011-01-05'],
dtype='datetime64[ns]', freq='D')

观察,3月3日以后,日期跳至3月6日,不包括4日和5日。只需检查你的日历的日子。

诸如 date_rangebdate_range之 类的便利函数使用各种频率别名。date_range的默认频率是日历日,而bdate_range的默认频率是营业日。

import pandas as pd
start = pd.datetime(2011, 1, 1)
end = pd.datetime(2011, 1, 5)
print pd.date_range(start, end)

输出 如下 -

DatetimeIndex(['2011-01-01', '2011-01-02', '2011-01-03', '2011-01-04', '2011-01-05'],
dtype='datetime64[ns]', freq='D')

偏移别名

一些串别名被赋予有用的常见时间序列频率。我们将把这些别名称为补偿别名。

别号 描述 别号 描述
B 工作日频率 BQS 商业季度开始频率
D 日历日频率 A 年度(年)结束频率
W 每周频率 BA 商业年度结束频率
M 月结束频率 BAS 商业年度开始频率
SM 半月结束频率 BH 营业时间频率
BM 营业月结束频率 H 小时频率
MS 月起始频率 T,min 每分钟的频率
SMS 短信半月开始频率 S 其次是频率
BMS 营业月份开始频率 L, ms 毫秒
Q 季末频率 U, us 微秒
BQ 业务季度结束频率 N 纳秒
QS 季度开始频率