Python 如何从dataframe创建网络图?
我偶然发现这幅代表代表代表投票模式的图像: 据我所知,具有类似投票模式的代表将更靠近图表 假设我有带有Python 如何从dataframe创建网络图?,python,pandas,networkx,Python,Pandas,Networkx,我偶然发现这幅代表代表代表投票模式的图像: 据我所知,具有类似投票模式的代表将更靠近图表 假设我有带有名称、投票和投票id列的表格数据,I)如何从中创建边和节点,ii)如何从这些边和节点创建图形 我想在转换数据后,我需要使用networkx模块,但我不确定如何首先创建连接 如果这是显而易见的,我很抱歉,我只是最近才发现网络分析 一些示例数据(如果有帮助): name vote vote_id 0 A yes 1 1 A
名称
、投票
和投票id
列的表格数据,I)如何从中创建边和节点,ii)如何从这些边和节点创建图形
我想在转换数据后,我需要使用networkx
模块,但我不确定如何首先创建连接
如果这是显而易见的,我很抱歉,我只是最近才发现网络分析
一些示例数据(如果有帮助):
name vote vote_id
0 A yes 1
1 A yes 2
2 B no 1
3 B not voting 2
4 C not voting 1
5 C no 2
6 D yes 1
7 D no 2
您的节点将对应于
名称
属性。然而,对于边缘的w.r.t,你必须做出选择。据推测,边权重是投票模式中相似性的某种度量,但有许多相似性度量可供选择。在你的例子中,余弦相似性可能是最自然的选择。在scipy.spatial.pdist
和scikit learn
中有一些您可以使用的实现。要计算给定名称的投票模式,您需要创建一个长度唯一的vote\u id
向量,并用此人的投票填充它(例如:是:1,未投票:0,否:-1,无:NaN)。然后,您将计算两个这样的投票模式之间的余弦相似性,然后将其用作两个对应名称之间的边的边权重。请注意,您需要正确处理NAN;可以找到一个讨论。@PaulBrodersen,非常感谢。我会调查的!