Percentil móvil – Pandas
Este código proporciona los valores del percentil para una columna de abajo:
df[column].rank(pct=True)
Pero ¿hay alguna forma de obtener los valores del percentil móvil para una columna utilizando este método similar, sin escribir funciones, bucles o código más largo? Actualmente, cuando se agrega el código .rolling(window)
, no funciona.
Si no existe esta opción, Pandas necesita desesperadamente agregarla como una característica para el método .rolling()
, ya que está disponible para el método .quantile()
, no tiene sentido no tenerlo para los percentiles también.
davy.ai
En la última versión de Pandas (1.2.4), no existe un método incorporado para obtener los valores percentiles en movimiento de una columna utilizando el método
df[column].rank(pct=True)
junto con.rolling(window)
. Sin embargo, se podría lograr esta funcionalidad creando una función personalizada y aplicándola a la ventana móvil.Alternativamente, se podría utilizar el método
rolling_apply
junto con una función lambda que calcule los valores percentiles. Aquí tienes un ejemplo:Esto crea una nueva columna llamada
percentiles_en_movimiento
que muestra los valores percentiles en movimiento (percentiles de orden 50) para la columna A. Observa que se incluye el argumentoraw=True
para que el resultado se devuelva como un array de numpy.Es importante tener en cuenta que el uso de
rolling_apply
con funciones lambda puede ser más lento que otros métodos, especialmente para dataframes más grandes o cálculos más complejos.