1、目的:通过python处理面板数据
获得几种面板数据(n0-n5),索引有两个,分别是时间和股票名称。时间可能无法完全匹配,股票也可能不一样。
最终要获得的数据:每只股票每个时间段的特征值,该数据用于机器学习。
2、处理思路:
构建一个拥有所有股票代码和日期的DataFrame(df),之后将每个面板数据中能够与df时间索引和代码索引相匹配的数据插入到df的特征列中。
过程
(1)构建一个df用于获得所有整理过的数据。
(2)将面板数据n0-n5构建为多维度的数据集,其索引分别是时间和股票代码。
(3)对时间 t 和代码 c 进行遍历,获得索引(c,t)
如果n0-n5数据集中没有该时间该股票的数据,则构建一个空Series,为df中时间t股票c增加Series。
如果n0-n5数据集中有(c,t)的数据,那么为索引为(c,t)的df添加该数据。
3、重点:
(1)多维数据以及获取数据
n5.groupby(['Stkcd','Reptdt'])['Negshrcr1'].mean()
将二维数据n5升为三维数据,索引分别是股票名和时间
n5.loc[(c,d),['Negshrcr1']]
根据索引以及列名获得数据,列名可以为多个,例如:
df1.loc[(c,d),['A0','A1','A2']]
这意味着能够获得三个列的数据
(2)为多维数据赋值
df1.loc[(c,d),['A1','A2','A3,'B1']] = n0.loc[(c,d),['A1','A2','A3,'B1']]
对df1的多个列赋值
当df1没有 B1 列时,该语句能够为df1创建一个B1列,并为B1列赋值