时间序列
datetime模块
datetime存储日期,也存储细化到微秒的时间,timedelta为两个datetime对象的时间差。
例:


字符串与datetime互相转换
strftime方法:timestamp转换为字符串。

strptime方法:字符串转换为日期类型,datetime.strptime(str,格式)

dateutil.parser.parse方法:能解析大部分人类可理解的日期字符串,转化为日期类型。

dayfirst参数等于True表明字符串中日出现在月之前。
datetime格式说明:
| 类型 | 描述 |
|---|---|
| %Y | 四位的年份 |
| %y | 两位的年份 |
| %m | 两位的月份 |
| %d | l两位的日期号 |
| %H | 小时,24小时制 |
| %I | 小时,12小时制 |
| %M | 两位分钟 |
| %S | 两位秒 |
| %w | 星期几(0(星期天)-6) |
DatetimeIndex
时间序列索引、选择、子集
传递一个能解释为日期的字符串:




切片:


含有重复索引时间序列分组
groupby方法默认axis=0,对行分组,level默认为None,若要按索引进行分组,传递对应层号或层名值给level参数;如groupby(level=0):

date_range:
pandas.date_range用于根据特定频率(默认为day)生成指定长度的Datetimeindex;需要指定起始和结尾日期,若只传递一个起始或结尾日期,必须传递范围:

常用基础时间序列频率:
| 别名 | 描述 |
|---|---|
| D | 日历日的每天 |
| B | 工作日的每天 |
| H | 每小时 |
| T或min | 每分钟 |
| S | 每秒 |
| L或ms | 每毫秒(1/1000秒) |
| U | 每微秒(1/1000000秒) |
| M | 日历日的月底日期 |
| BM | 工作日的月底日期 |
| MS | 日历日的月初日期 |
| BMS | 工作日的月初日期 |
| W-MON,W-TUE,… | 每周的星期一,二… |
| WOM-MON,WOM-2MON,… | 每月的第一个星期一,每月的第二个星期一 |
| Q-JAN,Q-FEB,… | 以指定月份为每年的结束月,取每个季度最后一个月的日历日的月底日期 |
| BQ-JAN,BQ-FEB… | 以指定月份为每年的结束月,取每个季度最后一个月的工作日的月底日期 |
| QS-JAN,QS-FEB… | 以指定月份为每年的结束月,取每个季度最后一个月的日历日的月初日期 |
| BQS-JAN,BQS-FEB… | 以指定月份为每年的结束月,取每个季度最后一个月的工作日的月初日期 |
| A-JAN,A-FEB… | 以指定月份为每年的结束月,取每年指定月份的日历日的月底日期 |
| BA-JAN,BA-FEB… | 以指定月份为每年的结束月,取每年指定月份的工作日的月底日期 |
| BAS-JAN,BAS-FEB | 以指定月份为每年的结束月,取每年指定月份的工作日的月初日期 |
标准化为零点的时间戳:date_range的参数normalize=True
日期偏置:如4h,1h30min等
移位日期
shift:
不指定频率,只移动数据,索引不变,会产生缺失值;指定频率则数据不变,索引移动。

时间区间
时间区间表示的是时间范围,如一些天,一些月,一些季度,一些年。Period类就是这种数据类型。
pd.Period_range
需传入一个字符串或数字以及频率;相关频率与时间戳的有些区别:
| A | 年 |
|---|---|
| M | 月 |
| D | 日 |
| H | 时 |
| T | 分 |
| S | 秒 |


区间频率转换
asfreq可以讲区间Period和PeriodIndex对象转换为其他频率。how=‘start’or’s’,取开始的日期,'end’or’e’取结束的日期;例:

区间算术
在时间段上增加或减去整数根据它们的频率进行移位


将时间戳转换为区间,将区间转换为时间戳
to_period():不指定频率的情况下,根据时间戳推断出新PeriodIndex的频率。可指定任意频率。

to_timestamp():

从数组生成PeriodIndex

重采样与频率转换
高频率频率到低频率为向下采样,聚合数据;低频率转换到高频率为向上采样,产生缺失值;其他情况为非向上、向下取样。
pandas对象resample方法:类似于groupby,对数据分组,再调用聚合函数。
resample参数:
| 参数 | 描述 |
|---|---|
| freq | 采样频率 |
| fill_method | 向上采样时的插值方式,‘ffill’或’bfill’;默认不插值。 |
| closed | 向下采样中,每段区间的哪一段是封闭的 |
| label | 向下采样中,使用哪段标记聚合结果 |
| limit | 前向或后向填充区间最大值 |
| kind | 对区间或时间戳的聚合,默认为时间序列索引类型 |
| convention | 将低频转为高频,‘s’or’e’,默认为’end’,仅使用periodindex,表示使用开头还是结尾 |
向下采样



resample.ohlc():ohlc聚合函数返回开端,结束,峰值、谷值。

向上采样

移动窗口
rolling滚动函数传入区间大小,min_periods参数指定每个窗口至少需要多少个数据。例:


本文深入探讨了时间序列数据的处理方法,包括datetime模块的使用、时间序列索引的创建与操作、频率转换、时间区间表示及算术运算。详细介绍了如何利用pandas库进行时间序列的切片、分组、重采样以及频率转换,适用于各种数据科学和金融分析场景。

1761

被折叠的 条评论
为什么被折叠?



