Funciones rodantes de Python Pandas
No estoy seguro de entender el parámetromin_periods
en pandasrolling
funciones: ¿por qué tiene que ser más pequeño que elwindow
¿parámetro? Me gustaría calcular (por ejemplo) el máximo móvil menos el mínimo móvil con una ventana de diez valores, PERO quiero esperar unos 20 valores antes de comenzar los 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()
Obtuve el siguiente error:
ValueError: Invalid min_periods size 20 greater than window 10
pensé quemin_periods
estaba allí para decir cuántos valores tenía que esperar la función antes de comenzar los cálculos. La documentación dice:
min_periods: int, default Ninguno
Número mínimo de observaciones en la ventana para tener un valor (de lo contrario, el resultado es NA)
No había sido cuidadoso con los detalles "en la ventana" aquí ... Entonces, ¿cuál sería la forma más eficiente de lograr lo que estoy tratando de lograr? ¿Debo hacer algo como:
roll = df.loc[20:,'A'].rolling(window=10)
df['C'] = roll.max() - roll.min()
¿Hay alguna forma más eficiente?