0
두 팬더 시리즈 간의 상관 관계를 계산하려고합니다. dtypes 확인하고이 보이는 경우 pandas df.corr() returns NaN despite data fed having populated data 내가 확인pandas.Series.corr이 num을 반환하는 반면 numpy 또는 scipy가 숫자를 계산하는 이유는 무엇입니까?
s = xfarines["400"]
s.corr(yfarines["PROTREF"])
nan
이 질문에 상대 :
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. ]])
하지만이 팬더 무엇을 나에게 준다 : 나는 NumPy와 나 scipy에서 무엇을 얻을입니다 그것은 :
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
[this answer] (http://stackoverflow.com/a/13386025/6904813) 정확히이 작업을 수행합니다. – JMat