我有一个庞大的数据集,包含1964年至2018年的20,000多只股票。 (这是我从大学获得的CRSP数据)。我现在想根据Amihud(2002)应用以下过滤技术: 1.包括所有在t-1年末价格高于$ 5的股票 2.包括在t-1年末具有至少200天数据的所有股票 3.股票在t-1年末具有有关市值的信息
由于我从未使用过如此大的数据集,因此我对此颇为棘手。在哪里可以找到有关解决此问题的想法的任何建议?非常感谢。
我已经尝试每月进行过滤。我创建了新的数据框,其中包括12月价格高于5美元的那些股票。现在我被卡住了。该图显示了在应用第一个过滤器之前和之后随时间变化的库存数量。 dataframe with filter
df['month'] = pd.DatetimeIndex(df.index).month
df2= df[(df.month == 12) & (df.prc >= 5)]
编辑:
我创建了一个看起来像原始数据框的示例数据框
import pandas as pd
import numpy as np
df1 = pd.DataFrame( { 'date': ['2010-05-12', '2010-05-13', '2010-05-13',
'2011-11-13', '2011-11-14', '2011-03-30', '2011-12-01',
'2011-12-02', '2011-12-01', '2011-12-02'],
"stock" : ["stock_1", "stock_1", "stock_2", "stock_3",
"stock_3", "stock_3", 'stock_1', 'stock_1', 'stock_2',
'stock_2'] ,
"price" : [100, 102, 300, 51, 49, 45, 101, 104, 301, 299],
'volume':[1000, 1020, np.nan, 510, 490, 450, 1010, 1040,
np.nan, 2990],
'return':[0.01, 0.03, 0.02, np.nan, 0.02, -0.04, -0.08,
-0.01, np.nan, -0.01] } )
df1 = df1.set_index(pd.DatetimeIndex(df1['date']))
pivot_df = df1.pivot_table(index=[df1.index, 'stock'], values=['price',
'vol', 'ret'])
所得数据框基本上是面板数据。我想检查每只股票是否每天都有退货和成交量数据(不是NaN)。然后,我要删除在给定年份内具有少于200天的收益和交易量数据的所有股票。由于原始数据框包含1964年至2018年的近20,000只股票,因此我想以一种有效的方式做到这一点。