程序员

python对时间序列的处理

2019-01-30  本文已影响10人  何同尘

简单介绍python处理时间。

基础python处理时间与日期

python基本的处理时间对象是datetime模块和dateutil模块。

from datetime import datetime
datetime(year=2015, month=7, day=4)

直接解析字符串

from dateutil import parser
date = parser.parse("4th of July, 2015")
date

numpy 的时间数组类型 datetime64

import numpy as np
date = np.array('2015-07-04', dtype=np.datetime64)
date
np.datetime64('2015-07-04')

快速创建数组:

date + np.arange(12)

np可以解析各种时间字符串格式,也可以指定解析类容。

Code Meaning Time span (relative) Time span (absolute)
Y Year ± 9.2e18 years [9.2e18 BC, 9.2e18 AD]
M Month ± 7.6e17 years [7.6e17 BC, 7.6e17 AD]
W Week ± 1.7e17 years [1.7e17 BC, 1.7e17 AD]
D Day ± 2.5e16 years [2.5e16 BC, 2.5e16 AD]
h Hour ± 1.0e15 years [1.0e15 BC, 1.0e15 AD]
m Minute ± 1.7e13 years [1.7e13 BC, 1.7e13 AD]
s Second ± 2.9e12 years [ 2.9e9 BC, 2.9e9 AD]
ms Millisecond ± 2.9e9 years [ 2.9e6 BC, 2.9e6 AD]
us Microsecond ± 2.9e6 years [290301 BC, 294241 AD]
ns Nanosecond ± 292 years [ 1678 AD, 2262 AD]
ps Picosecond ± 106 days [ 1969 AD, 1970 AD]
fs Femtosecond ± 2.6 hours [ 1969 AD, 1970 AD]
as Attosecond ± 9.2 seconds [ 1969 AD, 1970 AD]

np.datetime64('2015-07-04 12:59:59.50', 'ns')

pandas处理时间两全其美的办法

pandas中提供了timestamp对象,本质上是将基础的datetime和dateutil实现了numpy.datetime64的接口。

import pandas as pd
date = pd.to_datetime("4th of July, 2015")
date

解析到天
date + pd.to_timedelta(np.arange(12), 'D')

pandas中的时间索引

用时间来做索引是处理数据中常见的操作。

index = pd.DatetimeIndex(['2014-07-04', '2014-08-04',
'2015-07-04', '2015-08-04'])
data = pd.Series([0, 1, 2, 3], index=index)

python中的时间结构

  1. 时间戳:
    dates = pd.to_datetime([datetime(2015, 7, 3), '4th of July, 2015',
    '2015-Jul-6', '07-07-2015', '20150708'])
    dates

  2. 时间段 :
    dates.to_period('D')

  3. 时间增量:
    dates - dates[0]

pd.date_range()产生时间数组

pd.date_range('2015-07-03', '2015-07-10')
pd.period_range('2015-07', periods=8, freq='M')
pd.timedelta_range(0, periods=10, freq='H')

重采样 移动 窗口滚动

from pandas_datareader import data
goog = data.DataReader('GOOG', start='2004', end='2016',
data_source='google')
goog.head()

时间重采样:
reshape() asfreq()

移动预测:
shift() tshift()``=time-shift
shift用来移动日期。tshift()移动索引。

滚动窗口:
滚动窗口滚动统计是ppython实现的第三种特定于时间序列的操作。这可以通过Series和DataFrame对象的rolling()属性来实现,该属性返回一个与groupby操作类似的视图(参见聚合和分组)。默认情况下,这个滚动视图提供了许多聚合操作。随着时间变化变化的统计指标。
rolling()

可以获得一些聚合操作的对象
rolling.mean()
rolling.std()

上一篇 下一篇

猜你喜欢

热点阅读