如何在 CSV 文件中导入 csv 格式的邻接矩阵标签网络?

How to import csv format Adjacency Matrix hashtag network in CSV file?

我的标签共现网络存储为 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
...

那我就用这个页面作为参考

我想将这个矩阵导入到 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 管道计算每个节点的度中心性 network.And 导入是第一步。

您可能会发现将 .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 列,因为数据框必须是方形的。但希望你能明白这种方式会如何变得更容易。

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

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 认为您的整个文件都包含注释和空行。 您将不得不重命名您的行和列标识符,或者您必须将评论参数设置为其他值,例如 "*"