Python 3.x 如何将for循环代码更改为pythonic方式
我有一个代码它非常慢,请无论如何有没有改变它的速度快Python 3.x 如何将for循环代码更改为pythonic方式,python-3.x,pandas,numpy,Python 3.x,Pandas,Numpy,我有一个代码它非常慢,请无论如何有没有改变它的速度快 df=pd.DataFrame({'value':[1,2,4,5,67,8,8,89,9,98,7,87,87,87,89,89,9,8,9,9,909,9,8,9,8,9,89,8,8,9,89]}) a=0.0119 x1=df['value'] Y=x1.iloc[0:10] Y_mean=np.mean(Y) previous=Y_mean for i in range(len(x1)): y=a*x1.values[
df=pd.DataFrame({'value':[1,2,4,5,67,8,8,89,9,98,7,87,87,87,89,89,9,8,9,9,909,9,8,9,8,9,89,8,8,9,89]})
a=0.0119
x1=df['value']
Y=x1.iloc[0:10]
Y_mean=np.mean(Y)
previous=Y_mean
for i in range(len(x1)):
y=a*x1.values[i]+previous
previous=(1-a)*y
y=pd.DataFrame([y])
dff2=dff2.append(y)
您计算的在pandas中称为
ewm mean
,因此您可以使用ewm().mean()
方法。
以下是获得与代码相同结果的代码:
df=pd.DataFrame({'value':[1,2,4,5,67,8,8,89,9,98,7,87,87,87,89,89,9,8,9,9,909,9,8,9,8,9,89,8,8,9,89]})
a=0.0119
Y=x1.iloc[0:10]
Y_mean=np.mean(Y)
s = df["value"]
pd.concat([pd.Series([Y_mean/(1-a)]), s]).ewm(alpha=a, adjust=False).mean().iloc[1:]
请出示全部code@WeNYoBen它的完整代码伙伴:)如果它是完整代码,我可以复制并运行它。如果我尝试将
x1=df['value']
作为第一行运行,您预计会发生什么?请参阅有关创建的SO帮助页面。然后在哪里a@WeNYoBen我改了问题,请查收now@L.F.,未来的读者是次要用户,而不是主要用户。OP问题是当前和未来的背景。关于解释,我看不出这个答案和公认的答案有多大区别。
df=pd.DataFrame({'value':[1,2,4,5,67,8,8,89,9,98,7,87,87,87,89,89,9,8,9,9,909,9,8,9,8,9,89,8,8,9,89]})
a=0.0119
Y=x1.iloc[0:10]
Y_mean=np.mean(Y)
s = df["value"]
pd.concat([pd.Series([Y_mean/(1-a)]), s]).ewm(alpha=a, adjust=False).mean().iloc[1:]