如何更有效地计算滚动比

2024-09-30 01:25:13 发布

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

  1. 我的数据长度超过3000。在
  2. 以下是计算20天价值的代码(股票市场的成交量)
  3. 花了2分钟多
  4. 有什么好方法可以减少运行时间吗。在

    import pandas as pd
    import numpy as np
    from pandas.io.data import DataReader
    import matplotlib.pylab as plt
    data = DataReader('047040.KS','yahoo',start='2010')
      data['vr']=0
      data['Volume Ratio']=0
      data['acend']=0
     data['vr'] = np.sign(data['Close']-data['Open']) 
     data['vr'] = np.where(data['vr']==0,0.5,data['vr']) 
     data['vr'] = np.where(data['vr']<0,0,data['vr']) 
     data['acend'] = np.multiply(data['Volume'],data['vr']) 
    
     for i in range(len(data['Open'])):
         if i<19:
             data['Volume Ratio'][i]=0
         else:
             data['Volume Ratio'][i] = ((sum(data['acend'][i-19:i]))/((sum(data['Volume'][i-19:i])-sum(data['acend'][i-19:i]))))*100
    

Tags: 数据importpandasdataasnpopenwhere
1条回答
网友
1楼 · 发布于 2024-09-30 01:25:13

考虑使用条件行选择和rolling.sum()

data.loc[data.index[:20], 'Volume Ratio'] = 0
data.loc[data.index[20:], 'Volume Ratio'] = (data.loc[:20:, 'acend'].rolling(window=20).sum() / (data.loc[:20:, 'Volume'].rolling(window=20).sum() - data.loc[:20:, 'acend'].rolling(window=20).sum()) * 100

或者,简化-.rolling.sum()将为前20个值创建np.nan,所以只需使用.fillna(0)

^{pr2}$

相关问题 更多 >

    热门问题