如何在大型数据集中过滤股票-Python

时间:2019-05-13 18:51:21

标签: python large-data finance stock

我有一个庞大的数据集,包含1964年至2018年的20,000多只股票。 (这是我从大学获得的CRSP数据)。我现在想根据Amihud(2002)应用以下过滤技术: 1.包括所有在t-1年末价格高于$ 5的股票 2.包括在t-1年末具有至少200天数据的所有股票 3.股票在t-1年末具有有关市值的信息

由于我从未使用过如此大的数据集,因此我对此颇为棘手。在哪里可以找到有关解决此问题的想法的任何建议?非常感谢。

我已经尝试每月进行过滤。我创建了新的数据框,其中包括12月价格高于5美元的那些股票。现在我被卡住了。该图显示了在应用第一个过滤器之前和之后随时间变化的库存数量。 dataframe with filter

#of stocks over time

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只股票,因此我想以一种有效的方式做到这一点。

0 个答案:

没有答案