pandas的通用时间序列是不规则的,即时间序列的频率不是固定的。经常有需要处理固定频率的场景,例如每日的、每月的或每15分钟,这意味着需要在必要的时候向时间序列中引入缺失值。pandas拥有一整套标准的时间序列频率和工具用于重新采样、推断频率以及生成固定频率的数据范围。
字符串’D’被解释为每日频率。在频率间转换,又称为重新采样。
pandas.date_range是用于根据特定频率生成指定长度的DatetimeIndex:
默认情况下,date_range生成的是每日的时间戳。如果只传递一个起始或结尾日期,必须传递一个用于生成范围的数字:
开始日期和结束日期严格定义了生成日期索引的边界。
默认情况下,date_range保留开始或结束时间戳的时间:
有时候会获得包含时间信息的开始日期或结束日期,但是想要生成的是标准化为零点的时间戳。有一个normalize选项可以实现这个功能:
pandas中的频率是由基础频率和倍数组成的。基础频率通常会有字符串别名,例如’M’代表每月,’H’代表每小时。对于每个基础频率,都有一个对象可以被用于定义日期偏置。
可以传递一个整数来定义偏置量的倍数:
在大多数应用中,都不需要显式地创建这些对象,而是使用字符串别名,如’H’或’4H’。在基础频率前放一个整数就可以生成倍数:
类似地,可以传递频率字符串,例如’1h30min’将会有效地转换为同等的表达式:
“月中某星期”(week of month )的日期是一个有用的频率类,以’WOM’开始。它允许你可以获取每月第三个星期五这样的日期:
“移位”是指将日期按时间向前移动或向后移动。Series和DataFrame都有一个shift方法用于进行简单的前向或后向移位,而不改变索引:
由于简单移位并不改变索引,一些数据会被丢弃。因此,如果频率是已知的,则可以将频率传递给shift来推移时间戳而不是简单的数据:
pandas日期偏置也可以使用datetime或Timestamp对象完成:
如果添加了一个锚定偏置量,比如MonthEnd,根据频率规则,第一个增量会将日期“前滚”到下一个日期:
锚定偏置可以使用rollforward和rollback分别显式地将日期向前或向后”滚动”: