说明:
下述代码主函数中生成graph的原始文件Untitled.csv已经丢失,可以根据自己的文件数据类型编写代码生成graph,然后再进行后续的计算即可。
import networkx as nx
import pandas as pd
def k_shell(graph):
importance_dict={}
level=1
while len(graph.degree):
importance_dict[level]=[]
while True:
level_node_list=[]
for item in graph.degree:
if item[1]<=level:
level_node_list.append(item[0])
graph.remove_nodes_from(level_node_list)
importance_dict[level].extend(level_node_list)
if not len(graph.degree):
return importance_dict
if min(graph.degree,key=lambda x:x[1])[1]>level:
break
level=min(graph.degree,key=lambda x:x[1])[1]
return importance_dict
if __name__ == '__main__':
data=pd.read_csv('Untitled.csv',header=0)
#构建图;可以根据自己的文件修改下面的代码
graph=nx.Graph()
data_len=len(data)
for i in range(data_len):
graph.add_edge(data.ix[i]['Source'],data.ix[i]['Target'])
#计算度中心性
print(nx.degree_centrality(graph))
result=k_shell(graph)
print(result)