Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

unable to load a simple csv in networkx in Python

I am a complete noobie in Python, and I would like to study a dataset using the networkx package. I do not understand what is wrong here:

I have a csv which looks like this (extract):

['152027', '-6167']
['152027', '-4982']
['152027', '-3810']
['152027', '-2288']
['152027', '-1253']
['152100', '-152100']
['152100', '-86127']

lets call this .csv file nodes. Numbers heres have no particular meanings. They are just anonymised names: so 152027 is a person that is connected to individual -6167, individual -4982, etc.

I use the following code in Python

import csv
import networkx as nx

file = csv.reader(open('nodes', 'rb'), delimiter=',')

G=nx.read_edgelist(file, delimiter=',',nodetype=float,encoding='utf-8')
G.number_of_nodes()

and I get the sad Out[71]: 0 I do not understand what is wrong here. Could you please help me?

like image 883
ℕʘʘḆḽḘ Avatar asked Mar 31 '14 17:03

ℕʘʘḆḽḘ


1 Answers

nx.read_edgelist expects the first variable to be a file handle or filename string, not a csv.reader object.

Don't use csv at all; try just

G = nx.read_edgelist('nodes', delimiter=',', nodetype=int, encoding="utf-8")

Edit: if you need to skip a header line, you could do

with open('nodes', 'rb') as inf:
    next(inf, '')   # skip a line
    G = nx.read_edgelist(inf, delimiter=',', nodetype=int, encoding="utf-8")
like image 184
Hugh Bothwell Avatar answered Sep 28 '22 02:09

Hugh Bothwell