呆鸟的Python数据分析python 与数据分析

pandas学习总结------时序分析part1

2019-08-27  本文已影响0人  九日照林

时间序列

日期和时间类型工具

python标准库处理时间的模块:time, calendardatetime

pandas本身自带处理时间的工具:pd.to_datetime

创建时间类型

import numpy as numpy
import pandas as pd
numpy.random.seed(12345)
import matplotlib.pyplot as plt
plt.rc('figure', figsize=(10, 6))
PREVIOUS_MAX_ROWS = pd.options.display.max_rows
pd.options.display.max_rows = 20
numpy.set_printoptions(precision=4, suppress=True)  
from datetime import datetime
dt=datetime(2011,1,1)
dt

datetime模块对应传入年月日参数,产生python时间格式的对象。时间对象之间可以方便做相差的时间间隔计算,也可以调用各种时间属性day, yearmonth等。

日期间的差值

时间戳之间的差值是delta对象,delta对象也可以用timedelta方法创建并用于计算。

from datetime import timedelta
delta=timedelta(12)
dt+delta

默认传入的timedelta里面的参数是天数

now=datetime.now()
now-dt

字符串和datetime的相互转换

字符串转换为datatime用strptime

这里的p代表parsing的意思

value = '2011-01-03'
datetime.strptime(value, '%Y-%m-%d')

我们可以指定解析的样式。

当然,很多时候我们如果都要写好解析的样式%Y-%m-%d那样是比较麻烦的,在这种情况下我们可以用datautil.parser.parse方法去自动解析,支持大部分可以识别的日期格式。

from dateutil.parser import parse

parse('20111101')

索引、选择、子集

如果以日期作为序列的话,可以传入一个可以被解释为时间的索引进行选择和切片。

longer_ts = pd.Series(numpy.random.randn(1000),
                      index=pd.date_range('1/1/2000', periods=1000))
longer_ts

以下三种方式切片都是获得相同的结果。

longer_ts['1/10/2001']
longer_ts['20010110']
longer_ts['2001-01-10']

我们也可以把频率获取到月份。

longer_ts['2001-01']

索引既可以传入时间字符串,也可以传入datetime对象

longer_ts[datetime(2001, 1,1):]

日期范围、频率和移位

pandas.date_range可以生成指定的长度的DatetimeIndex

pd.date_range('2018-01-01', '2018-05-01')

我们还可以指定periodsfreq参数指定周期和频率

rng = pd.date_range('2000-01-01', periods=3, freq='M')
ts = pd.Series(numpy.random.randn(3), index=rng)
ts

除了start参数,我们还可以传入end参数。
如果是end参数的话就是往前追溯。

rng = pd.date_range(end='2000-01-01', periods=3, freq='M')
ts = pd.Series(numpy.random.randn(3), index=rng)
ts
上一篇下一篇

猜你喜欢

热点阅读