2017-09-14 99 views
0

我需要一個CSV文件像這樣的CSV熱圖Networkx邊列表

,A,B,C 
B,0,0.25,1.3 
D,,, 
C,,0.75,1 

其中A,B,C,和d都是節點和值它們是如何緊密關聯。正如你所看到的,我的輸入csv不是一個鄰接矩陣,每個軸上的節點也不一定是相同的。

想法是將csv轉換爲基於閾值的加權邊緣列表。例如,對於0.3的門檻,將上述CSV將返回:

C B 1.3 
B C 0.75 
C C 1 

我是相當新的蟒蛇,我不知道如何去這樣做。我已經能夠從鄰接矩陣生成圖表,但是,我分析的數據不再那麼幹淨,我的代碼也不能再處理它了。

回答

0

這是我想出了

with open(my_csv_file) as f: 
    s = f.read() 
    lines = [] 
    row_headings = [] 
    edge_list = [] 
    for row, line in enumerate(s.split('\r\n')): 
     lines.append(line) 
     line_val = line.split(',') 
     row_headings.append(line_val[0]) 
     col_headings = (lines[0].split(',')) 
     for col, val in enumerate(line.split(',')): 
      try: 
       if float(val) > threshold: 
        edge_list.append((col_headings[col], row_headings[row])) 
      except ValueError: 
       pass 

DG = nx.DiGraph()   
my_graph = nx.from_edgelist(edge_list, create_using=DG)