¿Cómo calcular la mediana móvil en pandas?

En este artículo, veremos cómo calcular la mediana móvil en pandas.

Una métrica móvil generalmente se calcula en datos de series temporales. Representa cómo cambian los valores agregando los valores de las últimas ‘n’ ocurrencias. La ‘n’ se conoce como el tamaño de la ventana. La agregación suele ser la media o promedio simple. Sin embargo, también podemos usar la agregación de medianas para realizar ciertos tipos de análisis. 

Antes de continuar, instalemos la biblioteca de panda usando pip:

pip install pandas

La función pandas.core.window.rolling.Rolling.median() calcula la mediana móvil. El objeto pandas.core.window.rolling.Rolling se obtiene aplicandoel método rolling() al marco de datos o serie.

Ejemplo 1:

En este ejemplo, usaremos la función pandas.core.window.rolling.Rolling.median() para calcular la mediana móvil del marco de datos dado. hemos calculado la mediana móvil para los tamaños de ventana 1, 2, 3 y 4. Hemos fusionado todas estas salidas de ventana diferentes en el marco de datos original para que podamos compararlas. Como podemos observar en la salida, para un tamaño de ventana de ‘n’, tenemos las primeras n-1 columnas como valor NaN. Para el registro 5, se considerarán los valores medianos del registro 2 – 5. Asimismo, para el registro 10 se considera el valor de la mediana de los registros entre 7 y 10. Este tamaño de ventana se puede definir en el método rolling() en el parámetro de ventana.

Python

# Import the `pandas` library
import pandas as pd
  
# Create the pandas dataframe
df = pd.DataFrame({
    "value": [101, 94, 112, 100, 134, 124, 
              119, 127, 143, 128, 141]
})
  
# Calculate the rolling median for window = 1
w1_roll_median = df.rolling(window=1).median()
  
# Calculate the rolling median for window = 2
w2_roll_median = df.rolling(window=2).median()
  
# Calculate the rolling median for window = 3
w3_roll_median = df.rolling(window=3).median()
  
# Calculate the rolling median for window = 4
w4_roll_median = df.rolling(window=4).median()
  
# Add the rolling median series to the original 
# dataframe for comparison
df['w1_roll_median'] = w1_roll_median
df['w2_roll_median'] = w2_roll_median
df['w3_roll_median'] = w3_roll_median
df['w4_roll_median'] = w4_roll_median
  
# Print the dataframe
print(df)

Producción:

    value  w1_roll_median  w2_roll_median  w3_roll_median  w4_roll_median
0     101           101.0             NaN             NaN             NaN
1      94            94.0            97.5             NaN             NaN
2     112           112.0           103.0           101.0             NaN
3     100           100.0           106.0           100.0           100.5
4     134           134.0           117.0           112.0           106.0
5     124           124.0           129.0           124.0           118.0
6     119           119.0           121.5           124.0           121.5
7     127           127.0           123.0           124.0           125.5
8     143           143.0           135.0           127.0           125.5
9     128           128.0           135.5           128.0           127.5
10    141           141.0           134.5           141.0           134.5

Ejemplo 2:

En este ejemplo, hemos tomado el precio de las acciones de Tata Motors durante las últimas 3 semanas. La mediana móvil se calcula para un tamaño de ventana de 7, lo que significa un marco de tiempo de una semana. Por lo tanto, cada valor en la columna w7_roll_median representa el valor medio del precio de las acciones durante una semana. Dado que el tamaño de la ventana es 7, los 6 registros iniciales son NaN, como se mencionó anteriormente.

Python

# Import the `pandas` library
import pandas as pd
  
# Create the pandas dataframe
df = pd.DataFrame({
    "value": [
        506.40, 487.85, 484.90, 489.70, 501.40, 509.65, 510.75,
        503.45, 507.05, 505.45, 519.05, 530.15, 509.70, 486.10,
        495.50, 488.65, 492.75, 460.20, 461.45, 458.60, 475.25,
    ]
})
  
# Calculate the rolling median for window = 7
w7_roll_median = df.rolling(window=7).median()
  
# Add the rolling median series to the original
# dataframe for comparison
df['w7_roll_median'] = w7_roll_median
  
# Print the dataframe
print(df)

Producción:

     value  w7_roll_median
0   506.40             NaN
1   487.85             NaN
2   484.90             NaN
3   489.70             NaN
4   501.40             NaN
5   509.65             NaN
6   510.75          501.40
7   503.45          501.40
8   507.05          503.45
9   505.45          505.45
10  519.05          507.05
11  530.15          509.65
12  509.70          509.70
13  486.10          507.05
14  495.50          507.05
15  488.65          505.45
16  492.75          495.50
17  460.20          492.75
18  461.45          488.65
19  458.60          486.10
20  475.25          475.25

Publicación traducida automáticamente

Artículo escrito por apathak092 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *