You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas计算不同长度序列相关性结果异常问题求助

问题分析与解决:Pandas计算序列相关性不符合预期

核心问题

你犯了两个关键错误:

  • 计算对象错误:你用A.loc[:,'time']和B.loc[:,'time']计算的是时间列的相关性,而不是你实际需要分析的values列相关性,这直接导致结果和Excel、可视化结果完全不符。
  • 序列对齐错误:两个DataFrame时间范围不同、长度不一致,直接调用corr会按索引位置对齐,而非按时间匹配,索引错位的位置会被标记为NaN,进一步干扰计算结果。

正确解决步骤

  1. 统一时间格式并合并数据
    先确保time列为datetime类型,再通过内连接获取两个DataFrame共有的时间区间数据:

    import pandas as pd
    
    # 转换time列为datetime类型(若未转换)
    A['time'] = pd.to_datetime(A['time'])
    B['time'] = pd.to_datetime(B['time'])
    
    # 按time列内连接,只保留双方都有的时间点
    merged_df = pd.merge(A, B, on='time', how='inner', suffixes=('_A', '_B'))
    
  2. 计算数值列的相关性
    基于合并后的数据,对values列计算皮尔逊相关系数:

    pearson_corr = merged_df['values_A'].corr(merged_df['values_B'], method='pearson')
    print(pearson_corr)
    

为什么之前的操作无效

  • 你之前计算的是时间序列的相关性,而两个时间序列长度不同、起始时间不同,索引对齐后数据错位,自然得到接近0的无意义结果。
  • Excel的=CORREL函数应该是你手动对齐了时间对应的values数据后计算的,这和我们合并后计算的逻辑一致,所以结果正确。

内容的提问来源于stack exchange,提问作者ensbana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 17:05:07