如何从数据框中制作树状图

6

我正在尝试查找使用Python的PANDAS包创建的数据框的树状图。下面显示了一个示例数据。

import numpy as np
from pandas import *
import matplotlib.pyplot as plt
from hcluster import pdist, linkage, dendrogram
from numpy.random import rand

Index= ['aaa','bbb','ccc','ddd','eee']
Cols = ['A', 'B', 'C','D']
df = DataFrame(abs(np.random.randn(5, 4)), index= Index, columns=Cols)


>>> df
            A         B         C         D
aaa  0.987415  0.192240  0.709559  0.317106
bbb  0.856932  0.252441  1.183127  0.712855
ccc  1.687198  0.462673  1.046469  0.159287
ddd  0.977152  2.657582  0.491975  0.027280
eee  0.120464  0.945034  0.142658  0.537024
>>> 

X = df.T.values #Transpose values 
Y = pdist(X)
Z = linkage(Y)
dendrogram(Z)

上述代码生成了谱系图,但缺少列名。如何跟踪相同的内容。

1
当你仅使用“values”时,列名会消失。我从未使用过树状图,但在快速浏览其文档后,我建议尝试:dendogram(Z,labels = df.T.columns)。 - Wouter Overmeire
谢谢。我明白了。dendrogram(Z, labels = df.columns) 对我有用。 - Curious
2
如果有人发现现在有Python 3.x兼容版本,请使用以下代码:from scipy.spatial.distance import pdistfrom scipy.cluster.hierarchy import linkage, dendrogramhcluster自2008年以来就没有更新了,现在的聚类工具在scikit中。 - mac
1个回答

5

正如@Wouter Overmiere所建议的那样,以下方法适用于我。

X = df.T.values #Transpose values 
Y = pdist(X)
Z = linkage(Y)
dendrogram(Z, labels = df.columns)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接