Numpy 当我通过scipy使用pearsonr函数时,为什么接收nan作为变量的输出?

Numpy 当我通过scipy使用pearsonr函数时,为什么接收nan作为变量的输出?,numpy,scipy,correlation,pearson-correlation,Numpy,Scipy,Correlation,Pearson Correlation,我在一个数据帧中有两个变量,叫做相关性 雷普雷克斯: 这是我的自变量(X) 这是我的因变量或Y correlation["Y"] Out[36]: 0 333.65 1 0.00 2 1846.80 3 0.00 4 0.00 5 0.00 6 0.00 7 0.00 8 191.56 9

我在一个数据帧中有两个变量,叫做相关性

雷普雷克斯:

这是我的自变量(X)

这是我的因变量或Y

correlation["Y"]
Out[36]: 
0          333.65
1            0.00
2         1846.80
3            0.00
4            0.00
5            0.00
6            0.00
7            0.00
8          191.56
9            0.00
10           0.00

from numpy.random import randn
from scipy.stats import pearsonr
from numpy import corrcoef
from scipy.stats import spearmanr


data1 = correlation["X"]
data2 = correlation["Y"]
# calculate Pearson's correlation
corr, _ = pearsonr(data1, data2)
print('Pearsons correlation: %.3f' % corr)
但是,当我打印我的函数时,我的输出是:

print('Pearsons correlation: %.3f' % corr)
Pearsons correlation: **nan**

为什么会发生这种情况

好的,我承认我对SciPy一无所知,但我希望数组应该有相同数量的元素。从我看到的X有35个,Y有36个,也许这是个问题(至少在一些版本中,正如沃伦在上面评论的那样,它对他有效)。

在SciPy 1.3.1中,pearsonr返回r=-0.0042432278454233和p=0.9901210843335179。您使用的是哪个版本的SciPy?您可以使用
import-scipy进行检查;打印(打印版本)
print('Pearsons correlation: %.3f' % corr)
Pearsons correlation: **nan**