美文网首页呆鸟的Python数据分析
《利用Python进行数据分析》——时间序列

《利用Python进行数据分析》——时间序列

作者: 皮皮大 | 来源:发表于2019-08-08 16:28 被阅读0次

    时间序列

    时间序列数据是一种非常重要的结构化数据形式,应用于:金融学、经济学、神经科学、物理学等多个领域。

    • 很多时间序列是固定频率的,数据点是根据某种规律定期出现的
    • 时间序列也可以是不定期的,没有固定的单位或者单位之间的偏移量

    应用场景

    • 时间戳timestamp,特定的时刻
    • pandas通过numpydatatime64数据类型以纳秒形式存储时间戳
    • 固定时期period
    • 时间间隔interval,由起始和结束的时间戳表示
    • 时间或者时间过程

    最常见的时间序列是时间戳进行索引

    日期和时间数据集工具

    • 标准库:date、timecalendar
    • 模块包含:datetime、time、calendar

    应用最多的是datetime.datetime

    image.png

    字符串和datetime的相互转换

    • 利用str或者strftime()将datetime对象转成字符串对象:datetime--->字符串
    • datetime.strptime:将字符串转换为日期形式:字符串---->datetime
    image.png

    日期的范围pd.date_range

    • pandas原生序列是不规则的,没有固定频率
    • pandas自带工具用于:重采样、频率判断、生成固定频率日期范围
    • 生成指定的日期范围,可以指定开始和结束日期:
    • index = pd.date_range('2012-04-01', '2012-06-01')
    • pd.date_range(end='2012-06-01', periods=20)
    • 生成每月的第一天或者最后一天等形式的日期格式:

    pd.date_range('2000-01-01', '2000-12-01', freq='MS')

    频率和移动

    • pandas中的频率通过一个基础频率(base frequency)和整数组成

    • 基础频率通常是字符串别名,比如M表示每月,H表示每小时

    • 每个基础频率都有date offset日期偏移量与之相对应
      from pandas.tseries.offsets import Day
      pd.date_range('2000-01-01', '2000-01-03 23:59', freq='4h')

    • 偏移量对象能够通过加法进行相加:Hour(2)+Minute(20)

    • 传入频率字符串:2h30min

    from pandas.tseries.offsets import Hour, Minute
    hour = Hour()
    five_hour = Hour(5)
    
    image.png
    image.png

    字符串和datetime的相互转换

    • 利用str或者strftime()datetime对象转成字符串对象:datetime--->字符串
    • datetime.strptime:将字符串转换为日期形式:字符串---->datetime
    • datetime.strptime:通过已知格式进行解析的最佳方式
    • dateutil中的parser.parse 进行解析:parse("时间")
    image.png image.png
    image.png

    时间序列基础

    • pandas中最常用的时间序列类型是时间戳
    • 以字符串或者datetime对象作为索引
    image.png

    如何通过时间对象来选取数据

    • 通过标签来选取数据
    • 直接传入可以被解释为日期的字符
    • 通过index标签中传入年月即可创建连续时间数据


      image.png
      image.png
    image.png

    带有重复索引的时间序列

    • 通过索引的is_unique属性来判断是否唯一
    • 非唯一时间戳的数据聚合:使用groupby,传入level=0


      image.png
      image.png

    日期范围、偏移量和移动

    # 日期的范围、频率和移动
    # pd.date_range():生成指定频率和长度的日期对象索引
    index = pd.date_range('2012-04-01', '2012-06-01')
    index
    
    # 生成指定范围,指定开始日期
    pd.date_range(start='2012-04-01', periods=20)
    
    # 指定结束日期和长度
    pd.date_range(end='2012-06-01', periods=20)
    
    # 生成每个月的最后一天,作为索引
    pd.date_range('2000-01-01', '2000-12-01', freq='BM')
    
    # 生成每个月的第一天,作为索引
    pd.date_range('2000-01-01', '2000-12-01', freq='MS')
    
    # 起始和结束日期带有时间信息;通过normalize转化为时间戳
    pd.date_range('2012-05-02 12:56:31', periods=5, normalize=True)
    
    # 偏移量处理
    from pandas.tseries.offsets import Hour, Minute
    hour = Hour()
    five_hour = Hour(5)
    Hour(2 ) + Minute(20)
    
    image.png
    image.png

    WOM

    • Week of Month:获取每月第三个星期五之类的日期
      image.png

    相关文章

      网友评论

        本文标题:《利用Python进行数据分析》——时间序列

        本文链接:https://www.haomeiwen.com/subject/flgxjctx.html