как изменить код цикла на питонический путь - PullRequest
0 голосов
/ 04 июля 2019

У меня один код, он очень медленный, пожалуйста, есть ли способ изменить его на быстрый?

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)

Ответы [ 2 ]

1 голос
/ 04 июля 2019

То, что вы рассчитали, называется 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:]
0 голосов
/ 04 июля 2019
for value in x1['values']:
    y, previous = pd.Dataframe([a * value + previous]), (1-a)*y
    dff2=dff2.append(y)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...