当前位置:   article > 正文

pandas时间序列——时间基础、时间增量、时间周期、日期偏移处理

时间增量

Pandas基于时间应用

1 时间处理基础

Pandas提供了四种类型的生成日期时间的对象:日期时间、时间增量、时间跨度、日期偏移量

(1)日期时间(Date Times):具有时区支持的特定日期和时间。与Python标准库中的datetime.datetime类似。如2020年12月6日13点37分50秒;

(2)时间增量(Time Deltas):绝对持续时间,用于在指定时间点基础上增加指定的增量,如在某年月日的基础上增加2天、增加2个月、减少4小时等,最后产生一个新的时间点;

(3)时间跨度(Time Span):由时间点及其相关周期定义的时间跨度,如连续产生一年四个季度的时间序列

(4)日期偏移(Date Offsets):以日历计算的相对持续时间,表示时间间隔,两个时间点之间的长度,如日、周、月、季度、年。

日期时间对象

1.1 获取当前时刻的时间

获取当前时刻的时间就是获取此时此刻与时间相关的数据,除了具体的年、月、日、时、分、秒,还会单独看年、月、周、日等指标。

1.1.1 返回当前时刻的日期和时间

返回当前时刻的日期和时间在Python中借助函数 now() 实现。

from datetime import datetime

datetime.now()
  • 1
  • 2
  • 3
datetime.datetime(2020, 12, 6, 14, 9, 55, 720085)
  • 1
datetime.date(datetime.now())   # 获取当前日期
  • 1
datetime.date(2020, 12, 6)
  • 1
datetime.time(datetime.now())   # 获取当前时间
  • 1
datetime.time(14, 11, 51, 776782)
  • 1

1.1.2 分别返回当前时刻的年、月、日

返回当前时刻的年份在Python中借助函数 year 实现

datetime.now().year
  • 1
2020
  • 1

返回当前时刻的月份在Python中借助函数 month 实现

datetime.now().month
  • 1
11
  • 1

返回当前时刻的日在Excel和Python中都借助函数 day 实现

datetime.now().day
  • 1
19
  • 1

1.1.3 返回当前时刻的周数

与当前时刻的周相关的数据有两个,一个是当前时刻是一周中的周几,另一个是返回当前时刻所在的周在全年的周里面是第几周。

返回当前时刻是周几在Python中借助 weekday() 函数实现。

datetime.now().weekday()+1
  • 1
4
  • 1

Attention :Python中周几是从0开始数的,所以在后面加1

返回当前时刻所在周的周数,在Python中使用的是 isocalendar() 函数。

datetime.now().isocalendar()
  • 1
(2020, 47, 4)
  • 1

2020年的第47周的第4天

datetime.now().isocalendar()[1]
  • 1
47
  • 1

1.2 pd.Timestamp创建日期时间对象

Pandas库也提供了类似的日期时间对象 pd.Timestamp

import pandas as pd
pd.Timestamp("2020-12-06")
  • 1
  • 2
Timestamp('2020-12-06 00:00:00')
  • 1
pd.Timestamp(2020,12,6,13,19,52)
  • 1
Timestamp('2020-12-06 13:19:52')
  • 1
pd.Timestamp(year=2020,month=12,day=6,hour=14,minute=19,second=52)  # 键值对形式指定年月日时分秒
  • 1
Timestamp('2020-12-06 14:19:52')
  • 1
pd.Timestamp(2020,12,6,13,19,52).year   # 通过year、month、day属性获取年月日
  • 1
2020
  • 1

1.4 指定日期和时间的格式

借助 date() 函数将日期和时间设置成只展示日期。

datetime.now().date()
  • 1
datetime.date(2020, 11, 19)
  • 1

借助 time() 函数将日期和时间设置成只展示时间。

datetime.now().time()
  • 1
datetime.time(15, 1, 27, 19303)
  • 1

借助 strftime() 函数可以自定义时间和日期的格式,strftime() 函数是将日期和时间的格式转化为某些自定义的格式,具体的格式有以下几种

日期转换格式

datetime.now().strftime("%F")
  • 1
'2020-11-19'
  • 1
datetime.now().strftime("%F %H:%M:%S")
  • 1
'2020-11-19 15:04:31'
  • 1

2 时间序列

基于时间序列的数据记录,可以通过Series、DataFrame的索引值来记录时间点,可以同步记录对应时间点的数据元素。

2.1 指定时间点建立时间序列的Series对象

通过 pd.Timestamp 与 pd.DatetimeIndex 方法建立指定时间序列的Series对象

import pandas as pd
import numpy as np
T1 = pd.Series(np.arange(4),index=[pd.Timestamp("2020-12-6"),pd.Timestamp("2020-12-7"),pd.Timestamp("2020-12-8"),pd.Timestamp("2020-12-9")])
print(T1)   # 指定4个时间点为索引值
print("="*30)
T1.index    # pandas 自动把索引归类为日期时间索引
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
2020-12-06    0
2020-12-07    1
2020-12-08    2
2020-12-09    3
dtype: int32

==============================

DatetimeIndex(['2020-12-06', '2020-12-07', '2020-12-08', '2020-12-09'], dtype='datetime64[ns]', freq=None)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
T1 = pd.Series(np.arange(4),index=pd.DatetimeIndex(["2020-12-6","2020-12-7","2020-12-8","2020-12-9"]))
print(T1)   
print("="*30)
T1.index                                                  
  • 1
  • 2
  • 3
  • 4
2020-12-06    0
2020-12-07    1
2020-12-08    2
2020-12-09    3
dtype: int32

==============================


DatetimeIndex(['2020-12-06', '2020-12-07', '2020-12-08', '2020-12-09'], dtype='datetime64[ns]', freq=None)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2.2 时间范围函数建立时间序列

pd.date_range()函数用于产生连续的时间序列

pd.date_range(start=None,end=None,periods=None,freq=None,tz=None,normalize=False,name=None,close=None,**kwargs)

start :字符串或者类似datetime类型的值,可选,设置开始日期,必须与end参数搭配使用

end :字符串或者类似datetime类型的值,可选,设置结束日期

periods :整数,可选,设置要生成的日期周期数(也叫绝对增量),或者说在start指定开始日期的基础上,按照指定频率(freq)需要连续生成的日期数量,结合freq参数一起使用

freq :字符串或者DateOffest类型值设置需要生成的日期间隔频率,默认值为"D","D"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/230262
推荐阅读
相关标签
  

闽ICP备14008679号