32. Pandas的时间序列数据-datetime

时间序列数据在金融、经济、神经科学、物理学里都是一种重要的结构化的数据表现形式,以时间为基本组织领域内的观测值并进行相应的分析,即时间序列分析的主要目的是根据已有的历史数据对未来进行预测。经济数据中大多数以时间序列的形式给出。根据观察时间的不同,时间序列中的时间可以是年份、季度、月份或其他任何时间形式。pandas 最基本的时间序列类型就是以时间戳(TimeStamp)为 index 元素的 Series 类型。 Python和Pandas里提供大量的内建工具、模块可以用来创建时间序列类型的数据。

  • datetime模块,Python的datetime标准模块下的1).date子类可以创建日期时间序列的数据、2).time子类可创建小时分时间数据,而3).子类datetime则可以描述日期小时分数据。
import datetime
cur = datetime.datetime(2018,12,30, 15,30,59)
print cur,type(cur)
d = datetime.date(2018,12,30)
print d
t = datetime.datetime(2018,12,30).now()
print t

程序的执行结果:

2018-12-30 15:30:59 <type 'datetime.datetime'>
2018-12-30
2018-12-16 15:35:42.757826

4).可以使用datetime的timedelta模块给出时间间隔(差)。

import datetime
cur0 = datetime.datetime(2018,12,30, 15,30,59)
print cur0
cur1 = cur0 + datetime.timedelta(days = 1)
print cur1
cur2 = cur0 + datetime.timedelta(minutes = 10)
print cur2
cur3 = cur0 + datetime.timedelta(minutes = 29,seconds = 1)
print cur3

程序执行结果:

2018-12-30 15:30:59 #cur0
2018-12-31 15:30:59 #cur1
2018-12-30 15:40:59 #cur2
2018-12-30 16:00:00 #cur3
  • 用datetime数据创建time series时间序列数据。意思就是用datetime创建的时间作为index。
from datetime import datetime, timedelta
import numpy as np
import pandas as pd
b = datetime(2018,12,16, 17,30,55)
vi = np.random.randn(60)
ind = []
for x in range(60):
    bi = b + timedelta(minutes = x)
    ind.append(bi)
ts = pd.Series(vi, index = ind)
print ts[:5]

程序执行结果:

2018-12-16 17:30:55   -1.469098
2018-12-16 17:31:55   -0.583046
2018-12-16 17:32:55   -0.775167
2018-12-16 17:33:55   -0.740570
2018-12-16 17:34:55   -0.287118
dtype: float64

结果的第一列是时间,间隔1分钟,第2列是数据值。语句ts = pd.Series(vi, index = ind)可以参考本站的pandas创建Series一章

本章实现了用datetime模块创建了时间序列。