时间序列(Time series)

Python的日期和时间处理

1. python的日期和时间处理模块

  1. datetime:以毫秒形式储存日期和时间
  2. datime.timedelta,表示两个datetime对象的时间差
  3. datetime模块中包含的数据类型
    1)date :年、月、日
    2)time :储存时、分、秒、毫秒
    3)datetime :储存日期和时间
    timedelta :表示两个datetime值之间的差(日、秒、毫秒)

datetime模块

from datetime import datetime
now= datetime.now()
print(now)

print('年:{},月:{},日:{}'.format(now.year,now.month,now.day))

diff =datetime(2019,1,22)-datetime(2012,6,25)
print(type(diff))
print(diff)
print('恋爱经历了多少{}天,{}秒。'.format(diff.days,diff.seconds))

string 和datetime转化

  1. datetime->str

#方法1 str()

dt_obj = datetime(2017, 3, 4)
str_obj = str(dt_obj)   # 强行转换
print(type(str_obj))
print(str_obj)

方法2 datetime.strftime()

str_obj2 = dt_obj.strftime('%d-%m-%Y')  #f---format 格式化过程
print(str_obj2)

str->datetime

# strptime
dt_str = '2017-02-18'
dt_obj2 = datetime.strptime(dt_str, '%Y-%m-%d')   #p---parse 解析操作,需要提供模式字符串"-""
print(type(dt_obj2))
print(dt_obj2)

# dateutil.parser.parse
from dateutil.parser import parse
dt_str2 = '2017/02/18'
dt_obj3 = parse(dt_str2)
print(type(dt_obj3))
print(dt_obj3)

pandas操作

  • pd.to_datetime()
# 处理缺失值
s_obj3 = pd.Series(['2017/02/18', '2017/02/19', '2017-02-25', '2017-02-26'] + [None], 
                   name='course_time')
print(s_obj3)

s_obj4 = pd.to_datetime(s_obj3)
print(s_obj4) # NAT-> Not a Time

访问

1.索引(索引位置、索引值、被解析的日期字符串)
2.切片操作

# 按“年份”、“月份”索引
print(time_s['2017-2'])

# 切片操作
print(time_s['2017-2-26':])

过滤 truncate

提取指定结点前、后日期数据

time_s.truncate(before='2017-2-25')
time_s.truncate(after='2017-2-25')

频数与偏移量

print(pd.date_range('2017/02/18', '2017/03/18', freq='2D'))
# 偏移量通过加法连接
sum_offset = pd.tseries.offsets.Week(2) + pd.tseries.offsets.Hour(12)
print(sum_offset)

print(pd.date_range('2017/02/18', '2017/03/18', freq=sum_offset))

移动数据

ts = pd.Series(np.random.randn(5), index=pd.date_range('20170218', periods=5, freq='W-SAT'))
print(ts)
print(ts.shift(1))
print(ts.shift(-1))

猜你喜欢

转载自blog.csdn.net/qq_43283527/article/details/86592965