zoukankan      html  css  js  c++  java
  • 【Python数据分析】pandas日期范围date_range

    1.date_range

    1.1 按频率生成时间段

    import pandas as pd
    print(pd.date_range('2017/1/1','2017/1/4'))  # 默认freq = 'D':每日历日
    print(pd.date_range('2017/1/1','2017/1/4', freq = 'B'))  # B:每工作日
    print(pd.date_range('2017/1/1','2017/1/2', freq = 'H'))  # H:每小时
    print(pd.date_range('2017/1/1 12:00','2017/1/1 12:10', freq = 'T'))  # T/MIN:每分
    print(pd.date_range('2017/1/1 12:00:00','2017/1/1 12:00:10', freq = 'S'))  # S:每秒
    print(pd.date_range('2017/1/1 12:00:00','2017/1/1 12:00:10', freq = 'L'))  # L:每毫秒(千分之一秒)
    print(pd.date_range('2017/1/1 12:00:00','2017/1/1 12:00:10', freq = 'U'))  # U:每微秒(百万分之一秒)
    
    print(pd.date_range('2017/1/1','2017/2/1', freq = 'W-MON'))
    # W-MON:从指定星期几开始算起,每周
    # 星期几缩写:MON/TUE/WED/THU/FRI/SAT/SUN
    
    print(pd.date_range('2017/1/1','2017/5/1', freq = 'WOM-2MON'))
    # WOM-2MON:每月的第几个星期几开始算,这里是每月第二个星期一
    
    print(pd.date_range('2017','2018', freq = 'M'))
    print(pd.date_range('2017','2020', freq = 'Q-DEC'))
    print(pd.date_range('2017','2020', freq = 'A-DEC'))
    print('-' * 50)
    # M:每月最后一个日历日
    # Q-月:指定月为季度末,每个季度末最后一月的最后一个日历日
    # A-月:每年指定月份的最后一个日历日
    # 月缩写:JAN/FEB/MAR/APR/MAY/JUN/JUL/AUG/SEP/OCT/NOV/DEC
    # 所以Q-月只有三种情况:1-4-7-10,2-5-8-11,3-6-9-12
    
    print(pd.date_range('2017','2018', freq = 'BM'))
    print(pd.date_range('2017','2020', freq = 'BQ-DEC'))
    print(pd.date_range('2017','2020', freq = 'BA-DEC'))
    print('*' * 50)
    # BM:每月最后一个工作日
    # BQ-月:指定月为季度末,每个季度末最后一月的最后一个工作日
    # BA-月:每年指定月份的最后一个工作日
    
    print(pd.date_range('2017','2018', freq = 'MS'))
    print(pd.date_range('2017','2020', freq = 'QS-DEC'))
    print(pd.date_range('2017','2020', freq = 'AS-DEC'))
    print('-' * 50)
    # M:每月第一个日历日
    # Q-月:指定月为季度末,每个季度末最后一月的第一个日历日
    # A-月:每年指定月份的第一个日历日
    
    print(pd.date_range('2017','2018', freq = 'BMS'))
    print(pd.date_range('2017','2020', freq = 'BQS-DEC'))
    print(pd.date_range('2017','2020', freq = 'BAS-DEC'))
    # BM:每月第一个工作日
    # BQ-月:指定月为季度末,每个季度末最后一月的第一个工作日
    # BA-月:每年指定月份的第一个工作日
    

    1.2 按复合频率生成时间段

    import pandas as pd
    print(pd.date_range('2017/1/1','2017/2/1', freq = '7D'))  # 7天
    print(pd.date_range('2017/1/1','2017/1/2', freq = '2h30min'))  # 2小时30分钟
    print(pd.date_range('2017','2018', freq = '2M'))  # 2月,每月最后一个日历日
    

    1.3 asfreq频率转换

    import numpy as np
    import pandas as pd
    ts = pd.Series(np.random.rand(4), index = pd.date_range('20170101','20170104'))
    print(ts)
    print(ts.asfreq('4H',method = 'ffill'))
    # 改变频率,这里是D改为4H
    # method:插值模式,None不插值,ffill用之前值填充,bfill用之后值填充
    

    1.4 生成超前-滞后的数据范围

    import numpy as np
    import pandas as pd
    # pd.date_range()-日期范围:超前/滞后数据
    
    ts = pd.Series(np.random.rand(4),
                  index = pd.date_range('20170101','20170104'))
    print(ts)
    
    print(ts.shift(2))
    print(ts.shift(-2))
    print('*' * 50)
    # 正数:数值后移(滞后);负数:数值前移(超前)
    
    per = ts/ts.shift(1) - 1
    print(per)
    print('-' * 50)
    # 计算变化百分比,这里计算:该时间戳与上一个时间戳相比,变化百分比
    
    print(ts.shift(2, freq = 'D'))
    print(ts.shift(2, freq = 'T'))
    # 加上freq参数:对时间戳进行位移,而不是对数值进行位移
    

    2.时间戳索引DatetimeIndex

    以下是一个生成时间戳索引的案例

    import pandas as pd
    import numpy as np
    # 直接生成时间戳索引,支持str、datetime.datetime
    # 单个时间戳为Timestamp,多个时间戳为DatetimeIndex
    dix = pd.DatetimeIndex(['2020-01-01','2020-01-02','2020-01-03','2020-01-04'])
    print(dix)
    print(dix[0],type(dix[0]))
    
    print('-' * 50)
    
    # 以DatetimeIndex为index的Series,为TimeSries,时间序列
    st = pd.Series(np.random.rand(len(dix)), index = dix)
    print(st,type(st))
    print(st.index)
    
  • 相关阅读:
    mahout协同过滤算法
    如何实现团队的自组织管理
    Trail: JDBC(TM) Database Access(3)
    JavaEE5 Tutorial_JavaBean,JSTL
    JavaEE5 Tutorial_Jsp,EL
    JavaEE5 Tutorial_Servlet
    J2SE7规范_2013.2_类
    J2SE7规范_2013.2_类型_命名
    Trail: JDBC(TM) Database Access(2)
    Trail: JDBC(TM) Database Access(1)
  • 原文地址:https://www.cnblogs.com/OliverQin/p/12283897.html
Copyright © 2011-2022 走看看