我正在尝试编写一个函数,该函数采用图形并返回一个 DataFrame,其中第一列是具有最高中心性度量的节点列表,第二列是最高中心性度量的值。

下面附上我的代码,我不知道如何完成它。如何在没有其他功能的情况下找到最高中心性?

def summary(G):
    df = pd.DataFrame()
    dc=nx.degree_centrality(G)
    cc=nx.closeness_centrality(G)
    bc=nx.closeness_centrality(G)
    df['Nodes with the highest centrality measure']= #addcodehere
    df['Value of the highest centrality measure']= #addcodehere
    return df.set_index(['dc','cc','bc'])

最佳答案

你可以这样做:

# Imports and graph creation (you don't need them in your function)
import networkx as nx
import pandas as pd

G = nx.fast_gnp_random_graph(20, 0.1)

创建中心性字典:
cc = nx.closeness_centrality(G)cc 看起来像这样:



然后使用 from_dict 创建数据帧:
df = pd.DataFrame.from_dict({
    'node': list(cc.keys()),
    'centrality': list(cc.values())
})
df 看起来像这样:



然后按中心性降序排序:
df = df.sort_values('centrality', ascending=False)
所以 df 看起来像这样:



并返回结果。完整代码是:
def summary(G):
    cc = nx.closeness_centrality(G)
    df = pd.DataFrame.from_dict({
        'node': list(cc.keys()),
        'centrality': list(cc.values())
    })
    return df.sort_values('centrality', ascending=False)

关于python - 在 Networkx Python 中寻找最高的中心性度量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58388820/

10-12 22:20