0
私は2つのパンダシリーズ間の相関関係を計算しようとしています。これは私がnumpyのか、scipyのダウンロードから取得されるものです:なぜ、pandas.Series.corrはNanを返しますが、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
、 pandas df.corr() returns NaN despite data fed having populated data dtypesはOKであり、それはそうならば、私はチェックそれは:
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
したがって、どこから問題が発生するのかわかりません。
データフレームのインデックスは何ですか?彼らは整列していますか? – JMat
私はインデックスをよく見ています。彼らは文字列です。実際には、「yfarines」では最後に空白がいくつかありました。この空白を消去することで、 's.corr'はnumpyやscipyと同じ値を返します! csvを読むときにこの空白をきれいにする方法はありますか? – Ger
[この回答](http://stackoverflow.com/a/13386025/6904813)はこれを正確に行います – JMat