日期功能扩展了时间序列,在财务数据分析中起主要作用。在处理日期数据的同时,我们经常会遇到以下情况 -
生成日期序列
将日期序列转换为不同的频率
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')
/tmp/ipykernel_3275/2406795163.py:1: FutureWarning: 'M' is deprecated and will be removed in a future version, please use 'ME' instead. 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='ME')
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)
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Cell In[7], line 2 1 import pandas as pd ----> 2 start = pd.datetime(2017, 11, 1) 3 end = pd.datetime(2017, 11, 5) 4 dates = pd.date_range(start, end) AttributeError: module 'pandas' has no attribute 'datetime'
别名 | 描述说明 |
---|---|
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 |
季度开始频率 |