ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Pandas:时序数据(下)

2022-07-17 01:05:21  阅读:193  来源: 互联网

标签:00 01 offsets Timestamp 时序 pd 2014 数据 Pandas


1、时间偏移

  • DateOffset 对象

DateOffset 类似于时间差 Timedelta ,但它使用日历中时间日期的规则,而不是直接进行时间性质的算术计算,让时间更符合实际生活。比如,有些地区使用夏令时时,每日偏移时间有可能是 23 或 24 小时,甚至 25 个小时。

  • 移动偏移

  • 应用偏移

  • 偏移参数
    上边我们偏移时只偏移了偏移对象的一个单位,可以传入参数支持多个单位和对象中的其他单位:


  • 相关查询
    当使用日期作为索引的DataFrame时,此函数可以基于日期偏移量选择最后几行:

  • 与时序的计算
    可以为 Series 或 DatetimeIndex 时间索引序列应用时间偏移。和其他时间序列数据一样,时间偏移后的数据一般会作为索引,运用在统计当中。

  • 锚定偏移
    对于某些频率,可以指定锚定后缀,让它支持在一定有时间开始或结束。比如我们可以把周频率从默认的周日调到周一 'W-MON'。

对于固定在特定频率开始或结束(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》

标签:00,01,offsets,Timestamp,时序,pd,2014,数据,Pandas
来源: https://www.cnblogs.com/caolanying/p/16485732.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有