【发布时间】:2021-01-26 19:35:34
【问题描述】:
我有一个大数据,其中包含作为索引的样本和作为标题的名称 (500 X 30000)。 例如:
Name1 Name2 Name3
Sample1 232.12 0.239 -0.324
Sample2 0.928 23.213 -0.056
Sample3 -0.231 7.7776 -0.984
我想得到什么:
Name1 Name2 Name3
Name1 1 0.001 corr val
Name2 corr val 1 corr val
Name3 corr val corr val 1
等等。
我想过:
np.corrcoef(data)
但它只是“pearsons”,而且我收到一个错误,声称数据很大。
我试过拆分
lst = []
data = For_spearman.to_numpy()
#data = np.delete(data, (0), axis=0)
data_size = len(data)-1
for key1 in range(1, data_size): #Ignoring first column which is index
if key1 != data_size-1: # Cant compare after the last row, so -1 and -1.
for key2 in range(key1+1 ,data_size): # Comparing name1 vs name2
test = scipy.stats.spearmanr(data[key1][1:], data[key2][1:])
lst .append([data[key1][0], data[key2][0], test])
pd.DataFrame(lst ).to_csv('ForSpearman.csv')
但我只是弄得一团糟,因为我总是被 nd.array 以某种方式纠结.. 我怎样才能做“np.corrcoef”的工作,但以“spearman”的方式并将其拆分,以便每次都会将一个数组与另一个数组进行比较?
【问题讨论】:
-
是
df.corr(method='spearman')吗? -
对数据框来说是的,但如果我这样做,我会得到一个错误:ValueError: array is too big; arr.size * arr.dtype.itemsize 大于最大可能大小。
-
哈哈,即使我的桌面有 16 个,我也无法运行它(已编辑,数据的实际大小是多少)
标签: pandas correlation numpy-ndarray