Task04:时序数据

一、时序的创建

1. 四类时间变量

现在理解可能关于③和④有些困惑,后面会作出一些说明

名称描述元素类型创建方式
① Date times(时间点/时刻)描述特定日期或时间点Timestampto_datetime或date_range
② Time spans(时间段/时期)由时间点定义的一段时期PeriodPeriod或period_range
③ Date offsets(相对时间差)一段时间的相对大小(与夏/冬令时无关)DateOffsetDateOffset
④ Time deltas(绝对时间差)一段时间的绝对大小(与夏/冬令时有关)Timedeltato_timedelta或timedelta_range

2. 时间点的创建

(a)to_datetime方法

Pandas在时间点建立的输入格式规定上给了很大的自由度,下面的语句都能正确建立同一时间点

此时可利用format参数强制匹配

使用列表可以将其转为时间点索引

如果列已经按照时间顺序排好,则利用to_datetime可自动转换

(b)时间精度与范围限制

Timestamp的精度远远不止day,可以最小到纳秒ns

它带来范围的代价就是只有大约584年的可用时间点

c)date_range方法

一般来说,start/end/periods(时间点个数)/freq(间隔方法)是该方法最重要的参数,给定了其中的3个,剩下的一个就会被确定

其中freq参数有许多选项,下面将常用部分罗列如下:

符号D/BWM/Q/YBM/BQ/BYMS/QS/YSBMS/BQS/BYSHTS
描述日/工作日月末月/季/年末日月/季/年末工作日月/季/年初日月/季/年初工作日小时分钟

bdate_range是一个类似与date_range的方法,特点在于可以在自带的工作日间隔设置上,再选择weekmask参数和holidays参数

它的freq中有一个特殊的'C'/'CBM'/'CBMS'选项,表示定制,需要联合weekmask参数和holidays参数使用

例如现在需要将工作日中的周一、周二、周五3天保留,并将部分holidays剔除

3. DateOffset对象

(a)DataOffset与Timedelta的区别

Timedelta绝对时间差的特点指无论是冬令时还是夏令时,增减1day都只计算24小时

DataOffset相对时间差指,无论一天是23\24\25小时,增减1day都与当天相同的时间保持一致

例如,英国当地时间 2020年03月29日,01:00:00 时钟向前调整 1 小时 变为 2020年03月29日,02:00:00,开始夏令时

把tz(time zone)去除就可以,两者保持一致,除非要使用到时区变换

(c)各类常用offset对象

freqD/BW(B)M/(B)Q/(B)Y(B)MS/(B)QS/(B)YSHTSC
offsetDateOffset/BDayWeek(B)MonthEnd/(B)QuarterEnd/(B)YearEnd(B)MonthBegin/(B)QuarterBegin/(B)YearBeginHourMinuteSecondCDay(定制工作日)

(d)序列的offset操作

利用apply函数

直接使用对象加减

定制offset,可以指定weekmask和holidays参数(思考为什么三个都是一个值)

二、时序的索引及属性

1. 索引切片

合法字符自动转换为时间点

2. 子集索引

支持混合形态索引

3. 时间点的属性

采用dt对象可以轻松获得关于时间的信息

利用strftime可重新修改时间格式

对于datetime对象可以直接通过属性获取信息

三、重采样

所谓重采样,就是指resample函数,它可以看做时序版本的groupby函数

1. resample对象的基本操作

采样频率一般设置为上面提到的offset字符

2. 采样聚合

类似地,可以使用函数/lambda表达式

3. 采样组的迭代

采样组的迭代和groupby迭代完全类似,对于每一个组都可以分别做相应操作

四、窗口函数

下面主要介绍pandas中两类主要的窗口(window)函数:rolling/expanding

1. Rolling

(a)常用聚合

所谓rolling方法,就是规定一个窗口,它和groupby对象一样,本身不会进行操作,需要配合聚合函数才能计算结果

min_periods参数是指需要的非缺失数据点数量阀值

count/sum/mean/median/min/max/std/var/skew/kurt/quantile/cov/corr都是常用的聚合函数

(b)rolling的apply聚合

使用apply聚合时,只需记住传入的是window大小的Series,输出的必须是标量即可,比如如下计算变异系数

 

(c)基于时间的rolling

可选closed='right'(默认)\'left'\'both'\'neither'参数,决定端点的包含情况

2. Expanding

(a)expanding函数

普通的expanding函数等价与rolling(window=len(s),min_periods=1),是对序列的累计计算

apply方法也是同样可用的

(b)几个特别的Expanding类型函数

cumsum/cumprod/cummax/cummin都是特殊expanding累计计算方法

shift/diff/pct_change都是涉及到了元素关系

①shift是指序列索引不变,但值向后移动

②diff是指前后元素的差,period参数表示间隔,默认为1,并且可以为负

③pct_change是值前后元素的变化百分比,period参数与diff类似

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值