11.3 日期范围、频率和移位
pandas拥有一整套标准的时间序列频率和工具用于重新采样、推断频率以及生成固定频率的数据范围,可以用来处理固定频率的场景。
1.调用resample方法将样本时间序列转换为固定的每日频率数据(见图11-1)
11.3.1 生成日期范围
1.利用pandas.date_range根据特定频率生成指定长度的DatetimeIndex(见图11-2)
2.date_range用法二,只传递一个起始或结尾日期以及传递一个用于生成范围的数字(见图11-3)
3.开始日期和结束日期严格的定义了生成日期索引的边界,改变其频率的方法
示例:传递’BM’频率(business end of month ,月度业务结尾生成每月最后业务日期的时间索引(见图11-4)
附:基础时间序列频率(见表11-1、11-1(续))
4.开始或结束时间戳的时间的保留与修改(见图11-5)
11.3.2 频率和日期偏置
pandas中的频率是由基础频率和倍数组成的。基础频率通常会有字符串别名,例如’M'代表每月,'H’代表每小时。
1.对于每个基础频率,都有一个对象可以被用于定义日期偏置,每小时的频率可以使用Hour类来表示(如图11-6)
2.使用字符串别名,不需要显式地创建这些对象,在基础频率前放一个整数以生成倍数(图11-7)
3.多个偏置的加法联合(见图11-8)
4.传递频率字符串,例如’1h30min’将会有效地转换为同等的表达式(如图11-9)
注:有些频率描述点的时间并不是均匀分隔的。例如,'M'(日历月末)和’BM'(月内最后工作日)取决于当月天数,我们将这些日期称为锚定偏置量。
根据表11-1,可以获得pandas中的频率代码和日期偏置类,用户可以自行定义频率类型,用于提供pandas中没有的日期逻辑
11.3.2.1 月中某星期的日期
1.月中某星期
"月中某星期"(week of month )的日期是一个有用的频率类,以’WOM’开始。
示例:获取每月第三个星期五这样的日期(见图11-10)
11.3.3 移位(前向和后向)日期
"移位"是指将日期按时间向前移动或向后移动。
1.Series中shift方法用于进行简单的前向或后向移位,而不改变索引(见图11-11)
注:由于简单移位并不改变索引,一些数据会被丢弃
2.如果频率是已知的,则可以将频率传递给shift来推移时间戳而不是简单的数据(见图11-12)
11.3.3.1 使用偏置进行移位日期
1.pandas日期偏置也可以使用datetime或Timestamp对象完成(见图11-13)
2.如果添加了一个锚定偏置量,比如MonthEnd,根据频率规则,第一个增量会将日期“前滚”到下一个日期(见图11-14)
3.创造性用法:将移位方法与groupby一起使用(见图11-15)