【Python数据分析】时间序列切片与索引

1.时间序列的索引与切片

1.1 索引

# Author:Logan
from datetime import datetime
import pandas as pd
import numpy as np

rng = pd.date_range('2017/1','2017/3')
ts = pd.Series(np.random.rand(len(rng)), index = rng)
print(ts.head())

print(ts[0])
print(ts[:2])
print('-' * 50)
# 基本下标位置索引

print(ts['2017/1/2'])
print(ts['20170103'])
print(ts['1/10/2017'])
print(ts[datetime(2017,1,20)])
print('-' * 50)
# 时间序列标签索引,支持各种时间字符串,以及datetime.datetime

# 时间序列由于按照时间先后排序,故不用考虑顺序问题
# 索引方法同样适用于Dataframe

1.2 切片

# 切片
import pandas as pd
import numpy as np

rng = pd.date_range('2017/1','2017/3',freq = '12H')
ts = pd.Series(np.random.rand(len(rng)), index = rng)

print(ts['2017/1/5':'2017/1/10'])
print('-----')
# 和Series按照index索引原理一样,也是末端包含

print(ts['2017/2'].head())
# 传入月,直接得到一个切片

2.重复索引的时间序列

# Author:Logan
# 重复索引的时间序列
import pandas as pd
import numpy as np

dates = pd.DatetimeIndex(['1/1/2015','1/2/2015','1/3/2015','1/4/2015','1/1/2015','1/2/2015'])
ts = pd.Series(np.random.rand(6), index = dates)
print(ts)
print('-' * 50)
print(ts.is_unique)
print('*' * 50)
print(ts.index.is_unique)
print('-' * 50)
# index有重复,is_unique检查 → values唯一,index不唯一

print(ts['20150101'],type(ts['20150101']))
print(ts['20150104'],type(ts['20150104']))
print('*' * 50)
# index有重复的将返回多个值

print(ts.groupby(level = 0).mean())
# 通过groupby做分组,重复的值这里用平均值处理
posted @ 2020-02-08 17:20  OLIVER_QIN  阅读(1768)  评论(0编辑  收藏  举报