pandas 计算库存数据中体积的滚动平均值

vdzxcuhz  于 2023-06-28  发布在  其他
关注(0)|答案(1)|浏览(112)

我试图使扫描仪类型,我想计算过去21天的平均值vol * 3这我想与今天的vol比较,如果今天的vol是大于21天的3 times平均值,我应该得到一个是在列VolBrkOut或els我应该得到一个否,当我运行我的代码,我得到只有没有为每个日期,当我在ecxcel运行公式,我得到我的权利ans(=IF(I2>(平均(I3:I24)*3),“是”,“否”)excel公式
我的py代码是

def add_vol_breakout_column(self, df):
  
        average_volume = df['VOLUME'].rolling(window=21).mean()
        print(average_volume)
        volume_breakout = df['VOLUME'] > (average_volume * 3)
        df['VolBrkOut'] = np.where(volume_breakout, 'Yes', 'No')
        print(f"Updated DataFrame:\n{df}")
        return df

当我打印它时,得到这个1451 NaN名称:体积,数据类型:float 64更新的DataFrame:SYMBOL DATE PCLOSE OPEN... DELIV_QTY DELIV_PER VWAP VolBrkOut 1451 SATINDLTD 12-01-2023 69.8 69.95 ... 519070 28.78 74.5否
average_volume我只得到nan,因此我猜我的输出是没有所有日期请提出一些建议,谢谢
好了,我的数据就像我下载的EOD数据的股票市场,其中所有的股票,我的其余代码经过,并使一个新的Excel文件与所有的细节,我添加了一些计算列在那里。喜欢vwap avg vol和所有
因此,我得到了一个saperate文件,为每只股票与其细节和不同的计算。这样我就可以做我的扫描仪
试过这个

def add_vol_breakout_column(self, df):
  
        average_volume = df['VOLUME'].rolling(window=21).mean()
        print(average_volume)
        volume_breakout = df['VOLUME'] > (average_volume * 3)
        df['VolBrkOut'] = np.where(volume_breakout, 'Yes', 'No')
        print(f"Updated DataFrame:\n{df}")
        return df

得到了这个1497 NaN Name: VOLUME, dtype: float64 Updated DataFrame: SYMBOL DATE PCLOSE OPEN ... DELIV_QTY DELIV_PER VWAP VolBrkOut 1497 SATINDLTD 05-06-2023 72.9 73.45 ... 223886 65.52 72.0 No

htrmnn0y

htrmnn0y1#

看起来问题的根源是窗口函数。前21个值将是NaN的(不是数字),因为它们后面没有21个值。为了解决这个问题,我们可以使用'.fillna(x)',其中x是一个任意整数。我写了一些示例代码,在其中生成了假数据,然后执行了以下相同的操作:

import numpy as np
import random
import pandas as pd

df = pd.DataFrame({
    "VOLUME": [random.random() for i in range(300)],
    "PRICE": [random.random() for i in range(300)]
})

df['AVG_VOLUME'] = df['VOLUME'].rolling(21).mean()

df['AVG_VOLUME'] = df['AVG_VOLUME'].fillna(0)

df['VolBrkOut'] = df['VOLUME'] > df['AVG_VOLUME'] * 3

我会使用true/false而不是Yes/No,因为它具有相同的含义/可读性,但在代码中功能更强大。如果您稍后需要回测并检查是否有中断,那么检查布尔值比检查字符串相等要简单和快速得多

相关问题