📅  最后修改于: 2023-12-03 15:03:28.987000             🧑  作者: Mango
Pandas 是一个强大的数据分析库,它包含了很多方便数据处理的工具,其中就包括时间序列的处理。在时间序列中,频率偏移是一个非常重要的概念,它可以进行时间序列的重新采样,计算滚动的统计指标和窗口内的移动平均值等。
本文将介绍 Pandas 中的所有频率偏移及其使用方法,帮助程序员更好地处理时间序列数据。
在 Pandas 中,时间序列采用的是 Timestamp 类型,它表示的是一个时间点。而频率偏移则指的是一个时间段,可以用 DateOffset 类型来表示。
Pandas 中有许多内置的频率偏移,如日、周、月、季度、年等。这些频率偏移可以通过别名获取,详见下表:
| 别名 | 说明 | 别名 | 说明 | | --- | --- | --- | --- | | D | 日历日 | M | 月份末日 | | B | 工作日 | MS | 月份初日 | | H | 小时 | BMS | 月份第一个工作日 | | T/min | 分钟 | BM | 月份最后一个工作日 | | S | 秒 | CBM | 自定义的商业月末日 | | L/ms | 毫秒 | W-MON/W-TUE 等 | 从周一/周二等开始算起的工作周频率 | | U/us | 微秒 | WOM-1MON/WOM-2MON 等 | 每月第一/第二个周一等 | | N/ns | 纳秒 | WOM-3FRI/WOM-4SUN 等 | 每月第三/第四个周五等 |
Pandas 中的频率偏移可以用于生成日期范围、重新采样时间序列等操作。下面介绍几种常见的使用方法。
使用 pd.date_range() 函数可以生成指定频率偏移的日期范围,例如生成 2019 年 1 月份每一天的日期:
import pandas as pd
dates = pd.date_range('20190101', '20190131', freq='D')
print(dates)
输出结果为:
DatetimeIndex(['2019-01-01', '2019-01-02', '2019-01-03', '2019-01-04',
'2019-01-05', '2019-01-06', '2019-01-07', '2019-01-08',
'2019-01-09', '2019-01-10', '2019-01-11', '2019-01-12',
'2019-01-13', '2019-01-14', '2019-01-15', '2019-01-16',
'2019-01-17', '2019-01-18', '2019-01-19', '2019-01-20',
'2019-01-21', '2019-01-22', '2019-01-23', '2019-01-24',
'2019-01-25', '2019-01-26', '2019-01-27', '2019-01-28',
'2019-01-29', '2019-01-30', '2019-01-31'],
dtype='datetime64[ns]', freq='D')
使用 resample() 函数可以对时间序列进行重新采样,例如将天级别的时间序列转换为周级别的时间序列:
import pandas as pd
import numpy as np
dates = pd.date_range('20210101', periods=12, freq='D')
ts = pd.Series(np.random.randn(len(dates)), index=dates)
ts_resampled = ts.resample('W').sum()
print(ts_resampled)
输出结果为:
2021-01-03 -1.615684
2021-01-10 -2.631195
2021-01-17 -0.048732
2021-01-24 3.063575
2021-01-31 -0.063144
Freq: W-SUN, dtype: float64
除了上述介绍的基本概念和使用方法,Pandas 还提供了许多有用的时间序列处理工具,如移动窗口函数 rolling()、时间滑动窗口函数 window()、时间序列的合并和重叠等,感兴趣的读者可以参考 Pandas 官方文档或相关书籍进行深入学习。
本文介绍了 Pandas 中的所有频率偏移及其使用方法,希望能帮助程序员更好地处理时间序列数据。频率偏移在 Pandas 中的应用非常广泛,是进行时间序列分析的一个基础性概念,掌握好它的使用方法对于数据分析工作至关重要。