遍历Pandas指定列计算相关系数时变量未定义的解决方法
解决DataFrame列遍历计算相关系数的错误问题
你的问题根源很清晰:你把DataFrame的列名(比如passes)当成了独立的Python变量来使用,但实际上这些列名只是DataFrame中的字符串标签,Python找不到对应的变量定义,所以抛出了name 'passes' is not defined的错误。
这里有两种简便的方法来实现你想要的列遍历分析:
方法1:修正循环逻辑(使用字符串列名)
把列名改成字符串形式放入列表,然后通过索引访问(players[stats])来获取对应的列,而不是用点语法(players.stats,点语法仅适用于列名符合Python变量命名规则的场景,循环时用索引更可靠):
import numpy as np import pandas as pd # 假设你的players DataFrame已经存在 target_columns = ['passes', 'tackles', 'shots', 'saves'] for col in target_columns: # 计算当前列与minutes列的相关系数 corr_coef = np.corrcoef(players['minutes'], players[col])[1, 0] print(f"{col} 与 minutes 的相关系数: {corr_coef:.4f}")
方法2:用Pandas原生函数更高效处理
如果你不想写循环,可以用Pandas的corrwith()函数,一次性计算所有目标列与minutes列的相关系数,代码更简洁且性能更好:
# 直接获取所有目标列与minutes的相关系数 correlation_results = players[['passes', 'tackles', 'shots', 'saves']].corrwith(players['minutes']) print(correlation_results)
这个方法会返回一个Pandas Series,索引是目标列名,值是对应的相关系数,非常方便后续的分析或可视化。
内容的提问来源于stack exchange,提问作者Joseph Mann
相关产品推荐
相关产品推荐

