【问题标题】:How to import csv format Adjacency Matrix hashtag network in CSV file?如何在 CSV 文件中导入 csv 格式的邻接矩阵主题标签网络?
【发布时间】:2021-01-23 15:28:19
【问题描述】:

我的标签共现网络以 CSV 格式存储为邻接矩阵。

,#A,#B,#C,#D,#E,#F,#G,#H,#I,#J,#K
#A,0,1,1,0,1,1,1,1,0,1,0
#B,1,0,0,0,1,1,1,1,0,1,0
#C,1,0,0,0,1,1,1,1,0,1,0
...

那我用这个页面作为参考Plot NetworkX Graph from Adjacency Matrix in CSV file

我想把这个矩阵导入networkx,我试过了:

import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
from numpy import genfromtxt
import numpy as np

mydata = genfromtxt('data.csv', delimiter=',')

但我只得到了这个:

print(mydata)
print(type(mydata))

[nan nan]
<class 'numpy.ndarray'>

如何正确导入我的数据,我想使用python管道计算网络中每个节点的度中心性。导入是第一步。

【问题讨论】:

    标签: python numpy csv networkx


    【解决方案1】:

    numpy.genfromtxt 函数有一个名为 cmets 的可选参数,默认设置为 "#"

    comments : str, optional
        The character used to indicate the start of a comment.
        All the characters occurring on a line after a comment are discarded
    

    换句话说,numpy 认为您的整个文件包含 cmets 和空行。 您必须重命名行和列标识符,或者必须将 cmets 参数设置为其他值,例如 "*"

    【讨论】:

      【解决方案2】:

      您可能会发现将.csv 文件读入pandas 数据框并从中创建图表要简单得多,包括节点名称直接使用:

      import pandas as pd
      
      df = pd.read_csv(s, sep=',')
      G = nx.from_pandas_adjacency(df)
      

      使用上述数据框运行示例:

      from io import StringIO
      s = StringIO('''
      #A,#B,#C,#D,#E,#F,#G,#H,#I,#J,#K
      #A,0,1,1,0,1,1,1,1,0,1,0
      #B,1,0,0,0,1,1,1,1,0,1,0
      #C,1,0,0,0,1,1,1,1,0,1,0
      ''')
      
      df = pd.read_csv(s, sep=',')
      G = nx.from_pandas_adjacency(df)
      G.edges()
      # EdgeView([('#A', '#B'), ('#A', '#C')]) 
      

      数据框已被剪裁到第 3 列,因为数据框必须是方形的。但希望您能看到这种方式会变得更加容易。

      【讨论】:

      • 我试图将矩阵读入数据框,但出现了我无法理解的错误。 KeyError: 'None of [RangeIndex(start=0, stop=1683, step=1)] are in the [columns]' 在处理上述异常期间,发生了另一个异常:NetworkXError ('Columns must match Indices.', '我的矩阵是 1683x1683 矩阵,我猜可能是 df 形状不是正方形
      • 您确定您的 csv 看起来像您共享的内容吗?所以我的s 字符串? @HelixHerry
      • 我没有使用StringIO,是不是必须先使用StringIO才能读取csv?
      • 那只是为了模拟csv场景。就好像我的 s 是您的 csv 文件位置 @helix
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-28
      • 2015-06-16
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多