Funções de rolagem do Python Pandas
Não sei se entendi o parâmetromin_periods
em pandasrolling
funções: por que ele precisa ser menor que owindow
parâmetro? Gostaria de calcular (por exemplo) o rolamento máximo menos rolamento mínimo com uma janela de dez valores, MAS eu quero esperar talvez 20 valores antes de iniciar os cálculos:
In[1]: import pandas as pd
In[2]: import numpy as np
In[3]: df = pd.DataFrame(columns=['A','B'], data=np.random.randint(low=0,high=100,size=(100,2)))
In[4]: roll = df['A'].rolling(window=10, min_periods=20)
In[5]: df['C'] = roll.max() - roll.min()
In[6]: roll
Out[6]: Rolling [window=10,min_periods=20,center=False,axis=0]
In[7]: df['C'] = roll.max()-roll.min()
Estou tendo o erro a seguir:
ValueError: Invalid min_periods size 20 greater than window 10
Eu pensei quemin_periods
estava lá para dizer quantos valores a função teve que esperar antes de iniciar os cálculos. A documentação diz:
min_periods: int, padrão Nenhum
Número mínimo de observações na janela necessárias para ter um valor (caso contrário, o resultado é NA)
Eu não tinha me preocupado com os detalhes "na janela" aqui ... Então, qual seria a maneira mais eficiente de conseguir o que estou tentando alcançar? Devo fazer algo como:
roll = df.loc[20:,'A'].rolling(window=10)
df['C'] = roll.max() - roll.min()
Existe uma maneira mais eficiente?