pandas中的cov和corr函数不能忽略含有字符串行的问题

您所在的位置:网站首页 睾丸扭转复位手术多少钱费用啊 pandas中的cov和corr函数不能忽略含有字符串行的问题

pandas中的cov和corr函数不能忽略含有字符串行的问题

2023-12-28 23:03| 来源: 网络整理| 查看: 265

作者处于新手修炼期,在今天学习pandas遇到了点小问题给大家分享一下

今天在学习cov和corr求协方差和相关性函数时查询相关函数资料,资料上说cov函数以及corr函数会忽略非数字的列,但是在实操TiTans训练数据时发现并不会忽略含有字符串的那一列数据,结果导致代码进行了报错

数据来源

kaggle入门竞赛Titans

下面是参考的网页资料

Python Pandas dataframe.cov()用法及代码示例 - 纯净天空 (vimsky.com)icon-default.png?t=N7T8https://vimsky.com/examples/usage/python-pandas-dataframe-cov.html

开始代码如下

df = pd.read_csv('C:\\Users\\24242\\Desktop\\AI_Reference\\data_bag\\titanic\\train.csv') df.cov()

 Titans训练集含有的数据如下图所示

a0dfd2bc1b3b44cdba11e8da9237113e.png

 发现cov函数无法对Name列进行协方差的求解,同时也并不会忽略Name这一列以及图中其他非数字的列  

代码报错情况如下

eef40a0dcb504087a19c6365aced6831.png

1340e06eb17042308720e38c1c491ecb.png

解决方案如下

由于字符串无法参加计算,会导致程序报错,所以我们更加希望忽略包含字符串的列

使用DataFrame的select_dtypes方式选择只包含数值类型的类(include或者用exclude),然后再计算协同方差和相关性

numeric_columns = df.select_dtypes(include=['int','float']).columns cov_true = df[numeric_columns].cov() corr_true = df[numeric_columns].corr() corr_true

include传入一个列表,包含需要进行计算的类型(此处我选择了只int和float类型)

下面是运行结果 

590597f6e1fb404da74cd5478d1917b3.png

23c42faa198e4c2ea00428a31ca02c40.png

 运行成功,问题基本得到了解决,但是没有包含Ticket字段。

不足的是并不知道为什么cov和corr为什么不能忽略非数字的列,作者猜测可能是因为版本问题,希望大佬们能给出一些建议。

再次更新于2023年11月30日星期四。

感谢网友的答疑,可是试试一下解决方案:

pandas2.0版本后,原来corr函数自动忽略字符串等非浮点数的特性被修改了,可以用.corr(method='pearson',numeric_only=True)忽略字符串。



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3