datetime模块中的数据类型:
date:以公历形式存储日历日期(年、月、日)
time:将时间存储为时分秒毫秒
datetime:存储日期和时间
timedelta:表示两个datetime之间的差(日、秒、毫秒)
dt = datetime(2011, 1, 3)
1.dt.strftime('%Y-%m-%d)#将字符串转为日期
2.parse('任何形式日期', dayfirst=True)#日常出现在月前,传入dayfirst=True可解决 (from dateutil import parse)
3.pd.to_datetime(datesets)#转成日期格式
4. s.index.is_unique#查看时间序列s的时间索引是否有重复,返True或者False
5. grouped = s.groupby(level=0)#具有非唯一时间戳的数据进行聚合,传入level=0
6. index = pd.date_range('start_date', 'end_date')#传入参数为开始日期与结束日期
index = pd.date_range('start_date', period=多少天)#参数为开始日期与时间段长度
index = pd.date_range( period=多少天, 'end_date')#参数为结束日期与时间段长度
7. 关于date_range中的参数freq的说明:
D--日历日 ,,B--每工作日,,H--每小时,,T或min--每分,,S--每秒,,M--每月最后一个日历日,,BM--每月最后一个工作日等等等等
如freq=‘4h’, freq='2h30min'
8.对时间序列进行超前或滞后处理:
s.shift(2, freq='D')#第一个参数为前移的位数,若为负数,则为后移位数,第二个参数为生成时间序列s时的频率,保证了对时间戳进行位移,而不是对数据进行位移,避免了因移动造成的数据丢失
9.通过偏移量对日期进行位移from pandas.tseries.offsets import Day, MonthEnd
now = datetime(2018, 9, 4)
now + MonthEnd() #结果为=('2018-09-30 00:00:00')
now + MonthEnd(2) #结果为=('2018-10-31 00:00:00')
10.rollforward()与rollback()方法
now = datetime(2018, 9, 4)
MonthEnd().rollforward(now) #结果为=('2018-09-30 00:00:00')
MonthEnd().rollback(now) #结果为=('2018-08-31 00:00:00')
11. 关于时区的库:import pytz
tz = pytz.timezone('时区名')#获取时区对象
ts_utc = ts.tz_localize('UTC')#本地化转换
ts_utc.tz_convert('时区名')#时间序列被本地化到某个特定时区,可将其转换到别的时区
12. 时区意识型Timestamp对象:stamp= pd.Timestamp('2018-09-04 19:47')
该对象可同样适用tz_localize与tz_convert
13.pd.Period(2018, freq='A-DEC')#表示的是时间区间2018-01-01到2018-12-31,freq同上
Period可直接进行算数运算:pd.Period('2018', freq='A-DEC') + 2 = Period('2020', freq='A-DEC')
14. pd.period_range('开始年月日', ‘结束年月日’, freq=‘?’)#创建规则的日期范围
15.pd.PeriodIndex(values, freq='?')#values可直接为字符串
16.p.asfreq('M', how='start')#频率转换函数,how=end或start,第一个参数为频率类型,Period和PeriodIndex对象可以使用该函数
17. ts.to_period()#将由时间戳索引的series和dataframe对象转换为时期索引,参数有fred和how
18. ts.to_timestamp()#由时期索引转为时间戳索引
19. ts.resample(freq='M', how='mean', axis=0, fill_method=None, closed='right', label='right', loffset=None, limit=None, kind=None, convention=None)#重采样:一个频率转到另一个频率的过程,具体参数的使用查文档
20. 通过groupby进行重采样: ts.groupby(lambda x: x.month).mean()
21. 抽取时间点上的值:ts.at_time(time(时,分,秒))
22. 抽取时间段内的值:ts.between_time(time(时,分,秒),time(时,分,秒))