如何对长度不同的两组数据集执行相关性及滚动相关性分析
皮尔逊相关性与滚动相关性计算方案
前置说明
现有代码存在3个问题:
- 未导入pandas库,直接调用pd会报错
- 没有截取两组数据的前32条样本
pearsonr要求输入一维数组,pd.read_csv默认返回DataFrame,直接传入会报错
完整实现代码
import pandas as pd from scipy.stats import pearsonr # 读取本地数据文件 X = pd.read_csv(r'X.csv') Y = pd.read_csv(r'Y.csv') # 提取前32条样本的第一列数值,多列数据可自行调整列索引或列名 X_slice = X.iloc[:32, 0].values Y_slice = Y.iloc[:32, 0].values # 计算皮尔逊相关性 corr, p_value = pearsonr(X_slice, Y_slice) print(f"皮尔逊相关系数:{corr:.4f},p值:{p_value:.4f}") # 滚动相关性计算,window参数为滚动窗口大小,可按需调整 df = pd.DataFrame({"X": X_slice, "Y": Y_slice}) rolling_corr = df.rolling(window=5).corr().dropna() # 提取X与Y的对应相关系数 rolling_corr = rolling_corr.loc[(slice(None), "X"), "Y"].reset_index(drop=True) print("\n滚动相关性结果:") print(rolling_corr)
注意事项
- 如果你的csv文件包含多列,可将
iloc[:32, 0]替换为['你的列名'].iloc[:32].values来指定计算列 - 滚动窗口大小可根据分析需求修改,最大值不能超过32
- 运行前请确认数据文件路径填写正确,或者将csv文件放在Jupyter Notebook的工作目录下
内容的提问来源于stack exchange,提问作者user2543
相关产品推荐
相关产品推荐

