Python中用iloc选0-8列计算相关性:corr()参数及用法疑问
关于pandas中iloc与corr()结合使用的问题解答
先纠正你的iloc切片错误
你要选取索引0至8的前9列,但[:,0:8]是左闭右开切片,实际只包含0到7共8列。正确的写法应该是[:,0:9],这样才能覆盖0-8的9列数据。
corr()方法的常用参数说明
pandas的corr()方法不需要强制传参,默认就能计算皮尔逊相关系数,但你可以根据需求指定以下关键参数:
method:指定相关系数计算方法'pearson':默认值,适用于线性相关的连续变量'spearman':斯皮尔曼秩相关,适合非线性但单调的变量,或者包含异常值的场景'kendall':肯德尔秩相关,适合小样本或有序分类变量- 也可以传入自定义函数(需接受两个一维数组,返回一个标量)
numeric_only:布尔值,默认True,只对数值型列计算相关性,避免非数值列导致报错min_periods:计算相关系数所需的最小非缺失观测数,默认1,当数据缺失较多时可适当调大
iloc与corr()结合的注意事项
- iloc选取多列后返回的是DataFrame对象,可直接链式调用
corr(),无需额外转换 - 确保iloc选取的列以数值型为主,如果包含非数值列,建议开启
numeric_only=True过滤,或提前对非数值列做编码/删除处理 - 牢记iloc切片的左闭右开规则,避免列数选取错误
正确代码示例
# 选取索引0-8的9列,计算皮尔逊相关系数(自动过滤非数值列) corr_matrix = dataset.iloc[:, 0:9].corr(method='pearson', numeric_only=True)
内容的提问来源于stack exchange,提问作者Nafiisa
相关产品推荐
相关产品推荐

