Python 为什么pandas.Series.corr返回Nan而numpy或scipy计算数字?

Python 为什么pandas.Series.corr返回Nan而numpy或scipy计算数字?,python,pandas,numpy,correlation,Python,Pandas,Numpy,Correlation,我试图计算两个熊猫系列之间的相关性。这是我从numpy或scipy得到的: scipy.stats.pearsonr(xfarines["400"].values, yfarines["PROTREF"].values) (0.71564870605278108, 2.9185934338775347e-23) pd.np.corrcoef(xfarines["400"].values, yfarines["PROTREF"].values) array([[ 1. ,

我试图计算两个熊猫系列之间的相关性。这是我从numpy或scipy得到的:

scipy.stats.pearsonr(xfarines["400"].values, yfarines["PROTREF"].values)


(0.71564870605278108, 2.9185934338775347e-23)


pd.np.corrcoef(xfarines["400"].values, yfarines["PROTREF"].values)


array([[ 1.        ,  0.71564871],
   [ 0.71564871,  1.        ]])
但这就是熊猫给我的:

s = xfarines["400"]
s.corr(yfarines["PROTREF"])


nan
看这个问题,, 我检查数据类型是否正常,似乎是:

s.describe()

count    140.000000
mean       0.304078
std        0.057225
min        0.197300
25%        0.250300
50%        0.318500
75%        0.346850
max        0.408600
Name: 400, dtype: float64


yfarines["PROTREF"].describe()

count    140.000000
mean      12.619143
std        2.547644
min        7.600000
25%       10.975000
50%       12.100000
75%       14.590000
max       18.200000
Name: PROTREF, dtype: float64

因此,我不明白问题从何而来?

奇怪的是,您提到了numpy(v1.8.0),但使用了可能不同的scipy导入。这就是numpy所做的

>>> a
array([[ 3.00000000,  0.17157288],
       [ 3.00000000,  1.58578644],
       [ 3.00000000,  3.00000000],
       [ 3.00000000,  4.41421356],
       [ 3.00000000,  5.82842712]])
>>> np.corrcoef(a[:,0], a[:,1],rowvar=0, bias=0, ddof=None)
array([[ nan,  nan],
       [ nan,  1.00000000]]
也许更新版本的用户可以确认它返回的内容,但至少对于给定的垂直线点是这样的。 对于水平线的点,您可以得到

>>> b = np.array([a[:,1],a[:,0]]).T
>>> b
array([[ 0.17157288,  3.00000000],
       [ 1.58578644,  3.00000000],
       [ 3.00000000,  3.00000000],
       [ 4.41421356,  3.00000000],
       [ 5.82842712,  3.00000000]])
>>> np.corrcoef(b[:,0], b[:,1],rowvar=0, bias=0, ddof=None)
array([[ 1.00000000,  nan],
       [ nan,  nan]])

数据帧的索引是什么?它们对齐了吗?我密切关注索引。它们是弦。实际上,在
yfarines
中,末尾有几个空格。通过清除此空白,
s.corr
返回与numpy或scipy相同的值!在您读取csv时,是否有办法清除此空白?确实如此