如何从边缘列表中提取巨型组件的节点?

How can I extract the nodes of the giant component from edges list?

我想从 Gephi 图中提取 Giant 组件。我目前正在处理一个太大的图表,无法使用 Gephi 自己的巨型组件功能,Gephi 只是冻结。所以我现在的问题是,我只想从我的 edges.csv 文件中提取巨型组件中的节点,以便能够删除巨型组件中未包含的所有节点,从而使 Gephi 文件更小且易于管理.

我想使用 Python 解决这个问题,我知道 python 有一个名为 networkx 的库,我的问题可以通过 networkx 轻松解决吗? 我的 edges.csv 的格式是:

source, target, weight
nodeA, nodeB, 1
nodeA, nodeC, 1
nodeA, nodeD, 1
nodeB, nodeA, 1
nodeD, nodeB, 1

您可以从 pandas DataFrame 中读取图表并使用 connected_component_subgraphs 函数 (see docs) 将图表拆分为连接的组件,然后从中获取最大的组件。

阅读您的图表并制作 networkx 图表的示例

edge_list_df = pd.read_csv('edges.csv')
g =  nx.pandas_edgelist(edge_list_df,source='source',
                        target='target',edge_attr='weight')

获取连通分量和最大的示例

component_subgraph_list = list(nx.connected_component_subgraphs(g))
largest_component = max(component_subgraph_list,key=len)