从 CSV 文件创建 Networkx 图表

2024-02-25

我正在尝试构建一个 NetworkX 社交网络图CSV file https://github.com/MelissaLaurino/DolphinSocialNetwork_Laurino/blob/master/test.csv。我正在使用 Networkx 2.1 和 Python 3

我跟着这个帖子 https://stackoverflow.com/questions/43561944/how-to-create-graph-using-networkx-from-text-file没有运气,因为我不断收到错误:

AttributeError: 'list' object has no attribute 'decode'

我的目标是使重量越高的重量显示出更厚的边缘。

到目前为止,这是我的代码:

import networkx as nx
import csv

Data  = open('testest.csv', "r", encoding='utf8')
read = csv.reader(Data)
Graphtype=nx.Graph()   # use net.Graph() for undirected graph

G = nx.read_edgelist(read, create_using=Graphtype, nodetype=int, data=(('weight',float),))

for x in G.nodes():
      print ("Node:", x, "has total #degree:",G.degree(x), " , In_degree: ", G.out_degree(x)," and out_degree: ", G.in_degree(x))   
for u,v in G.edges():
      print ("Weight of Edge ("+str(u)+","+str(v)+")", G.get_edge_data(u,v))

nx.draw(G)
plt.show()

有没有更简单的方法来解决这个问题?数据比较简单。

感谢您的帮助!


你滥用了这个功能read_edgelist。来自文档 https://networkx.github.io/documentation/stable/reference/readwrite/edgelist.html,每一行需要解析一个字符串,而csv.reader将输入文件中的行解析为字符串列表(例如,202,237,1 -> ['202', '237', '1'])。所以,AttributeError被提出是因为read_edgelist正在尝试解析由提供的列表csv.reader,而它们应该是字符串。

我们可以正确解析输入文件中的图形,而无需使用csv模块。但是,我们仍然需要处理输入文件的第一行(标题),不应对其进行解析。有两种方法。第一种方法使用跳过第一行next:

Data = open('test.csv', "r")
next(Data, None)  # skip the first line in the input file
Graphtype = nx.Graph()

G = nx.parse_edgelist(Data, delimiter=',', create_using=Graphtype,
                      nodetype=int, data=(('weight', float),))

第二种方法有点“hacky”:因为第一行以target,我们标记这个字符t作为输入文件中注释的开头。

Data = open('test.csv', "r")
Graphtype = nx.Graph()

G = nx.parse_edgelist(Data, comments='t', delimiter=',', create_using=Graphtype,
                      nodetype=int, data=(('weight', float),))

在这两种方法中,我们都必须使用parse_edgelist代替read_edgelist因为输入文件使用\r对于换行符。使用read_edgelist,文件需要以二进制模式打开,其行被分割 iff换行符是\r\n or \n https://docs.python.org/3/library/io.html#io.IOBase.readline。因此输入文件\r换行符无法分割成行,因此无法正确解析。

另外,由于您想找到入度和出度,因此应使用以下命令创建图表DiGraph, not Graph.

Edit

这里的关键点是跳过输入文件中的标头。我们可以通过首先将输入文件读入pandas.DataFrame,然后我们将其转换为图表。

import networkx as nx
import pandas as pd

df = pd.read_csv('test.csv')
Graphtype = nx.Graph()
G = nx.from_pandas_edgelist(df, edge_attr='weight', create_using=Graphtype)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 CSV 文件创建 Networkx 图表 的相关文章

