【问题标题】:CSV to adjacency matrixCSV 到邻接矩阵
【发布时间】:2019-04-26 13:15:48
【问题描述】:

我正在尝试可视化我使用 python 和 bokeh 获得的一些数据,但它没有成功。它是一个 .csv 文件,看起来像这样,只有更多的行和值:

;A;B;C;DA;0;0;1;2;B;0;3;0;0;C;0;0;0;1;D;1;0;2;0

我尝试了一些东西,但并没有让我走得更远,现在我有点卡住了。

我试着用这个来列出清单:

import csv

with open('coauth.csv', 'r') as f:
  reader = csv.reader(f)
  your_list = list(reader)

print(your_list)

然后它会输出一个像这样的嵌套列表:

[[';A;B;C;D'], ['A;0;0;1;2'], ['B;0;3;0;0']...

等等。

如果输出可以是这样的就好了:

{ 'A' : [0, 0, 1, 2], 'B' : [0, 3, 0, 0],... }

是否有人知道我应该如何处理它,也许还有关于如何进一步使用可视化的想法?

【问题讨论】:

  • 你想得到什么输出?
  • 如果它可以是这样的就好了:{ 'A' : [0, 0, 1, 2], 'B' : [0, 3, 0, 0],. .. }
  • 您可以使用字典理解来获得该输出。
  • 最好将您的预期输出添加到您的问题中,以便其他人可以轻松看到它。

标签: python csv adjacency-matrix


【解决方案1】:

您可能希望将其转换为实际矩阵,例如使用numpy。似乎列表列表中的第一个列表为您提供了列的节点,然后每个后续列表中的第一个值是每一行的节点。您可以按; 拆分每个列表,然后选择不是节点名称(A、B 等)的值并将它们作为一行存储在矩阵中,以便您的矩阵看起来像

import numpy as np

# Numpy matrix, or array of a list of lists
np.array([[0,0,1,2],
          [0,3,0,0],
          [0,0,0,1],
          [1,0,2,0]])

根据您的评论,您可以执行以下操作

split_list = [row.split(';') for sublist in your_list for row in sublist]

your_dict = {row[0]: row[1:] for row in split_list[1:]}

#Output
{'A': ['0', '0', '1', '2'], 'B': ['0', '3', '0', '0']}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-06
  • 1970-01-01
  • 2015-10-28
  • 1970-01-01
  • 2022-11-15
相关资源
最近更新 更多