• 6-Python中的日期与时间数据(介绍时序数据、datetime模块介绍、字符串与时间互换)


    一、什么是时间序列?

    时间序列(Time Series)是一种重要的结构化数据形式,在多个时间点观察或测量到的任何事物都可以形成一段时间序列,可分为以下两种:

    • 定期的时间序列:数据根据某种规律定期出现(例如:每10秒、每1分)
    • 不定期的时间序列:数据之间并没有固定的时间单位或是单位之间的偏移量

    二、时间序列的类型有哪些?

    时间序列数据的类型主要取决于具体的应用场景,一般可分为3种:

    1. 时间戳(Timestamps):即特定的时刻,如2020年1月1日14时12分34秒
    2. 固定时期(Fixed periods):如2020年3月或2020年全年
    3. 时间间隔(Interval of time):如2020年8月1日到2020年9月1日

    三、时间序列类型的处理是否Pandas中独有?

    不是Pandas中独有的,Python的基础库中包含了用于日期(date)时间(time)数据的数据类型,主要用到的模块有datetimetime

    但是Pandas提供了一组标准的时间序列处理工具和数据算法,如切片、切块、聚合、对定期/不定期的时间序列进行重采样等。

    四、datetime模块

    datetime模块中的数据类型如下

    类型 说明
    date 以公历形式存储日历日期(年、月、日)
    time 将时间存储为时、分、秒、毫秒
    datetime 存储日期和时间,即date和time的结合
    timedelta 两个datetime值之间的差(日、秒、毫秒)

    其中:datetime.datetime简称为datetime,是最为常用的数据类型。

    :查看当前的日期与时间(记录到秒),为datetime类型:

    >>> from datetime import datetime
    >>> now = datetime.now()
    >>> now
    datetime.datetime(2020, 8, 8, 17, 10, 19, 19020)
    
    #可使用如下方式查看年、月、日、时、分、秒
    >>> x = [now.year,now.month,now.day,now.hour,now.minute,now.second]
    >>> x
    [2020, 8, 8, 17, 10, 19]
    

      两个datetime对象之间的时间差(日、秒、毫秒)为timedelta类型

    >>> delta = now - datetime(2020,1,14)
    >>> delta
    datetime.timedelta(days=207, seconds=61819, microseconds=19020)
    
    #所以可以通过如下方式查看日、秒、毫秒
    >>> y = [delta.days,delta.seconds,delta.microseconds]
    >>> y
    [207, 61819, 19020]
    

    五、字符串和datetime的互换 

    字符串与datetime之间通常需要进行转换,有如下几种方式:

    • Python标准库函数:
      • 日期--->字符串strstrftime
      • 字符串--->日期datetime.striptime
    • 第三方库函数:

     time模块中字符串与时间的互换这里也可以参考另一篇博文【python小题目汇总的第一题

    1)日期----->字符串

    :使用str将日期转换成字符串

    >>> stamp = datetime(2020,8,8)
    >>> str(stamp)
    '2020-08-08 00:00:00'
    

      那么如何对datetime的格式进行更改呢,在这就设计到了对datetime格式的定义

    符号 说明
    %Y 4位数的年份
    %y 2位数的年份
    %m 2位数的月
    %d 2位数的日
    %H 24小时的时
    %I 12小时的时

    :使用strftime将日期转换成字符串,并设置格式

    >>> stamp.strftime('%y-%m-%d')
    '20-08-08'
    >>> stamp.strftime('%Y-%m-%d')
    '2020-08-08'
    

    2)字符串----->日期

     例:使用strptime将字符串转换成日期,需要传入格式

     需要注意的是:此处的格式不可随便设置,应该与字符串中的格式一致

    >>> value = '2020-1-14'
    #此时以下将会报错
    >>> datetime.strptime(value,'%y-%m-%d')
    ValueError: time data '2020-1-14' does not match format '%y-%m-%d'
    
    >>> datetime.strptime(value,'%Y-%m-%d')
    datetime.datetime(2020, 1, 14, 0, 0)
    

      可以strptime结合使用列表推导式将多个字符串转换成日期

    >>> values = ['2020-5-23','2018-4-2']
    >>> [datetime.strptime(value,'%Y-%m-%d') for value in values]
    [datetime.datetime(2020, 5, 23, 0, 0), datetime.datetime(2018, 4, 2, 0, 0)]
    

      

  • 相关阅读:
    这几天都是在公司慢待
    电脑没有关机可能出现发博文dns异常(write)
    DOS/VBS
    SourceInsight
    CevaEclipse
    C/C++
    Matlab
    Matlab
    C语言
    Matlab
  • 原文地址:https://www.cnblogs.com/Cheryol/p/13458413.html
Copyright © 2020-2023  润新知