我正在尝试使用DF.corr来获取我的数据的相关性。但我只是将最后一列与自身相关联。 我已经阅读了其他问题,其中每个col的数据类型应该是数字,我也是这样做的。
这是代码。
class Correlations:
def __init__(self,filename):
self.filename = filename
self.score = []
self.x = None
self.y = None
self.read_data()
def read_data(self):
self.x = read_csv(self.filename,sep='\t',index_col = False )
self.x.replace(to_replace = 'None', value = 0.0, inplace = True)
self.x.apply(to_numeric)
def correlation(self):
return self.x.corr(method='spearman')
答案 0 :(得分:1)
我尝试过pandas dataframe corr()
?
df.corr()
它返回每个成对相关的2d矩阵。
0 1 2 3 4 5
0 1.000000 0.078538 -0.014326 0.273707 0.222093 0.006823
1 0.078538 1.000000 -0.050930 0.163618 0.108258 -0.257071
2 -0.014326 -0.050930 1.000000 0.074747 -0.099014 0.460622
3 0.273707 0.163618 0.074747 1.000000 0.636578 -0.308201
4 0.222093 0.108258 -0.099014 0.636578 1.000000 -0.008964
5 0.006823 -0.257071 0.460622 -0.308201 -0.008964 1.000000
答案 1 :(得分:1)
这不会重现。如果我复制上面的示例数据,请运行:
0 1 2 3 4 5
0 1.000000 0.078538 -0.014326 0.273707 0.222093 0.006823
1 0.078538 1.000000 -0.050930 0.163618 0.108258 -0.257071
2 -0.014326 -0.050930 1.000000 0.074747 -0.099014 0.460622
3 0.273707 0.163618 0.074747 1.000000 0.636578 -0.308201
4 0.222093 0.108258 -0.099014 0.636578 1.000000 -0.008964
5 0.006823 -0.257071 0.460622 -0.308201 -0.008964 1.000000
我明白了:
df=read_csv(filename,sep='\t',index_col = False)
df = df.apply(to_numeric) # pay attention to assignment
df.dtypes #show what the types of the fields are
df.corr()
你通过在课堂上开设课程,立刻做了很多事情。您应该回过头来进行调试:
df = df.apply(to_numeric)
我怀疑魔法在apply()
,因为{{1}}会返回一个数据帧而不会对你的df进行现场编辑。
如果您在Jupyter笔记本中逐行迭代而不是在测试步骤之前尝试烹饪类,那么这可能会被避免。