时间序列学习笔记1

时间序列数据是一种重要的结构化数据形式。一般有几种:

  • 时间戳:timestamp,特定的时刻
  • 固定时期:period,如2010年全年
  • 时间间隔:interval,有起始和结束时间戳表示;
  • 实验或过程时间,每个时间点都是相对于特定时间的一个变量。

pandas提供一组标准时间序列处理工具和数据算法。

1. 日期和时间数据类型及工具

datetime模块:

In [1]: from datetime import datetime

In [2]: now = datetime.now()

In [3]: now
Out[3]: datetime.datetime(2017, 2, 17, 21, 11, 17, 866138)

In [4]: now.year,now.month,now.day
Out[4]: (2017, 2, 17)

时间差:timedelta

In [5]: delta = datetime(2011,1,7) - datetime(2008,6,24,7,14)

In [6]: delta
Out[6]: datetime.timedelta(926, 60360)

In [7]: delta.days
Out[7]: 926

In [8]: delta.seconds
Out[8]: 60360

In [9]: from datetime import timedelta

In [10]: start = datetime(2008,1,6)

In [11]: start + timedelta(12)  # 传入days
Out[11]: datetime.datetime(2008, 1, 18, 0, 0)

In [12]: start - 2*  timedelta(12)
Out[12]: datetime.datetime(2007, 12, 13, 0, 0)

datetime模块数据类型:

1.1 字符串和datetime的相互转换

In [13]: stamp = datetime(2011,1,3)

In [14]: str(stamp)  # 转换为字符串
Out[14]: '2011-01-03 00:00:00'

In [15]: stamp.strftime('%Y-%m-%d')  # 格式化为字符串
Out[15]: '2011-01-03'

# 可以转换我们日常用的格式

In [20]: from dateutil.parser import parse

In [21]: parse('2017-01-03')
Out[21]: datetime.datetime(2017, 1, 3, 0, 0)

In [22]: parse('Jan 31, 2017 10:23 PM')
Out[22]: datetime.datetime(2017, 1, 31, 22, 23)

In [23]: parse('02/11/2017')
Out[23]: datetime.datetime(2017, 2, 11, 0, 0)
# pandas模块的时间转换模块

In [25]: datestrs = ['7/6/2014','2/4/2016']

In [26]: import pandas as pd

In [27]: pd.to_datetime(datestrs)
Out[27]: DatetimeIndex(['2014-07-06', '2016-02-04'], dtype='datetime64[ns]', freq=None)

In [28]: idx = pd.to_datetime(datestrs + [None])

In [29]: idx
Out[29]: DatetimeIndex(['2014-07-06', '2016-02-04', 'NaT'], dtype='datetime64[ns]', freq=None)

In [30]: idx[2]
Out[30]: NaT

In [31]: pd.isnull(idx)
Out[31]: array([False, False,  True], dtype=bool)

待续。。。

posted @ 2017-02-17 21:41  felo  阅读(293)  评论(0编辑  收藏  举报