如何在Pandas中计算滚动中位数

如何在Pandas中计算滚动中位数

在这篇文章中,我们将看到如何在pandas中计算滚动中位数。

滚动指标通常在时间序列数据中计算。它通过对最后 “n “次出现的数值进行汇总来表示数值是如何变化的。n “被称为窗口大小。聚合值通常是平均值或简单平均值。然而,我们也可以使用中位数聚合来进行某些类型的分析。

在我们行动之前,让我们用pip安装Pandas的库:

pip install pandas
Python

pandas.core.window.rolling.Rolling.median()函数计算了滚动中值。对象pandas.core.window.rolling.Rolling是通过对数据帧或序列应用rolling()方法得到的。

示例 1:

在这个例子中,我们将使用pandas.core.window.rolling.Rolling.median()函数来计算给定数据帧的滚动中值。我们已经计算了窗口大小为1、2、3和4的滚动中值。我们将所有这些不同的窗口输出合并到原始数据框中,以便我们可以对它们进行比较。我们可以在输出中观察到,对于窗口大小为’n’的记录,我们将前n-1列作为NaN值。对于第5条记录,将考虑记录2-5的中值。同样,对于第10条记录,将考虑7-10之间的记录的中值。这个窗口大小可以在rolling()方法的窗口参数中定义。

# 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)
Python

输出:

    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
Python

示例 2:

在这个例子中,我们采取了塔塔汽车过去3周的股票价格。计算滚动中位数的窗口大小为7,也就是一周的时间范围。因此,w7_roll_median列中的每个值都代表一周的股价中值。由于窗口大小是7,如前所述,最初的6条记录是NaN。

# 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)
Python

输出:

     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
Python

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册