• 时间序列--日期和时间数据类型及工具


    时间序列(time series)数据是一种重要得结构化数据形式,在多个时间点观察或测量到得任何事物都可以形成一段时间序列,很多时间序列是固定频率的。也就是说,数据点是根据某种规律定期出现的(比如15s、5min、1mont)。时间序列也可以是不定期的。时间序列的意义取决于具体的应用场景,主要有以下几种:

    • 时间戳(timestamp),特定的时刻
    • 固定日期(period),如2007年1月或2010年全年
    • 时间间隔(interval),由起始和结束时间戳表示,时期(period)可以被看作间隔(interval)的特例
    • 实验或过程时间,每个时间点都是相对于特定起始时间的一个度量

    pandas提供了一组标准的时间序列处理工具和数据算法。

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

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

    约定:from datetime import datetime

    1 >>> from datetime import datetime
    2 >>> now = datetime.now()
    3 >>> now
    4 datetime.datetime(2020, 2, 5, 10, 58, 59, 339099)
    5 >>> now.year, now.month, now.day 
    6 (2020, 2, 5)

    datetime以毫秒形式存储日期和时间,datetime.timedelta表示两个datetime对象之间的时间差:

    1 >>> delta = datetime(2011, 1, 7) - datetime(2011, 1, 6) 
    2 >>> delta.days                    
    3 1
    4 >>> delta.seconds
    5 0
    6 >>>

    可以给datetime对象加上(或减去)一个或多个timedelta。

    1 >>> from datetime import timedelta
    2 >>> start = datetime(2011, 1, 7) 
    3 >>> start + timedelta(12)
    4 datetime.datetime(2011, 1, 19, 0, 0)
    5 >>> start - 2 * timedelta(12)
    6 datetime.datetime(2010, 12, 14, 0, 0)

    datetime模块中的数据类型如下表所示:

    类型

    说明

    date

    以公历形式存储日历日期(年、月、日)

    time

    将时间存储为时、分、秒、毫秒

    datetime

    存储日期和时间

    timedelta

    表示两个datetime值之间的差(日、秒、毫秒)

    1.1.1  字符串和datetime的相互转换

    利用str或strftime方法(传入一个格式化字符串),datetime对象和pandas的Timestamp对象可以被格式化为字符串。

    1 >>> stamp = datetime(2020, 2, 5) 
    2 >>> str(stamp) 
    3 '2020-02-05 00:00:00'
    4 >>> stamp.strftime('%Y-%m-%d') 
    5 '2020-02-05'

    下表是全部的格式化编码,datatime.strptime可以用这些格式化编码将字符串转换为日期:

    代码

    说明

    %Y

    4位数的年

    %y

    2位数的年

    %m

    2位数的月[01, 12]

    %d

    2位数的日[01, 31]

    %H

    时(24小时制)[00, 23]

    %

    时(12小时制)[01, 12]

    %M

    2位数的分[00, 59]

    %S

    秒[00, 60](秒60和61用于闰秒)

    %w

    用整数表示的星期几[0(星期天), 6]

    %U

    每年的第几周[00, 53],星期天被认为是每周的第一天,每年第一个星期天之前的那几天被认为是“第0周”。

    %W

    每年的第几周[00, 53],星期一被认为是每周的第一天,每年第一个星期一之前的那几天被认为是“第0周”

    %z

    以+HHMM或-HHMM表示的UTC时区偏移量,如果时区为naïve,则返回空字符串

    %F

    %Y-%m-%d简写形式,例如2012-4-18

    %D

    %m/%d/%y简写形式,例如04/18/12

    datetime对象还有一些特定于当前环境(位于不同国家或不同语言的系统)的格式化选项。如下表所示:

    代码

    说明

    %a

    星期几的简写

    %A

    星期几的全称

    %b

    月份的简写

    %B

    月份的全称

    %c

    完整的日期和时间,例如“Tue 01 May 2012 04:20:57 PM”

    %p

    不同环境中的AM或PM

    %x

    适合于当前环境的日期格式

    %X

    适用于当前环境的时间格式

  • 相关阅读:
    【BZOJ3533】向量集(SDOI2014)-线段树+凸壳+二分
    【BZOJ4869】相逢是问候(六省联考2017)-扩展欧拉定理+线段树
    【BZOJ4012】开店(HNOI2015)-动态点分治+set
    【BZOJ1095】捉迷藏(ZJOI2007)-动态点分治+堆
    【BZOJ2299】向量(HAOI2011)-裴蜀定理
    【BZOJ4942】整数(NOI2017)-线段树+压位
    【BZOJ3594】方伯伯的玉米田(SCOI2014)-DP+二维树状数组
    背包DP专题
    【2018.11.7】【luoguNOIp 热身赛】解题报告及总结
    【一天一DP计划】状压DP
  • 原文地址:https://www.cnblogs.com/mrlayfolk/p/12268394.html
Copyright © 2020-2023  润新知