python时间序列数据的选取

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43342981/article/details/90142582

因为TimeSeries是Series的一个子类,所以在数据选取方面与Series是一样的。
创建一个时间序列ts用来举例:

from pandas import Series
from numpy import random
from datetime import datetime
import numpy as np
import pandas as pd
dates = [datetime(2011,1,2),datetime(2011,1,5),datetime(2011,1,7),datetime(2011,1,8),datetime(2011,1,9),datetime(2011,1,10)]
ts = Series(np.random.randn(6),index = dates)
print(ts)

1.通过索引选取,可以给索引创建一个变量,也可以直接用索引取

In:stamp = ts.index[2]
	print(ts[stamp])
	print(ts[ts.index[2]])
	print(ts[2])

2.传入一个可以被解释为日期的字符串

In:print(ts['20110102'])
	print(ts['1/2/2011'])
	print(ts['2011-01-02'])

如果我们用的是一段较长的时间序列,可能我们需要取某一段时间的数据,这就需要对时间序列选取某段时间的数据切片。
先创建一个较长的时间序列longer_tp用来举例:

In:longer_tp = Series(np.random.randn(1000),index = pd.date_range('1/1/2011',periods=1000))
	print(longer_tp)

1.选取“年”或者“年月”的数据切片

In:print(longer_tp['2011'])
	print(longer_tp['2011-05'])

2.选取某个日期之后的数据切片

In:print(longer_tp[datetime(2011,1,2):])

3.选取某段时间的数据切片,也可以用不存在于该时间序列的时间戳对其进行切片。输入的日期可以为datetime、timestamp或字符串日期。

In:print(longer_tp[datetime(2011,1,2):datetime(2011,2,2)])
	print(longer_tp[datetime(2010,12,1):datetime(2011,1,10)])
	print(longer_tp['2011-01-01 00:00:00':'2011-02-01 00:00:00'])
	print(longer_tp['20110101':'20110201'])

4.还有一种是用truncate方法

In:print(longer_tp.truncate(after = '1/9/2011'))

在某些应用场景中,可能会存在一个时间点有多个观测数据的情况,这时我们用时间点选取数据时,该时间点有几个观测数据,就会输出几个观测数据。
创建一个重复时间序列dup_ts用来举例:

In:dates = pd.DatetimeIndex(['1/1/2011','1/2/2011','1/2/2011','1/2/2011','1/3/2011'])
	dup_ts = Series(np.random.randn(5),index = dates)
 print(dup_ts)

可以用过检查索引的is_unique属性检查时间序列是否唯一,若唯一则输出True,不唯一输出False。

In:print(dup_ts.index.is_unique)

1.选取不重复的时间点

In:print(dup_ts[datetime(2011,1,3)])

2.选取重复的时间点

In:print(dup_ts[datetime(2011,1,2)])

猜你喜欢

转载自blog.csdn.net/weixin_43342981/article/details/90142582