Pandas 计算递增平均值
在本文中,我们将学习如何使用Python Pandas计算递增平均值。递增平均值指的是,每输入一次新的数据,就重新计算一次平均值。这在许多统计分析中都是非常有用的,比如股票价格等。
阅读更多:Pandas 教程
初始数据
首先,让我们创建一组包含随机数据的数列作为我们的示例数据。可以使用Python的NumPy库生成一个包含10个随机数字的数组。
import numpy as np
import pandas as pd
data = np.array([20.1, 21.2, 21.0, 21.5, 22.0, 23.2, 23.5, 21.1, 21.2, 20.5])
接着,我们将创建一个Pandas DataFrame对象来存储这组数据,并将其命名为“df”:
df = pd.DataFrame(data, columns=["value"])
print(df)
这将输出以下结果:
value
0 20.1
1 21.2
2 21.0
3 21.5
4 22.0
5 23.2
6 23.5
7 21.1
8 21.2
9 20.5
汇总统计
使用Pandas可以很容易地计算出DataFrame的统计信息。通过调用describe()函数,可以获得数据的计数、平均值、标准差、最小/最大值以及25%/50%/75%分位数等详细信息:
print(df.describe())
输出结果如下:
value
count 10.000000
mean 21.400000
std 1.363818
min 20.100000
25% 21.000000
50% 21.200000
75% 22.125000
max 23.500000
递增平均值
要计算递增平均值,我们可以使用expanding()函数来创建一个移动窗口,该窗口将逐步收集我们的数据并计算平均值。
接下来,我们将使用mean()函数计算每个窗口的平均值,并将结果存储在新的列“incremental_mean”中:
df["incremental_mean"] = df.expanding().mean()
print(df)
这将输出以下结果:
value incremental_mean
0 20.1 20.100000
1 21.2 20.650000
2 21.0 20.766667
3 21.5 21.200000
4 22.0 21.560000
5 23.2 21.983333
6 23.5 22.357143
7 21.1 22.162500
8 21.2 22.066667
9 20.5 21.750000
可以看到,递增平均值变化并随着新数据的输入而变化。
另外,还可以将rolling()函数替换为expanding()函数,这会创建一个移动窗口,该窗口始终包含最后N个数据(根据窗口大小的定义)。
df["rolling_mean"] = df["value"].rolling(3).mean()
print(df)
这将输出以下结果:
value incremental_mean rolling_mean
0 20.1 20.100000 NaN
1 21.2 20.650000 NaN
2 21.0 20.766667 20.766667
3 21.5 21.200000 21.233333
4 22.0 21.560000 21.500000
5 23.2 21.983333 22
如上所述,这个rolling_mean列包含了三个数据的移动窗口平均值,因此在前两个值上是NaN。在第三行和后面,可以看到rolling_mean列的值等于前一个值、当前值和下一个值的平均值。
绘制结果
最后,我们可以将DataFrame中的结果绘制成一个图表。使用Matplotlib库中的plot()函数,我们可以创建一条曲线,该曲线显示出递增平均值和原始数据值:
import matplotlib.pyplot as plt
plt.plot(df["value"], label="Value")
plt.plot(df["incremental_mean"], label="Incremental Mean")
plt.legend(loc="upper left")
plt.show()
总结
在本文中,我们介绍了如何使用Python Pandas计算递增平均值。我们使用了expanding()函数和rolling()函数来创建滚动窗口,并使用mean()函数计算每个窗口的平均值。在计算结果之后,我们使用Matplotlib库中的plot()函数将结果绘制成一个图表,以更好地了解数据变化和计算结果。希望这可以帮助您更好地了解Pandas计算当天的递增平均值。
极客教程