目标
从连接数据集(科幻作者及其影响)中提取节点集合
代码
#打开csv文件,调用函数增加两个节点
import csv
nodemap={} #定义空的hashmap
def addNode(name): #添加节点的函数
if name in nodemap:
node=nodemap[name]
node["count"]+=1
else:
node ={"nodeid":name,"count":1}
nodemap[name]=node
return
with open ("SciFiWriters.txt","r",errors='ignore') as inputfile:
datareader = csv.reader(inputfile,delimiter="\t") #限定符为制表符"\t"
next(datareader,None) #跳过开头的一行
for row in datareader:#搜索每一行,增加源节点和目标节点
addNode(row[0])
addNode(row[1])
with open("nodes.txt","w",newline="") as nodefile: #写节点
formatter=csv.writer(nodefile,delimiter="\t")
formatter.writerow(["Id","Count"])
for name in nodemap:
node=nodemap[name]
formatter.writerow([node["nodeid"],node["count"],])
遇到的问题
1.运行时出现以下错误
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 0: invalid continuation byte
2.将数据导入Gephi时预览未出现标签而概览有标签,同时节点之间没有边
解决方法
1.读文件时,在open里添加errors=‘ignore’,如下
with open ("SciFiWriters.txt","r",errors='ignore') as inputfile:
2.对于标签问题,是因为在数据集中,Label为空,需要将Id的值再复制粘贴给Label,如下
对于边没有显示的问题,是我对Gephi还不熟悉,只导入了节点数据,忘记导入边数据集了(尴尬
效果