[실습] 데이터 읽기 :: Python 네트워크 분석 - mindscale
Skip to content

[실습] 데이터 읽기

import networkx as nx

NetworkX는 다양한 형식의 파일에서 그래프를 읽거나 쓸 수 있다. 자세한 내용은 링크를 참고.

인접 리스트 형식

인접 리스트(adjacency list)는 가장 단순한 그래프 저장 형식으로서 단순한 텍스트 파일이다.

만약 노드 1에서 노드 2와 노드 3으로 가는 에지가 있다면 파일에 다음과 같은 행을 추가한다.

1 2 3

github.adj 파일을 다운로드 받아, 메모장 등으로 열어서 첫 줄을 보면 다음과 같다.

lines = open('github.adj').readlines()
lines[0]
'u1 u3124 u1814 u5888 u9483 u1527 u9271 u8196 u2653 u4534 u2253 u127 u3071 u3166\n'

읽기

github.adj 파일을 그래프로 읽어들이려면 다음과 같이 한다.

G = nx.read_adjlist('github.adj')

방향 그래프로 읽으려면 create_using=nx.DiGraph를 추가한다.

D = nx.read_adjlist('github.adj', create_using=nx.DiGraph)

u1 노드의 후속 노드들을 확인한다.

list(D.successors('u1'))
['u3124',
 'u1814',
 'u5888',
 'u9483',
 'u1527',
 'u9271',
 'u8196',
 'u2653',
 'u4534',
 'u2253',
 'u127',
 'u3071',
 'u3166']

쓰기

nx.write_adjlist(D, 'github2.adj')