Pandas(九)——时序数据

介绍四类时间变量:

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

时序的创建

时间点的创建

  1. to_datetime方法:
    1)Pandas在时间点建立的输入格式上,自由度很高,常见的时间格式均可。
    2)一旦所写的时间格式出现报错,可以用format函数强制转换。
    3)可以通过列表,将时间点转换为索引。
    4)可以将DataFrame形式的时间,用to_datetime转换称Series的时间点。
  2. 时间精度与范围限制:
    1)Timestamp的时间精度最小到ns
    2)Timestamp的范围只有大约584年。
  3. date_range方法:
    1)重要参数:
    start:开始时间;
    end:终止时间;
    periods:时间点个数;
    freq:间隔方法;

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

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

DateOffset对象

  1. DataOffset 与 Timedelta 的区别:
    1)Timedelta绝对时间差的特点指无论是冬令时还是夏令时,增减1day都只计算24小时;
    2)DataOffset相对时间差指,无论一天是23\24\25小时,增减1day都与当天相同的时间保持一致;
    3)只要把tz(time zone)去除就可以不用管它了,两者保持一致,除非要使用到时区变换。
  2. 增减一段时间:
    1)DateOffset的可选参数包括years/months/weeks/days/hours/minutes/seconds。
  3. 序列的offset操作
    利用apply函数;
    直接使用对象加减;
    定制offset,可以指定weekmask和holidays参数;
  4. 各类常用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(定制工作日)

时序的索引及属性

时间点的属性

  1. 采用dt对象可以轻松获得关于时间的信息
  2. 利用strftime可重新修改时间格式
  3. 对于datetime对象可以直接通过属性获取信息

重采样

resample对象的基本操作

  1. 采样频率一般设置为上面提到的offset字符
  2. resample函数,可以看做时序版本的groupby函数

采样聚合

r = df_r.resample('3T')
r['A'].agg([np.sum, np.mean, np.std])

#类似地,可以使用函数/lambda表达式
r.agg({'A': np.sum,'B': lambda x: max(x)-min(x)})

采样组的迭代

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

窗口函数

Rolling

  1. 常用聚合:
    1)所谓rolling方法,就是规定一个窗口,它和groupby对象一样,本身不会进行操作,需要配合聚合函数才能计算结果。
    2)min_periods参数是指需要的非缺失数据点数量阀值。
    3)count/sum/mean/median/min/max/std/var/skew/kurt/quantile/cov/corr都是常用的聚合函数。
  2. rolling的apply聚合:
    使用apply聚合时,只需记住传入的是window大小的Series,输出的必须是标量即可,比如如下计算变异系数。
  3. 基于时间的rolling:
    可选closed=‘right’(默认)‘left’‘both’'neither’参数,决定端点的包含情况。

Expanding

  1. expanding函数:
    1)普通的expanding函数等价与rolling(window=len(s),min_periods=1),是对序列的累计计算。
    2)apply方法也是同样可用的。
  2. 几个特别的Expanding类型函数:
    1)cumsum/cumprod/cummax/cummin都是特殊expanding累计计算方法。
    2)shift/diff/pct_change都是涉及到了元素关系。
    ①shift是指序列索引不变,但值向后移动;
    ②diff是指前后元素的差,period参数表示间隔,默认为1,并且可以为负;
    ③pct_change是值前后元素的变化百分比,period参数与diff类似
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哎呦哥哥、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值