python networkx 画关系网络图并计算中心点指标(导入CSV,txt数据;导出数据excel)

本文主要是介绍python networkx 画关系网络图并计算中心点指标(导入CSV,txt数据;导出数据excel),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

利用networkx计算社会网络中的各指标,包括中介中心度,邻近中心度、和度中心度。代码都是参考附录中的参考链接,经过修改之后包含数据的导入、建网络、画图、计算中心性指标,并且讲计算的中心性指标数据导出到excel表中。复杂的代码基本删除了,就不一一介绍了,直接附代码。


一、数据准备

节点表导入了csv文件(node test.csv)
在这里插入图片描述
边表导入了txt文件(2007 edge.txt)
在这里插入图片描述

二、导入csv、txt文件

代码如下:

import csvwith open('node test.csv','rt') as csvfile:reader = csv.DictReader(csvfile)column = [row['id'] for row in reader]
print (column)edge = []
with open('2007 edge.txt','r') as f:  data = f.readlines()  for line in data:#print (line)line = tuple(line.replace('\r','').replace('\n','').replace('\t','').split(','))edge.append(line)
print (edge)

三、画网络图

代码如下:

import networkx as nx 
import matplotlib.pyplot as plt
G = nx.DiGraph()
G.add_nodes_from(column)
G.add_weighted_edges_from(edge)nx.draw_networkx(G,pos=nx.spring_layout(G),node_size=20,node_shape='o',width=1,style='solid',font_size=8) plt.show()
#print ( G.nodes())

四、计算中心度

代码如下:

###计算统计指标#计算中介中心度
print("Betweenness centrality")
b = nx.betweenness_centrality(G)
for v in G.nodes():#print("%s %0.6r" % (v, b[v])) # %s字符串,%0.6r浮点数子6print(v, b[v])
#计算度中心度
print("Degree centrality")
d = nx.degree_centrality(G)
for v in G.nodes():print(v, d[v])
#计算紧密中心度
print("Closeness centrality")
c = nx.closeness_centrality(G)
for v in G.nodes():print(v, c[v])

五、中心度指标导出到Excel表中

代码如下:

import xlwt##导出到excel表格中#创建Workbook,相当于创建Excel
xls = xlwt.Workbook(encoding='utf-8')
#创建sheet,Sheet1为表的名字,cell_overwrite_ok为是否覆盖单元格
sheet = xls.add_sheet('sheet1', cell_overwrite_ok=True)
# 创建的文件夹,用来写入处理后的数据file = "D:\data\python\py2021815\data2017.xls"#向表中添加数据
sheet.write(0, 0,'id')
sheet.write(0, 1, "Betweenness centrality")
sheet.write(0, 2, "Degree centrality")
sheet.write(0, 3, "Closeness centrality")
m = 1
for v in G.nodes():sheet.write(m,0,v)sheet.write(m, 1, b[v])sheet.write(m, 2, d[v])sheet.write(m, 3, c[v])m = m + 1
# 保存到excel中
xls.save(file)

注意:文件保存路径和表格命名都不要使用数字开头。

六.完整代码

代码如下:

import networkx as nx 
import matplotlib.pyplot as plt
import csv
import xlwtwith open('node test.csv','rt') as csvfile:reader = csv.DictReader(csvfile)column = [row['id'] for row in reader]
#print (column)edge = []
with open('2007 edge.txt','r') as f:  data = f.readlines()  for line in data:#print (line)line = tuple(line.replace('\r','').replace('\n','').replace('\t','').split(','))edge.append(line)
#print (edge)G = nx.DiGraph()
G.add_nodes_from(column)
G.add_weighted_edges_from(edge)nx.draw_networkx(G,pos=nx.spring_layout(G),node_size=20,node_shape='o',width=1,style='solid',font_size=8) plt.show()
#print ( G.nodes())###计算统计指标#计算中介中心度
print("Betweenness centrality")
b = nx.betweenness_centrality(G)
for v in G.nodes():#print("%s %0.6r" % (v, b[v])) # %s字符串,%0.6r浮点数子6print(v, b[v])
#计算度中心度
print("Degree centrality")
d = nx.degree_centrality(G)
for v in G.nodes():print(v, d[v])
#计算紧密中心度
print("Closeness centrality")
c = nx.closeness_centrality(G)
for v in G.nodes():print(v, c[v])##导出到excel表格中#创建Workbook,相当于创建Excel
xls = xlwt.Workbook(encoding='utf-8')
#创建sheet,Sheet1为表的名字,cell_overwrite_ok为是否覆盖单元格
sheet = xls.add_sheet('sheet1', cell_overwrite_ok=True)
# 创建的文件夹,用来写入处理后的数据file = "D:\data\python\py2021815\data2017.xls"#向表中添加数据
sheet.write(0, 0,'id')
sheet.write(0, 1, "Betweenness centrality")
sheet.write(0, 2, "Degree centrality")
sheet.write(0, 3, "Closeness centrality")
m = 1
for v in G.nodes():sheet.write(m,0,v)sheet.write(m, 1, b[v])sheet.write(m, 2, d[v])sheet.write(m, 3, c[v])m = m + 1
# 保存到excel中
xls.save(file)

参考链接

Python读取csv的常用方法
【Python】Matplotlib画图(十)——基于networkx画关系网络图
用Python处理txt数据或计算数据将其转存为excel文件

总结

终于搭完了框架,后面要计算改进指标可以方便很多了,但是使用matplotlib画图不好看(具体调节网络图我还没有学…,之前吐槽Gephi不好看,但至少能连接地图,Gephi导出图折磨了我一周,为了能计算改进的指标,安装Neo4j把java给卸载了,现在也不知道还能不能再画图了。)。

这篇关于python networkx 画关系网络图并计算中心点指标(导入CSV,txt数据;导出数据excel)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/688984

相关文章

Conda与Python venv虚拟环境的区别与使用方法详解

《Conda与Pythonvenv虚拟环境的区别与使用方法详解》随着Python社区的成长,虚拟环境的概念和技术也在不断发展,:本文主要介绍Conda与Pythonvenv虚拟环境的区别与使用... 目录前言一、Conda 与 python venv 的核心区别1. Conda 的特点2. Python v

Python使用python-can实现合并BLF文件

《Python使用python-can实现合并BLF文件》python-can库是Python生态中专注于CAN总线通信与数据处理的强大工具,本文将使用python-can为BLF文件合并提供高效灵活... 目录一、python-can 库:CAN 数据处理的利器二、BLF 文件合并核心代码解析1. 基础合

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

java中新生代和老生代的关系说明

《java中新生代和老生代的关系说明》:本文主要介绍java中新生代和老生代的关系说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、内存区域划分新生代老年代二、对象生命周期与晋升流程三、新生代与老年代的协作机制1. 跨代引用处理2. 动态年龄判定3. 空间分