我有一个所有公司股票价格的电子表格,我想更有效地计算移动平均线。目前我有一些代码可以工作,但需要相当长的时间来运行。我想知道有什么替代方法来做同样的事情,但更有效,或在某种程度上利用Pandas的优势。
下面是我尝试在代码中完成的工作流:
1.首先,我希望获得每个公司的20天滚动/移动平均值,并将其作为列添加到 Dataframe (sma_20
)中。
1.从那里我想计算股票价格超过这20天平均值的天数。
1.最后,我想把这个数字转换成一个百分比,作为参考,一个交易年有252天,我想看看在这252天中,有多少天股票的交易高于它的移动平均线。
prices_df['sma_20'] = prices_df.groupby('ticker').rolling(20)['closeadj'].mean().reset_index(0,drop=True)
prices_df['above_sma_20'] = np.where(prices_df.closeadj > prices_df.sma_20, 1, 0)
prices_df['above_sma_20_count'] = prices_df.groupby('ticker').rolling(252)['above_sma_20'].sum().reset_index(0,drop=True)
prices_df['above_sma_20_pct'] = prices_df['above_sma_20_count'] / 252
1条答案
按热度按时间jhiyze9q1#
我会将数据重新排列成n(日期)x m(股票代码)数组,并使用
numpy
处理滚动平均值,给定一个
df
,其中有100家公司和253天来自雅虎财经,第一个
将概率和对应的公司分配给一个新的 Dataframe ,