计算矩阵Pandas Python中的距离

时间:2016-03-31 20:47:17

标签: python pandas scipy

尝试计算大矩阵(例如300000x12000)的Pearson系数

所以我接下来要做的事情:

导入库:

import pandas as pd
from scipy.spatial.distance import cosine
from scipy.stats.stats import pearsonr

使用pd.get_dummies执行虚拟表:

table=pd.get_dummies(data['word'])

使用DataFrame创建空矩阵:

data_ibs = pd.DataFrame(index=table.columns,columns=table.columns)

然后使用矩阵的for循环计算pearsonr:

for i in range(0,len(data_ibs.columns)) :
    for j in range(0,len(data_ibs.columns)) :
        data_ibs.ix[i,j] =  pearsonr(table.ix[:,i],table.ix[:,j]) [0]

它有效但 waaay 减慢 - 它工作了4个小时仍然计算。还有其他可能吗?

提前致谢,我们会感激您的想法!

1 个答案:

答案 0 :(得分:1)

你不能只使用corr,它使用pearson作为默认方法:

table.corr()

例如:

np.random.seed(0)

>>> pd.DataFrame(np.random.randn(5, 5)).corr()
          0         1         2         3         4
0  1.000000  0.029861  0.077225  0.905577 -0.254004
1  0.029861  1.000000 -0.548770 -0.394760 -0.868972
2  0.077225 -0.548770  1.000000  0.297952  0.819027
3  0.905577 -0.394760  0.297952  1.000000  0.129641
4 -0.254004 -0.868972  0.819027  0.129641  1.000000