如何计算pandas DataFrame两列相关性并解决KeyError报错问题
错误原因
你触发KeyError的核心原因是pandas多列选取的语法错误:直接写s['A1','A3']时,pandas会把括号内的元组('A1', 'A3')当做单个列名去查询,你的数据表中不存在这个名称的列,因此报错。
多列选取的正确语法是将列名放在Python列表中传入,即s[['A1', 'A3']]。
完整实现代码
import pandas as pd def main(): s = pd.read_csv('A1-dm.csv') processed_df = calculate_correlation(s) print(processed_df) def calculate_correlation(s): # 计算A1和A3的皮尔逊相关系数 corr_val = s['A1'].corr(s['A3']) print(f"A1和A3的相关性为:{corr_val}") # 按需求判断是否删除A3列 # 注:原条件"大于0.6或小于0.6"等价于corr_val!=0.6,大概率为笔误 # 若实际需求为相关性绝对值大于0.6时删除,可改为if abs(corr_val) > 0.6: if corr_val > 0.6 or corr_val < 0.6: s = s.drop('A3', axis=1) return s if __name__ == "__main__": main()
关键语法说明
- 多列选取:如果需要提取多个列构建子DataFrame,统一使用
df[['列名1', '列名2']]的写法,内层方括号为存储列名的列表 - 相关性计算:仅需要计算两列相关性时,可以直接调用两列Series对象的
corr()方法,不需要提前提取子DataFrame - 列删除:使用
drop方法删除列时,必须指定axis=1参数,否则pandas会默认按行索引删除
内容的提问来源于stack exchange,提问作者Evan Gertis
相关产品推荐
相关产品推荐

