Python 如何更有效地计算轧制比 我的数据长度超过3000 下面是制作20天价值(股票市场成交量比率)的代码 花了2分钟多

Python 如何更有效地计算轧制比 我的数据长度超过3000 下面是制作20天价值(股票市场成交量比率)的代码 花了2分钟多,python,numpy,pandas,dataframe,iteration,Python,Numpy,Pandas,Dataframe,Iteration,有没有什么好方法可以减少运行时间 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'] = n

有没有什么好方法可以减少运行时间

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
将熊猫作为pd导入
将numpy作为np导入
从pandas.io.data导入数据读取器
将matplotlib.pylab作为plt导入
data=DataReader('047040.KS','yahoo',start='2010')
数据['vr']=0
数据['体积比]]=0
数据['acend']=0
数据['vr']=np.符号(数据['Close']-数据['Open'])
数据['vr']=np.其中(数据['vr']==0,0.5,数据['vr'])

data['vr']=np.where(data['vr']考虑使用条件行选择和
rolling.sum()

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


请考虑编辑标题:让它对你的问题更具体。你能添加吗?
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
data['new_col'] = data['acend'].rolling(window=20).sum().div(data['Volume'].rolling(window=20).sum().subtract(data['acend'].rolling(window=20).sum()).mul(100).fillna(0)