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

2024-04-25 17:02:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个从1964年到2018年超过20000只股票的大数据集。(这是我从大学得到的CRSP数据)。我现在想根据Amihud(2002)应用以下过滤技术: 1包括t-1年末价格超过5美元的所有股票 2包括在t-1年末至少有200天数据的所有股票 三。这些股票在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年间的近20000只股票,所以我想以一种高效的方式来实现这一点。你知道吗


Tags: 数据importdfdateindexasstocknp

热门问题