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