파이썬으로 네트워크 그리기

다음 학기 TA 때문에 요즘 파이썬을 공부하고 있는데, 요 며칠간 파이썬에 갑자기 빠지는 바람에 블로깅 할 생각이 안 들었다. 파이썬은 간단한 코딩이 가능하다는 것과 다양한 확장팩(?)이 있다는 것이 정말 큰 장점인듯. numpyscipynetworkxmatplotlib 이런 패키지들을 흥미롭게 만져보고 있다.

이 밑에 있는 동영상이 며칠간 혼자 뚝딱거리면서 처음으로 그려본 것이다. (HD를 켜고 보시길)

사용한 데이터는 “MSNBC.com Anonymous Web Data Data Set“라는 것으로 1999년도에 MSNBC.com의 방문자가 페이지를 어떻게 돌아다니나를 저장해 놓은 텍스트 파일이다. 사이트의 페이지는 17종류로 구분되어 있다. (메인, 뉴스, 과학/기술, 지역, 사설, 생방송, 기타, 날씨, MSN 뉴스, 건강, 리빙, 비지니스, MSN 스포츠, 스포츠, 요약, 게시판, 여행)

약 100만개 가량의 데이터가 아래와 같은 형식으로 들어있다.

1 1
2
3 2 2 4 2 2 2 3 3
5
1
6
1 1
6
6 7 7 7 6 6 8 8 8 8

위에 있는 동영상은 이동평균값을 기준으로 만든 것이고, 전체 100만개 데이터를 모두 평균 내어 그린 그림은 아래와 같다.

network_viz
(오른쪽 밑에 "# Visitor: 0"은 신경쓰지 마시길)

얼핏보고 들었던 생각:

  • 역시 메인 화면이 짱임.
  • 전체적으로 허브 구조. 메인 화면과 (뉴스, 비지니스, 생방송, 스포츠, 지역, 기타) 페이지들이 강하게 연결되어 있음.
  • MSN 스포츠는 일반 스포츠와 나름 관계가 보이는데, MSN 뉴스는 일반 뉴스 페이지와 거의 전혀 관계가 없는 듯.
  • 날씨는 따로 동떨어져 있지만, 또 다른 날씨 페이지로의 클릭은 많이 유발하는 듯.
  • 기타 등등

혹시 동영상 안의 범례를 옮겨 적자면, (선의 굵기, 점의 크기, 점의 색깔의 진하기) = (얼마나 많은 사용자가 지나갔는지, 얼마나 많은 사용자가 방문했는지, 내부적으로 도는 링크의 비율) 이다.

코드가 워낙 개차반이라 올릴 생각은 안 듭니다만, 공부 삼아 보고 싶은 분 있으면 댓글 남겨주세요. (사용한 패키지: networkx, matplotlib, numpy)

7 thoughts on “파이썬으로 네트워크 그리기”

  1. 진짜 인상적입니다!
    이런걸 분석할 수 있다니..
    이런 데이터만 잘 모아서 분석해도 아주 좋은 뭔가가 만들어질 것 같은 생각이 듭니다.
    잘봤습니다.

  2. 그러게요. visualization 할 때 좋은 데이터 구하는 것이 가장 중요한 단계인 것 같습니다. 재미있게 보셨다니 좋네요. 🙂

  3. 앞으로 좋은 article 많이 기대할께요. 정말 잘 하시네요.
    Twitter 시대정신도 넘 좋았어요^^. 홧팅.

  4. 이제 막 파이썬 책 몇장 넘기고, 뭐가 그리 좋은가하고 검색해서 들어왔는데 정말 내가 생각했던것 이상입니다. 데이터 분석쪽에도 관심있고, 공부도 할겸 코드 좀 부탁드립니다. ^^

Comments are closed.