我有两列从一个数据框,我想得到的相关系数:Df ['a']和Df ['b']大约有15或20行数据。
我将这些赋值给"col1"one_answers";col2"然后试着调用corr方法:
col1 = df['a']
col2 = df['b']
corr = col1.corr(col2,method="pearson")
我得到一个错误:'float'对象没有属性'shape'
如果我导入stats库并尝试:
corr, pval=stats.pearsonr(col1,col2)
我得到一个相关系数。我在第一个问题上做错了什么?
在回答其中一个评论时,我检查了col1和col2的类型,它们都是系列。我认为这会起作用,因为我去了文档中的这个链接:https://pandas.pydata.org/docs/reference/api/pandas.Series.corr.html它没有指示您需要指定这是一个序列而不是一个数据框架。
我还检查了完整数据帧的类型:
print(type(df))
作为数据框架类型返回完整的数据框是21列和一个索引。我只想得到其中两列的相关系数。这里是我得到的数据的一个子集,如果我打印col1和col2:
col1:
国家
印度尼西亚9.3659e-05
日本0.000388417
加拿大0.001638514
…
名称:a, dtype: object
col2:
国家
印度尼西亚65
日本194
加拿大167
…
Name: b, dtype: object
是国家指数引起的问题吗?
或者,df
是一个级数:
>>> df
a 10.0
b 12.0
dtype: float64
或数据框架的列类型错误:
>>> df
a b
0 10.0 20.0
1 12.0 22.0
>>> df.dtypes
a float64
b object
dtype: object