Pandas
- Pandas 支持时间序列的类型的数据。时间序列类型是一种Series,时间序列的index属性取值为时间戳
创建时间序列
- Timestamp(),传入数据类型可以是str类型,也可以是datetime类型
- to_datetime() 将Series的index属性转换为datetime转换为DATe time
from datetime import datetime
import pandas as pd
# 两种方法
date= datetime(2018,1,1)
date = pd.Timestamp(date)
date1 = pd.Timestamp('2018-1-1')
print(date)
print(date1)
ts = pd.Series(1,index=[date])
print(ts)
2018-01-01 00:00:00
2018-01-01 00:00:00
2018-01-01 1
dtype: int64
#to_datetime() 将Series的index属性转换成DatetimeIndex
dates = ['2018-01-01','2018-01-02','2018-01-03']
ts = pd.Series([1,2,3],pd.to_datetime(dates))
ts
2018-01-01 1
2018-01-02 2
2018-01-03 3
dtype: int64
ts.index
DatetimeIndex([‘2018-01-01’, ‘2018-01-02’, ‘2018-01-03’], dtype=‘datetime64[ns]’, freq=None)
# slice data
print(ts['20180101'])
print(ts['2018'])
print(ts['2018-01'])
print(ts.truncate(after='20180102'))
1
2018-01-01 1
2018-01-02 2
2018-01-03 3
dtype: int64
2018-01-01 1
2018-01-02 2
2018-01-03 3
dtype: int64
2018-01-01 1
2018-01-02 2
dtype: int64
# shift
ts.shift(1)
print('Here is an example:')
price = pd.Series([20,19,22,25,24],
index = pd.to_datetime(['2018-01-01','2018-01-02','2018-01-03','2018-01-04','2018-01-05']))
(price-price.shift(1))/price
Here is an example:
2018-01-01 NaN
2018-01-02 -0.052632
2018-01-03 0.136364
2018-01-04 0.120000
2018-01-05 -0.041667
dtype: float64
# resample()
# high frequency -->low frequency
rts = ts.resample('MS').first() #MS 每月的第一天,M每月的最后一天
rts
2018-01-01 1
Freq: MS, dtype: int64