DataFrame计算corr()函数计算相关系数时,出现返回值为空或NaN的情况
1. 返回值为空的情况
出现返回值为空的情况是因为数据的类型不是数值型。用data.info()函数可以查看dataframe的信息。这里举个例子:
###创建一个dataframe,数据类型为object
data = pd.DataFrame([[1,2,3],[4,5,6]],columns=['a','b','c'],dtype=object)data
Out[23]: a b c
0 1 2 3
1 4 5 6
可以看到data的数据类型为object,使用data.corr()计算相关系数返回的值为空。
data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2 entries, 0 to 1
Data columns (total 3 columns):
a 2 non-null object
b 2 non-null object
c 2 non-null object
dtypes: object(3)
memory usage: 128.0+ bytesdata.corr()
Out[25]:
Empty DataFrame
Columns: []
Index: []
用data.apply(lambda x:x.astype(float))将数据的类型改为数值型, 记得要把结果赋值给一个新的变量,否则不会改变数据的类型。然后返回值就不为空了。
data = data.apply(lambda x:x.astype(float))data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2 entries, 0 to 1
Data columns (total 3 columns):
a 2 non-null float64
b 2 non-null float64
c 2 non-null float64
dtypes: float64(3)
memory usage: 128.0 bytesdata.corr()
Out[39]: a b c
a 1.0 1.0 1.0
b 1.0 1.0 1.0
c 1.0 1.0 1.0
2. 返回值为NaN的情况
出现返回值存在NaN的一种情况是因为dataframe里面存在一列的值全为一样的,我们再来举一个?,特征a的值全为0:
data = pd.DataFrame([[0,2,9],[0,6,8]],columns=['a','b','c'])data
Out[44]: a b c
0 0 2 9
1 0 6 8data.corr()
Out[45]: a b c
a NaN NaN NaN
b NaN 1.0 -1.0
c NaN -1.0 1.0
这个是因为corr()函数调用了get_corr_func(),然后get_corr_func()调用了scipy/stats/spearmanr(),
然后spearmanr()调用了numpy/corrcoef (), 在这个函数里面有一段代码,让输出的结果为NaN。下面这段代码计算了Pearson相关系数,c为协方差矩阵,协方差矩阵的主对角线就是各个维度的方差。
c = cov(x, y, rowvar)try:d = diag(c)except ValueError:# scalar covariance# nan if incorrect value (nan, inf, 0), 1 otherwisereturn c / cstddev = sqrt(d.real)c /= stddev[:, None]c /= stddev[None, :]
下面是计算 Pearson相关系数的公式:
我们可以看到如果其中一个维度的标准差为0,都会导致nan的输出。当一个维度的数据全为一个值时,标准差就等于0。所以并不是我之前所说的是因为值全为0不准确,而是因为标准差为0. 谢谢下面的评论指出了偶的错误。
【题外话】
俗话说,技多不压身。今天给大家推荐一个PS课程
现在的PS,已经成为了仅次于office办公软件技能下,求职着需要掌握的技能,而不再是设计师的专属。
无论是海报、课程设计、亦或着公众号排版、产品详情页、企业团队宣传招,都需要用到PS。
对于大学生和职场新人来说,多掌握一项技能,你对公司的价值就越大,职场竞争力就更强,也就更容易拿到更高的薪水。
DataFrame计算corr()函数计算相关系数时,出现返回值为空或NaN的情况相关推荐
- 调用个别f5 负载端口为80的vs时,返回值为空的问题
现状: vs负载端口为80并添加XFF,pool包含2个member,member的monitor端口为80&9000. 故障现象: 应用同事描述说再完全复制了一个member并添加到pool ...
- pandas中使用rolling.corr函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations)、例如,计算两种商品销售额之间的3个月的滚动相关性
pandas中使用rolling.corr函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations).例如,计算两种商品销售额之间的3个月的滚动相关性 目录
- 基于Apache math3 的遗传算法计算复杂函数在定义域内的最值
遗传算法(英语:genetic algorithm (GA) )是计算数学中用于解决最优化的搜索算法,是进化算法的一种.进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传.突变. ...
- 【函数的定义、调用(嵌套调用、递归调用)、声明、函数的分类(有无返回值、有无参数)、变量(自动变量与静态变量、局部变量与全局变量、只读变量)】(学习笔记7--函数)
第一篇博文,打卡新星计划第三季3.4~4.4,希望能有质的飞跃,顶峰相见 一.自定义函数 1.函数的定义 函数在使用前也需要定义,定义的格式如下: 数据类型 函数名([数据类型 参数1],[数据类型 ...
- 函数中有多个return?C语言中,一个函数可以有几个返回值?
在移植wifi的代码时,遇到了一些与下面类似的函数,这些函数中有不只一个return,这可是个新鲜的玩意儿: int func (int b) {int a=5;if (a>b)return a ...
- 以下是一个使用 VBA 的例子,演示了 ByVal 和 ByRef 的区别,以及如何在函数中传递参数和返回值。
以下是一个使用 VBA 的例子,演示了 ByVal 和 ByRef 的区别,以及如何在函数中传递参数和返回值: Sub Example()Dim x As Integer, y As Integerx ...
- Go 学习笔记(61)— Go 高阶函数、函数作为一等公民(函数作为输入参数、返回值、变量)的写法
函数在 Go 语言中属于"一等公民(First-Class Citizen)"拥有"一等公民"待遇的语法元素可以如下使用 可以存储在变量中: 可以作为参数传递给 ...
- 解决LoadImage函数返回值为空的问题
在picture control控件显示本地bmp图片的方法里,使用LoadImage加载bmp图片时,返回值经常为空,解决方法: 1.把bmp图片用画图工具打开,再以bmp格式另存为 2.上述方法行 ...
- smali语言详解之一般/构造方法(函数)的声明与返回值关键字
smali语言详解之一般/构造方法(函数)的声明与返回值关键字 一. smali语言的方法声明格式 .method与.end method成对出现,类似于java中的花括号 1.1.非静态的一般方法 ...
最新文章
- 西班牙放大招,利用区块链技术防腐
- python语言培训班-学python培训班需要多久?深圳Python培训
- SAP Fiori里的manifest.json
- java----连接池C3p0使用的补充
- WordPress 主题教程 #5c:日志元数据
- Java 多态的实现机制
- python实现冒泡排序视频_Python实现冒泡排序
- C盘pagefile.sys不可删除,解决磁盘占用太满的问题
- 原来我不懂printf
- windows--CMD--命令大全
- MATLAB自动设置仿真曲线颜色和线型属性
- 最全常见算法工程师面试题目整理
- 世界上最好的惯性动作捕捉设备Xsens,你不应该错过的Xsens MVN Animate Pro
- 【Keras】Keras中fit_generator的使用,及fit、fit_generator、和train_on_batch的区别
- PW系列 | palette 体验
- 【Win 10 应用开发】MIDI 音乐合成——乐理篇
- 金秋杭州游 只为桂花香
- 【秋招面试】货拉拉面试(1面过程)
- ArcGIS三维资源收集帖
- Python爬虫爬取微博评论案例详解
热门文章
- 个人永久性免费-Excel催化剂功能第87波-将批量发送邮件做到极致化,需借力Outlook...
- 张飞老师硬件第十六部视频整理——硬件基础2
- 农家女靠养花赚钱,年收入几十万
- 一、如何快速掌握数据库
- 104、二氧化碳气体灭火系统的灭火机理
- 荣耀平板5鸿蒙降级安卓并刷入原生Android12系统——麒麟659,4+64G,10英寸wifi版本
- java三元表达式嵌套_三元运算符的嵌套详解:分别在JSTL、JavaScript和Java中
- Charles抓包工具安装教程
- Mysql 查询锁表指令速查
- python如何写生日快乐说说_一句祝自己生日快乐的说说