看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
pandas.Series.autocorr
方法用于计算时间序列数据的自相关系数(autocorrelation)。自相关是指同一时间序列中的数据点与其在不同时间滞后的数据点之间的相关性。这在时间序列分析中非常有用,比如分析股票价格的趋势、检测周期性模式等。
计算lag-N自相关。该方法计算序列与其偏移自之间的Pearson相关性。
Series.autocorr(lag=1)
如果Pearson相关性没有很好地定义,则返回“NaN”。
lag
: 用于计算自相关的滞后期数(时间间隔)。默认值为 1
,表示计算当前数据点与前一个数据点之间的自相关系数。lag
可以是任何正整数。返回一个浮点数,表示指定滞后期数的自相关系数。自相关系数的值介于 -1 和 1 之间:
1
表示完全正相关(即两个数据点的变动方向完全一致)。-1
表示完全负相关(即两个数据点的变动方向完全相反)。0
表示没有相关性(即两个数据点之间没有线性关系)。s = pd.Series([0.25, 0.5, 0.2, -0.05])
s.autocorr()
# 0.10355...
s.autocorr(lag=2)
# -0.99999...
如果Pearson相关性没有很好地定义,则返回“NaN”。
s = pd.Series([1, 0, 0, 0])
s.autocorr()
# nan
假设我们有一组每日的温度数据,我们想要分析今天的温度与前一天温度之间的相关性。
import pandas as pd
# 构造示例数据
temperatures = pd.Series([20, 21, 19, 18, 20, 22, 21, 23, 24, 22])
# 计算滞后期为1的自相关系数
autocorr_lag_1 = temperatures.autocorr(lag=1)
# 输出原数据和自相关系数
print("每日温度数据:")
print(temperatures)
print("\n滞后期为1的自相关系数:")
print(autocorr_lag_1)
输出结果如下:
每日温度数据:
0 20
1 21
2 19
3 18
4 20
5 22
6 21
7 23
8 24
9 22
dtype: int64
滞后期为1的自相关系数:
0.5696
在这个例子中,autocorr_lag_1
的值为 0.5696
,表示今天的温度与前一天的温度有一定的正相关关系,但不是完全一致。
lag
参数,可以分析数据在不同时间间隔上的相关性。例如,我们可以计算滞后期为 2 的自相关系数:autocorr_lag_2 = temperatures.autocorr(lag=2)
print("\n滞后期为2的自相关系数:")
print(autocorr_lag_2)
输出结果如下:
滞后期为2的自相关系数:
0.1212
滞后期为 2 时,自相关系数降低到了 0.1212
,表明两天前的温度与今天的温度之间的相关性更弱。
autocorr
方法适用于数值型数据(如 int
或 float
)。对于非数值型数据(如字符串或分类数据),需要先进行适当的转换。NaN
或空值,autocorr
会自动跳过这些值进行计算。总结来说,autocorr
是时间序列分析中的一个重要工具,可以帮助我们理解数据中的时间依赖性和趋势性。
更新时间:2024-08-19 12:26:59 标签:pandas python 自相关系数