pandas时序数据-task4

pandas的时序数据

0.前言

这里写一点自己的理解吧,之前学习完材料后做了一些总结,但做练习题目时完全不会,目前想法是掌握了多少写多少,这里主要掌握了date_range,to_datetime.

1.pandas时间类型数据

在这里插入图片描述

  • pandas有多种时间数据类型,一共四种,
  • Timestamp:表示时间点,时刻。由to_datetime,date_range创建
  • Time spans材料中没有介绍
  • DataOffset与Timedelta
    两者都表示时间间隔,单位可以为
    • years
    • months
    • weeks
    • days
    • hours
    • minutes
    • seconds
    • microseconds
    • nanoseconds

两者的区别主要在days为单位时,如果原时间带有夏令时间,那么绝对时间的一天,是24小时,而相对时间的一天,则有可能不等于24小时,为的是前一天时间,加1days,会等于后一天同一时刻。
即Timedelta绝对时间差的特点指无论是冬令时还是夏令时,增减1day都只计算24小时
DataOffset相对时间差指,无论一天是23\24\25小时,增减1day都与当天相同的时间保持一致
例如,英国当地时间 2020年03月29日,01:00:00 时钟向前调整 1 小时 变为 2020年03月29日,02:00:00,开始夏令时。

ts = pd.Timestamp('2020-3-29 01:00:00', tz='Europe/Helsinki')
ts + pd.Timedelta(days=1)

如果把时区去掉,那么结果会一样。

pd.to_datetime()可以将列表,series转为时间格式,这个在使用中十分有用。

使用pd.date_range()可以方便的生成时间序列。
date_range()方法
一般来说,start/end/periods(时间点个数)/freq(间隔方法)是该方法最重要的参数,给定了其中的3个,剩下的一个就会被确定

pd.date_range(start='2020/1/1',end='2020/1/10',periods=3)
DatetimeIndex(['2020-01-01 00:00:00', '2020-01-05 12:00:00',
               '2020-01-10 00:00:00'],
              dtype='datetime64[ns]', freq=None)

这里注意periods为时间点数,freq表示时间单位间隔
在这里插入图片描述

过滤时间点的方法,bdate_range()
bdate_range是一个类似与date_range的方法,特点在于可以在自带的工作日间隔设置上,再选择weekmask参数和holidays参数
它的freq中有一个特殊的’C’/‘CBM’/'CBMS’选项,表示定制,需要联合weekmask参数和holidays参数使用
例如现在需要将工作日中的周一、周二、周五3天保留,并将部分holidays剔除

weekmask = 'Mon Tue Fri'
holidays = [pd.Timestamp('2020/1/%s'%i) for i in range(7,13)]
#注意holidays
pd.bdate_range(start='2020-1-1',end='2020-1-15',freq='C',weekmask=weekmask,holidays=holidays)
Out[18]:
DatetimeIndex(['2020-01-03', '2020-01-06', '2020-01-13', '2020-01-14'], dtype='datetime64[ns]', freq='C')

holidays表示要跳过的时间点,weekmask表示保留的星期数,默认周一到周五保留。

  • 给定一组非连续的日期,怎么快速找出位于其最大日期和最小日期之间,且没有出现在该组日期中的日期?
    在这里插入图片描述
    最后,timestamp也可以使用max,min函数,获取最大日期与最小日期。

猜你喜欢

转载自blog.csdn.net/hu_hao/article/details/107030443