随机推荐

  • 使用 Python 加载 SQL_VARIANT 数据类型时出错

    我正在使用 Python 2 7 和 SQLAlchemy 0 7 8 来查询我没有创建的数据库 我在查询包含以下内容的表时遇到问题SQL VARIANT数据类型 我收到错误 sqlalchemy exc DBAPIError 错误 ODB
  • Flutter如何检测设备语言?

    我有一个问题 如何检测设备语言 并据此在应用程序最初启动时给出正确的语言 如果可能 请提供带有代码的示例 Calling Localizations localeOf context languageCode应该返回你的语言代码 如果未提供
  • 如果用户在浏览器中禁用了 JavaScript,如何使用不同的 CSS 样式表?

    我正在为某人开发一个网站 我使用的 CSS 样式需要 JavaScript 用于小屏幕上下拉导航栏的按钮 如果用户启用了 JavaScript 我如何使用一种样式表 如果用户禁用 JavaScript 我如何使用另一种样式表 有两种方法可以
  • 如何以良好的方式使用 SQL NULL 值和 JSON?

    Go 类型如Int64 and String不能存储空值 所以我发现我可以使用sql NullInt64 https golang org pkg database sql NullInt64 and sql NullString http
  • 在发布模式下未针对异步方法调用 IDisposable.Dispose()

    我在 VS2015 1 上使用 NET 4 6 1 在 VB NET 14 中编写了以下 WPF 示例应用程序 Class MainWindow Public Sub New InitializeComponent End Sub Priv
  • 除法结果不正确

    我有一个时间计算器 多年来一直运行良好 然而 一直困扰我的一件事是 如果使用小数秒 结果将成为浮点 错误 的牺牲品 所以 我最近改用这个 BigDecimal 库 https github com dtrebbien BigDecimal
  • 使用 FCM 向订阅主题的所有设备(批量)发送推送通知时出现扩展问题

    我已将所有设备订阅了一个主题 即约100万用户 当设备收到通知时 会有一个调用 REST API 的操作按钮 现在 如果我向订阅特定主题的所有设备触发通知 所有用户都会收到通知并点击操作按钮 该按钮将调用其余 API 来获取数据 太多的 R
  • 从 ClearCase 快照中删除文件的“正确”方法是什么?

    当我从快照视图中删除文件时 下次在 ClearCase Explorer 中查看快照时 它会显示 已签出但已删除的图标 当我在快照上运行 查找修改的文件 时 不会显示已删除的文件 在快照上运行 更新视图 会导致 ClearCase 将丢失的
  • 如何将表从转储恢复到数据库?

    我使用 pg dump 创建表转储 pg dump h server1 U postgres t np points gisurfo gt D np point sql 当我进入 psql 并说 f D np point sql 但获取标准
  • 从多个线程中选择同一个文件描述符

    如果我打电话会发生什么select来自多个线程的同一个打开的文件描述符 这有记录在某处吗 根据POSIX 2008select http pubs opengroup org onlinepubs 9699919799 functions
  • 复选框和单选按钮

    复选框是否有权像单选按钮一样工作 我正在开发一个测验应用程序 其中选项具有单选按钮的行为 并且选项的图标像复选框一样 我是否可以将复选框分组为我们将单选按钮分组 如果您想要看起来像复选框的单选按钮 将RadioButton的样式设置为 an
  • GNU Flex 库 libfl 提供什么?

    我可以从 flex 和 bison 生成的文件编译一个程序 cc lex yy c program tab c o output 也由 cc lex yy c program tab c lfl o output 它们都运行顺利 没有任何问
  • 通过 GenericEntity> 在 RESTful Response 对象中使用 Java 泛型模板类型

    我有一个通用的 JAX RS 资源类 并且我已经定义了一个通用的findAll method public abstract class GenericDataResource
  • 为什么Complete输出模式需要聚合?

    我在 Apache Spark 2 2 中使用最新的结构化流处理并遇到以下异常 org apache spark sql AnalysisException 完整输出模式不 当流上没有流聚合时支持 数据框 数据集 为什么完整输出模式需要流式
  • 禁止访问消息以防止从 Excel 重复导入

    我正在将数据从 Excel 导入到 Access 中的现有表中 并希望抑制以下消息 我尝试使用多字段索引将新记录导入表中 并且还尝试首先导入临时表 然后将新记录附加到现有表中 然而 在这两种情况下 它仍然会弹出以下消息 我想避免用户看到该消
  • 使用 Linq 查询 Xml 文件中的记录

    以下是我的 xml 文件 我必须为每个页面和每个类型获取以逗号分隔的字符串提到的字段 请帮助了解如何继续使用 Linq 示例 如果我想为 page1 定义 Type customFields 则必须以逗号分隔输出 项目ID 员工ID 员工姓
  • 同一个Python解释器实例同时运行多个脚本?

    6 7 年前 我看到了一种在资源紧张的 env 上运行 python 的倡议 只需运行解释器一次 同时允许多个脚本同时使用它 这个想法是节省解释器启动开销并节省 RAM 是否存在类似的东西 这个问题Python 从同一个解释器同时执行多个脚
  • Scanf 漏行

    我编写了一个测试程序 它应该接受 3x3 字符矩阵并输出输入的矩阵 但是 我必须输入 4 行才能让程序生成相应的矩阵 我已经查找了 scanf 函数的问题 但我尝试过的解决方案似乎都不起作用 你能帮我解决这个问题吗 My code incl
  • Paramiko Python:IOError:[Errno 13]权限被拒绝

    问题 我可以做类似的事情吗 self sftp put sourceFilePath final destination use sudo True 我可以创建文件夹 但不能创建文件 我需要显式调用 sudo 或在 paramiko 中设置
  • 从 CSV 文件创建 Networkx 图表

    我正在尝试构建一个 NetworkX 社交网络图CSV file https github com MelissaLaurino DolphinSocialNetwork Laurino blob master test csv 我正在使用