我的代碼如下應該使用Networkx,Pandas和來自CSV文件的數據打印圖形/網絡。該代碼是(networkx3.py) -Python Networkx和熊貓庫不工作
import csv
import matplotlib.pyplot as plt
import pandas as pd
import networkx as nx
g = nx.Graph()
csv_dict = pd.read_csv('Book1.csv', index_col=[0])
csv_1 = csv_dict.values.tolist()
ini = 0
for row in csv_1:
for i in row:
if type(row[i]) is str:
g.add_edge(ini, int(i), conn_prob=(float(row[i])))
max_wg_ngs = sorted(g[ini].items(), key=lambda e: e[1]["conn_prob"], reverse=True)[:2]
sarr = [str(a) for a in max_wg_ngs]
print "Neighbours of Node %d are:" % ini
#print(max_wg_ngs)
for item in sarr:
print ''.join(str(item))[1:-1]
ini += 1
pos = nx.spring_layout(g, scale=100.)
nx.draw_networkx_nodes(g, pos)
nx.draw_networkx_edges(g, pos)
nx.draw_networkx_labels(g, pos)
#plt.axis('off')
plt.show()
在CSV文件中的數據(Book1.csv) -
,1,2,3,4,5,6,7,8,9,10
1,0,0.257905291,0.775104118,0.239086843,0.002313744,0.416936603,0.194817214,0.163350301,0.252043807,0.251272559
2,0.346100279,0,0.438892758,0.598885794,0.002263231,0.406685237,0.523850975,0.257660167,0.206302228,0.161385794
3,0.753358102,0.222349243,0,0.407830809,0.001714776,0.507573592,0.169905687,0.139611318,0.187910832,0.326950557
4,0.185342928,0.571302688,0.51784403,0,0.003231018,0.295197533,0.216184462,0.153032751,0.216331326,0.317961522
5,0,0,0,0,0,0,0,0,0,0
6,0.478164621,0.418192795,0.646810223,0.410746629,0.002414973,0,0.609176897,0.203461461,0.157576977,0.636747837
7,0.24894327,0.522914349,0.33948832,0.316240267,0.002335929,0.639377086,0,0.410011123,0.540266963,0.587764182
8,0.234017887,0.320967208,0.285193773,0.258198079,0.003146737,0.224412057,0.411725737,0,0.487081815,0.469526333
9,0.302955306,0.080506624,0.261610132,0.22856311,0.001746979,0.014994905,0.63386228,0.486096957,0,0.664434415
10,0.232675407,0.121596312,0.457715027,0.310618067,0.001872929,0.57556548,0.473562887,0.32185564,0.482351246,0
代碼但不起作用。我不明白我要去哪裏錯了。錯誤是 -
Traceback (most recent call last):
File "networkx3.py", line 13, in <module>
if type(row[i]) is str:
TypeError: list indices must be integers, not float
我不想修改CSV文件或其數據。索引列和標題應該被忽略。
我以前問過這個問題,但我沒有得到滿意的答案。任何人都可以幫忙嗎?
提前致謝:)(使用Ubuntu 14.04 32位虛擬機。致信@Adonis幫助創建原始代碼)
你有'爲我行'。通過這個循環第一次,你認爲'i'的價值是什麼?也許嘗試打印它是肯定的。接下來的問題是,你爲什麼期望'row [i]'在下一行有意義 - 你假設'i'的值在那個語句中?提示 - 錯誤消息告訴你列表索引不是一個整數。在這個聲明中,唯一使用像列表索引那樣的東西是什麼? – Joel
感謝您回覆@Joel。我實際上是Python的新手,因此我不知道很多。我不明白你先前給出的提示。但我嘗試打印'i',它們的值來自CSV文件。 – user136819
所以希望你已經意識到'i'是你期望'row [i]'的意思。 – Joel