1、时间偏移
- DateOffset 对象
DateOffset 类似于时间差 timedelta ,但它使用日历中时间日期的规则,而不是直接进行时间性质的算术计算,让时间更符合实际生活。比如,有些地区使用夏令时时,每日偏移时间有可能是 23 或 24 小时,甚至 25 个小时。
- 移动偏移
- 与时序的计算
可以为 Series 或 DatetimeIndex 时间索引序列应用时间偏移。和其他时间序列数据一样,时间偏移后的数据一般会作为索引,运用在统计当中。
对于固定在特定频率开始或结束(monthhend、MonthBegin、WeekEnd等)的偏移,以下规则适用于向前和向后滚动:
当n不为0时,如果给定日期不在锚点上,则它会捕捉到下一个(上一个)锚点,并向前或向后移动 |n|-1 步。
'''
pd.Timestamp('2014-01-02') + pd.offsets.MonthBegin(n=1)
# Timestamp('2014-02-01 00:00:00')
pd.Timestamp('2014-01-02') + pd.offsets.MonthEnd(n=1)
# Timestamp('2014-01-31 00:00:00')
pd.Timestamp('2014-01-02') - pd.offsets.MonthBegin(n=1)
Out[238]: Timestamp('2014-01-01 00:00:00')
pd.Timestamp('2014-01-02') - pd.offsets.MonthEnd(n=1)
# Timestamp('2013-12-31 00:00:00')
pd.Timestamp('2014-01-02') + pd.offsets.MonthBegin(n=4)
# Timestamp('2014-05-01 00:00:00')
pd.Timestamp('2014-01-02') - pd.offsets.MonthBegin(n=4)
# Timestamp('2013-10-01 00:00:00')
'''
如果给定的日期在锚点上,则将其| n |移动。 指向前进或后退:
'''
pd.Timestamp('2014-01-01') + pd.offsets.MonthBegin(n=1)
# Timestamp('2014-02-01 00:00:00')
pd.Timestamp('2014-01-31') + pd.offsets.MonthEnd(n=1)
# Timestamp('2014-02-28 00:00:00')
pd.Timestamp('2014-01-01') - pd.offsets.MonthBegin(n=1)
# Timestamp('2013-12-01 00:00:00')
pd.Timestamp('2014-01-31') - pd.offsets.MonthEnd(n=1)
# Timestamp('2013-12-31 00:00:00')
pd.Timestamp('2014-01-01') + pd.offsets.MonthBegin(n=4)
# Timestamp('2014-05-01 00:00:00')
pd.Timestamp('2014-01-31') - pd.offsets.MonthBegin(n=4)
# Timestamp('2013-10-01 00:00:00')
'''
对于n = 0的情况,如果在锚点上,则日期不会移动,否则它将前滚到下一个锚点。
2、时间段
3、时间操作
- 时间重采样
Pandas 具有简单,强大和高效的功能,可在频率转换期间执行重采样操作(例如,将秒数据转换为5分钟数据)。 这在金融应用程序中非常普遍,但不仅限于此。
rng = pd.date_range('1/1/2012', periods=1000, freq='S')
ts = pd.Series(np.random.randint(0, 500, len(rng)), index=rng)
# 每5分钟进行一次聚合
ts.resample('5Min').sum()
'''
2012-01-01 00:00:00 74477
2012-01-01 00:05:00 74834
2012-01-01 00:10:00 76489
2012-01-01 00:15:00 25095
Freq: 5T, dtype: int64
'''
- 聚合
类似于 aggregating API, groupby API, 和窗口方法 api, Resampler 也适用相关方法。重新采样DataFrame时,默认值是对具有相同功能的所有列进行操作:
4、参考文献
《深入浅出Pandas》
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。