开发者

Python的Pandas时序数据详解

目录
  • Pandas时序数据
    • 一、python中的时间表示-datetime模块
      • 1.换取当前时间
      • 2.指定时间
      • 3.运算
  • 二、 Pandas处理时序序列 
    • 1.pd.Timestamp()
      • 2.pd.Timedelta()
        • 3.运算
          • 4.时间索引
          • 总结

            Pandas时序数据

            前言 在数据分析中,时序数据是一类非常重要的数据。事物的发展总是伴随着时间的推移,数据也会在各个时间点上产生。

            一、python中的时间表示-datetime模块

            ​ Python的标准库datetime支持创建和处理时间,Pandas的时间时序模块是在datetime的基础上建立的。

            1.换取当前时间

            import datetime
            
            now = datetime.datetime.now()  # 2022-03-06 18:43:49.506048
            

            其中now的全貌如下,是一个datetime对象:

            now: datetime.datetime(2022, 3, 6, 18, 37, 10, 132078)
            

            ​ datetime.datetime对象常用的方法:

            ​ (1) strftime(): 对datetime对象的格式进行转换。使用含%的占位符书写目标格式,如:

            newForm = now.strftime("%Y-%m-%d (%H:%M:%S)")
            # 2022-03-06 (18:52:31)  为字符串类型
            

            ​ 各占位符的含义如下

            % y 两位数的年份表示(00 - 99)
            % Y 四位数的年份表示(000 - 9999)
            % m 月份(01 - 12)
            % d 月内中的一天(0 - 31)
            % H 24小时制小时数(0 - 23)
            % I 12小时制小时数(01 - 12)
            % M 分钟数(00 = 59)
            % S 秒(00 - 59)
            % a 本地简化星期名称
            % A 本地完整星期名称
            % b 本地简化的月份名称
            % B 本地完整的月份名称
            % c 本地相应http://www.cppcns.com的日期表示和时间表示
            % j 年内的一天(001 - 366)
            % p 本地A.M.或P.M.的等价符
            % U 一年中的星期数(00 - 53)星期天为星期的开始
            % w 星期(0 - 6),星期天为星期的开始
            % W 一年中的星期数(00 - 53)星期一为星期的开始
            % x 本地相应的日期表示
            % X 本地相应的时间表示
            % Z 当前时区的名称
            % %  % 号本身
            

            2.指定时间

            datetime.datetime()中传入对应的参数,默认按照单位从大到小指定

            birthday = datetime.datetime(2001, 1, 11)  # 默认指定
            print(birthday)
            

            ​ 也可以通过参数指定,其中yearmonnthday三个参数必须指定

            yesterdahttp://www.cppcns.comy = pd.Timestamp(2022, 3, 5)  # 2022-03-05 00:00:00
            now = pd.Timestamp("now")  # 2022-03-06 19:13:56.507604
            
            

            3.运算

            (1) datetime.datetime对象之间支持减法运算,得到的是一个datetime.timedelta对象

            delta = yeaterday - birthday  # 7723 days, 0:00:00
            

            二、 Pandas处理时序序列 

            1.pd.Timestamp()

            pd.Timesta编程客栈mp()Pandas定义事时间的主要函数, 支持更丰富的定义时间的构造方法

            (1) 根据datetime.datetime对象

            now = pd.Timestamp(datetime.datetime.now())
            print(now)  # 2022-03-06 19:07:07.253402
            

            (2) 根据字符串

            today = pd.Timestamp("2022-03-06")
            print(today)  # 2022-03-06 00:00:00
            

            (3) 更具指定的参数

            yesterday = pd.Timestamp(2022, 3, 5)  # 2022-03-05 00:00:00
            now = pd.Timestamp("now")  # 2022-03-06 19:13:56.507604
            
            

            (4) 根据时间戳

            pd.Timestamp(1646565103.114923, unit="s")  # unit指定单位为秒
            

            2.pd.Timedelta()

            pd.Timedelta()用于创建时间差对象,也具有与pd.Timestamp()类似的构造方法。

            (1) 根据字符串创建

            oneDay = pd.Timedelta("1 days")  # 1 days 00:00:00
            duration = pd.Timedelta("2 days 2 hours")  # 1 days 02:00:00
            

            (2) 指定参数创建

            oneDay = pd.Timedelta(days=1)编程客栈  # 1 days 00:00:00

            3.运算

            与`datetime`模块运算类似,`pandas`的`Timestamp`对象之间相减可以得到`Timedelta`对象。
            

            4.时间索引

            数据表中长常使用时间作为索引,pandas支持创建长时间序列

            ​(1) pd.to_datetime()

            pd.to_datetime()支持将时间对象和类时间字符串转化为DatetimeIndex对象。

            index = pd.to_datetime(["03/06/2022", datetime.datetime.now()])
            print(index)
            # DatetimeIndex(['2022-03-06 00:00:00', '2022-03-06 19:29:44.855267'], dtype='datetime64[ns]', freq=None)
            

            ​ (2) pd.date_range()

            ​ pd.date_range()可以给定开始时间或者结束时间,并且指定周期数据,周期频率,会自动生成在此范围的时间索引数据:

            index = pd.date_range(start="2022-01-01", periods=10)
            print(index)
            # DatetimeIndex(['2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04',
                           '2022-01-05', '2022-01-06', '2022-01-07', '2022-01-08',
                           '2022-01-09', '2022-01-10'],
                          dtype='datetime64[ns]', freq=www.cppcns.com'D')
            

            ​ 如果要跳过休息日可以使用pd.bdate_range()函数

            总结

            本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!    

            0

            上一篇:

            下一篇:

            精彩评论

            暂无评论...
            验证码 换一张
            取 消

            最新开发

            开发排行榜