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

如何计算DataFrame中各国逐年相关系数,生成21个72×72相关矩阵

解决方法

你之前的所有尝试出错的核心原因是混淆了Series.corr()和DataFrame.corr()的用法:

  • Series.corr(other):用于计算两个一维序列的相关系数,返回单个数值,必须传入第二个序列作为参数
  • DataFrame.corr():用于计算DataFrame所有列两两的相关系数,返回n×n的矩阵(n为列数)

错误原因梳理

  1. 前两种尝试:你每次取dfpivot[x]得到的是单年份的72个国家值,属于Series类型,直接调用corr()没有传入第二个对比序列,所以报缺少参数的错误。
  2. 第三种尝试:你传入的对比序列是同一列,自身和自身计算相关系数结果自然全为1。
  3. 第四种尝试:你每次都是拿两个单年份的Series计算相关,返回单个数值,所以最终字典里只存储了每个年份的单个相关值,没有得到矩阵。

正确实现代码

你只需要把原DataFrame转置,让年份作为行、国家作为列,每次取相邻两年的两行数据调用corr()即可得到72×72的相关矩阵:

import pandas as pd

# 先转置原数据,转置后形状为(22,72),行是年份,列是国家
df_T = dfpivot.T

# 存储结果的字典,key为对应当年的年份,value为72×72相关矩阵
corr_matrices = {}

# 遍历所有相邻年份对,共21组
for idx in range(1, len(df_T)):
    # 取前一年和当年的两行数据
    two_year_slice = df_T.iloc[[idx-1, idx]]
    # 计算相关矩阵,可根据需要加min_periods参数处理空值
    curr_matrix = two_year_slice.corr(min_periods=1)
    # 存入字典,用当年的年份作为key
    curr_year = df_T.index[idx]
    corr_matrices[curr_year] = curr_matrix

如果对空值处理有特殊要求,可以调整corr()方法的参数适配你的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:12:02