pandas中的cov和corr函数不能忽略含有字符串行的问题 |
您所在的位置:网站首页 › 睾丸扭转复位手术多少钱费用啊 › pandas中的cov和corr函数不能忽略含有字符串行的问题 |
作者处于新手修炼期,在今天学习pandas遇到了点小问题给大家分享一下 今天在学习cov和corr求协方差和相关性函数时查询相关函数资料,资料上说cov函数以及corr函数会忽略非数字的列,但是在实操TiTans训练数据时发现并不会忽略含有字符串的那一列数据,结果导致代码进行了报错 数据来源 kaggle入门竞赛Titans 下面是参考的网页资料 Python Pandas dataframe.cov()用法及代码示例 - 纯净天空 (vimsky.com) 开始代码如下 df = pd.read_csv('C:\\Users\\24242\\Desktop\\AI_Reference\\data_bag\\titanic\\train.csv') df.cov()Titans训练集含有的数据如下图所示 发现cov函数无法对Name列进行协方差的求解,同时也并不会忽略Name这一列以及图中其他非数字的列 代码报错情况如下 解决方案如下 由于字符串无法参加计算,会导致程序报错,所以我们更加希望忽略包含字符串的列 使用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_trueinclude传入一个列表,包含需要进行计算的类型(此处我选择了只int和float类型) 下面是运行结果 运行成功,问题基本得到了解决,但是没有包含Ticket字段。 不足的是并不知道为什么cov和corr为什么不能忽略非数字的列,作者猜测可能是因为版本问题,希望大佬们能给出一些建议。 再次更新于2023年11月30日星期四。 感谢网友的答疑,可是试试一下解决方案: pandas2.0版本后,原来corr函数自动忽略字符串等非浮点数的特性被修改了,可以用.corr(method='pearson',numeric_only=True)忽略字符串。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |