微信公众号:「Python读财」
如有问题或建议,请公众号留言
进行金融数据分析或量化研究时,总避免不了时间序列数据的处理,时间序列是指在一定时间内按时间顺序测量的某个变量的取值序列。常见的时间序列数据有一天内随着时间变化的温度序列,又或者交易时间内不断波动的股票价格序列。Pandas也因其强大的时序处理能力而被广泛应用于金融数据分析,这篇文章为大家介绍一下Pandas中的时间序列处理,所使用的数据是上证指数2019年的行情数据。
时间相关的数据类型
Pandas时序处理中最常见的两种数据类型为datetime
和timedelta
。一个datetime
可以如下图所示:
datetime
顾名思义就是既有日期date
也有时间time
,表示一个具体的时间点(时间戳)。timedelta
则表示两个时间点之间的差,比如2020-01-01
和2020-01-02
之间的timedelta
即为一天,相信并不难理解。
将时间列转换为时间格式
大多数时候,我们是从csv
文件中导入数据,此时Dataframe
中对应的时间列是字符串的形式,如下:
In [5]: data.trade_date.head()
Out[5]:
0 20190102
1 20190103
2 20190104
3 20190107
4 20190108
Name: trade_date, dtype: object
运用pd.to_datetime()
,可以将对应的列转换为Pandas中的datetime64
类型,便于后期的处理
In [11]: data["trade_date"] = pd.to_datetime(data.trade_date)
In [12]: data.trade_date.head()
Out[12]:
0 2019-01-02
1 2019-01-03
2 2019-01-04
3 2019-01-07
4 2019-01-08
Name: trade_date, dtype: datetime64[ns]
时间序列的索引
时间序列中索引和Pandas普通的索引类似,大多时候调用.loc[index,columns]
进行相应的索引,直接上代码看看
In [20]: data1 = data.set_index("trade_date")
# 2019年6月的数据
In [21]