zoukankan      html  css  js  c++  java
  • 《利用Python进行数据分析》之pandas的时间序列基础

    本章以《利用python进行数据分析》的第10章:时间序列 为基础,整理了pandas 库中时间序列相关用法。
    时间序列数据的意义取决于具体的应用场景,主要有以下几种:

    • 时间戳(timestamp)
    • 固定时期(period)
    • 时间间隔(interval)
    • 实验或过程时间

    pandas提供了一组标准的时间序列处理工具和算法,可以轻松的对时间序列进行切片、聚合,对定期/不定期的时间序列进行重采样等。
    这些工具大部分对金融和经济数据尤为有用,同时也可以用来分析服务器和日志数据。

    1.日期和时间数据类型及工具

    python标准库包含用于日期(date)和时间(time)的数据类型,主要用到datetime、time、calendar等模块。

    datetime模块

    datetime模块中的数据类型

    • date :以公历形式存储日期 (年月日)
    • time :将时间存储为时、分、秒、毫秒
    • datetime :存储日期和时间
    • timedelta :表示两个datetime值之间的差 (日、秒、毫秒)

    (1)datetime

    • .now()函数,返回一个当前时间的datetime类型
    • datetime类型 有 .year ,.month , .day等属性
    import pandas as pd
    from pandas import Series
    from pandas import DataFrame
    from datetime import datetime
    now=datetime.now()
    now.year,now.month,now.day
    
    (2019, 3, 18)
    

    (2)timedelta

    • timedelta表示两个datetime对象之间的时间差
    • 有 .days , .seconds 等属性
    delta = datetime(2019,3,18)-datetime(2019,1,1,8,15)
    delta.days
    delta.seconds
    
    56700
    

    可以给datetime对象加上(减去)一个或者多个timedelta,则产生一个新对象

    from datetime import timedelta
    start=datetime(2019,1,1)
    start=start+timedelta(75)
    start1=start-2*timedelta(75)
    start
    print (start)
    print (start1)
    
    2019-03-17 00:00:00
    2018-10-18 00:00:00
    

    (3)字符串和datetime的相互转换

    datetime类型或者timestamp 类型 --> 字符串类型

    • str()函数
    • datetime的.strftime('%y-%m-%d')方法 ,其中格式化编码表格在P306
    stamp=datetime(2019,1,1)
    str1=str(stamp)
    str2=stamp.strftime('%Y-%m-%d %H:%M:%S')
    print (str1)
    print (str2)
    
    2019-01-01 00:00:00
    2019-01-01 00:00:00
    

    字符串类型 --> datetime类型或者timestamp 类型

    • datetime的.strptime方法
    value='2019-01-01'
    d1=datetime.strptime(value,'%Y-%m-%d')
    print (d1)
    
    2019-01-01 00:00:00
    

    其中,是通过已知格式进行日期解析,但是编写格式定义比较麻烦
    可以通过dateutil这个第三方包中parser.parse方法,可以对格式快速解析

    from dateutil.parser import parse
    parse('2011-01-01')
    parse('6/12/2011',dayfirst=True)
    
    datetime.datetime(2011, 12, 6, 0, 0)
    

    pandas 通常是用于处理成组日期。
    to_datetime方法可以解析多种不同的日期表示形式

    datestrs=['7/6/2019','8/6/2019']
    pd.to_datetime(datestrs)
    
    DatetimeIndex(['2019-07-06', '2019-08-06'], dtype='datetime64[ns]', freq=None)
    

    2.时间序列基础

    pandas 最基本的时间序列类型就是以时间戳(python字符串 或datetime对象)为索引的Series
    当创建一个带有DatatimeIndex的Series时,pandas就会创建一个TimeSeries

    (1)TimeSeries的创建

    import numpy as np
    dates=[datetime(2019,1,1),datetime(2019,1,2),datetime(2019,1,3),datetime(2019,1,4)]
    ts=Series(np.random.randn(4),index=dates)
    ts
    
    2019-01-01   -0.372832
    2019-01-02    0.460571
    2019-01-03    0.488445
    2019-01-04   -0.208852
    dtype: float64
    

    (2)TimeSeries的索引、切片

    TimeSeries是Series的一个子类,所以其索引切片都很类似

    1.索引

    ts.index[2]
    
    Timestamp('2019-01-03 00:00:00')
    
    ts[ts.index[2]]
    ts[datetime(2019,1,2)]
    
    0.4605713788911559
    

    2.切片

    可以传入字符串日期、datetime、timestamp
    切片的是源数据的视图,与numpy的数组切片运算是一样的。

    ts['2019-01-02':'2019-01-04']
    
    2019-01-02    0.460571
    2019-01-03    0.488445
    2019-01-04   -0.208852
    dtype: float64
  • 相关阅读:
    SkylineGlobe 7.0.1 & 7.0.2版本Web开发 如何实现对三维模型和地形的剖切展示
    SkylineGlobe 7.0.1 & 7.0.2版本Web开发 如何正确使用三维地图控件和工程树控件
    SkylineGlobe TerraExplorer for Web 7.1.0版本 接口示例
    如何解决一个从SkylineGlobe5版本升级到7版本遇到的小问题
    Cesium如何通过addImageryProvider方法加载SkylineGlobe Server发布的WMS服务
    SkylineGlobe7.0.1版本 支持SQLite(*.sqlite;*.db)数据库
    SkylineGlobe7.0.1版本 通过鼠标左右平移模型对象
    显示器文字发虚的一种原因
    HttpClient + IIS压缩动态内容
    C# Async Await 注意事项
  • 原文地址:https://www.cnblogs.com/laiyaling/p/10655753.html
Copyright © 2011-2022 走看看