datetime模块相关知识

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(时,分,秒))

 

你可能感兴趣的:(python,learning,pandas,datetime)