Pandas没有为数据帧提供corr矩阵

时间:2017-04-04 14:18:11

标签: python pandas dataframe

我正在尝试使用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')

2 个答案:

答案 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笔记本中逐行迭代而不是在测试步骤之前尝试烹饪类,那么这可能会被避免。