Top 46 파이썬 네트워크 분석 The 124 New Answer

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 파이썬 네트워크 분석 on Google, you do not find the information you need! Here are the best content compiled and compiled by the toplist.Experience-Porthcawl.com team, along with other related topics such as: 파이썬 네트워크 분석 Python networkx 예제, 파이썬 CONCOR 분석, 파이썬 네트워크 시각화, 파이썬 의미연결망 분석, 네트워크 분석 예제, 소셜 네트워크 분석 파이썬, 파이썬 크롤링 & 데이터 분석, 파이썬 networkx


[Data@KU] Python으로 네트워크를 그리고 Gephi파일로 저장하기​
[Data@KU] Python으로 네트워크를 그리고 Gephi파일로 저장하기​


파이썬 네트워크 시각화 분석하기(python networkx 예제) / 파이썬 데이터 분석 실무 테크닉 100

  • Article author: suy379.tistory.com
  • Reviews from users: 3366 ⭐ Ratings
  • Top rated: 4.1 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 파이썬 네트워크 시각화 분석하기(python networkx 예제) / 파이썬 데이터 분석 실무 테크닉 100 파이썬 네트워크 시각화 분석하기(python networkx 예제) / 파이썬 데이터 분석 실무 테크닉 100. Everly. 2022. 4. 16. 19:33. 이번 포스팅에서는 python networkx … …
  • Most searched keywords: Whether you are looking for 파이썬 네트워크 시각화 분석하기(python networkx 예제) / 파이썬 데이터 분석 실무 테크닉 100 파이썬 네트워크 시각화 분석하기(python networkx 예제) / 파이썬 데이터 분석 실무 테크닉 100. Everly. 2022. 4. 16. 19:33. 이번 포스팅에서는 python networkx … 이번 포스팅에서는 python networkx 라이브러리를 활용해 네트워크를 가시화하는 방법을 알아보고, 실제 물류 데이터를 적용하여 효율적으로 운송이 이루어지고 있는지를 살펴봅니다. 최적화를 시각화하는 라이브..
  • Table of Contents:

태그

관련글

댓글0

최근글

인기글

전체 방문자

티스토리툴바

파이썬 네트워크 시각화 분석하기(python networkx 예제) / 파이썬 데이터 분석 실무 테크닉 100
파이썬 네트워크 시각화 분석하기(python networkx 예제) / 파이썬 데이터 분석 실무 테크닉 100

Read More

파이썬의 응용 소셜 네트워크 분석 | Coursera

  • Article author: www.coursera.org
  • Reviews from users: 44468 ⭐ Ratings
  • Top rated: 3.8 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 파이썬의 응용 소셜 네트워크 분석 | Coursera Offered by University of Michigan. 이 과정은 NetworkX 라이브러리를 사용한 튜토리얼을 통해 학습자에게 네트워크 분석을 소개합니다. 과정 처음에는 네트워크 분석 … …
  • Most searched keywords: Whether you are looking for 파이썬의 응용 소셜 네트워크 분석 | Coursera Offered by University of Michigan. 이 과정은 NetworkX 라이브러리를 사용한 튜토리얼을 통해 학습자에게 네트워크 분석을 소개합니다. 과정 처음에는 네트워크 분석 … Offered by University of Michigan. 이 과정은 NetworkX 라이브러리를 사용한 튜토리얼을 통해 학습자에게 네트워크 분석을 소개합니다. 과정 처음에는 네트워크 분석이란 무엇인지, 왜 현상을 네트워크로 모델링할 수 있는지를 … Enroll for free.
  • Table of Contents:

파이썬의 응용 소셜 네트워크 분석

About this Course

What you will learn

Skills you will gain

Instructor

Offered by

Syllabus – What you will learn from this course

Week 1

NetworkX에서 네트워크와 기초를 공부해야 하는 이ìœ

Week 2

네트워크 연결

Week 3

영향 측정 및 네트워크 중앙 집중화

Week 4

네트워크 진화

Frequently Asked Questions

Coursera Footer

파이썬의 응용 소셜 네트워크 분석 | Coursera
파이썬의 응용 소셜 네트워크 분석 | Coursera

Read More

NetworkX 파이썬 패키지를 이용한 네트워크 그래프 작성

  • Article author: foss4g.tistory.com
  • Reviews from users: 6558 ⭐ Ratings
  • Top rated: 3.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about NetworkX 파이썬 패키지를 이용한 네트워크 그래프 작성 NetworkX는 그래프와 네트워크 연구를 위한 파이썬 라이브러리입니다. … 이전 글: 빅카인즈 뉴스 데이터를 이용한 ‘깃대종’ 연관규칙 분석 … …
  • Most searched keywords: Whether you are looking for NetworkX 파이썬 패키지를 이용한 네트워크 그래프 작성 NetworkX는 그래프와 네트워크 연구를 위한 파이썬 라이브러리입니다. … 이전 글: 빅카인즈 뉴스 데이터를 이용한 ‘깃대종’ 연관규칙 분석 … 안녕하세요? 이번 글은 NetworkX 파이썬 패키지를 이용한 네트워크 그래프 작성 방법을 정리합니다. NetworkX는 그래프와 네트워크 연구를 위한 파이썬 라이브러리입니다. NetworkX 깃허브 | https://networkx.gi..유병혁 | 지리공간분석가. GISP
    OSGeo Foundation.헌장회원
  • Table of Contents:

NetworkX 파이썬 패키지를 이용한 네트워크 그래프 작성

티스토리툴바

NetworkX 파이썬 패키지를 이용한 네트워크 그래프 작성
NetworkX 파이썬 패키지를 이용한 네트워크 그래프 작성

Read More

[python] NetworkX를 사용해서 데이터분석 및 시각화 해보기

  • Article author: anweh.tistory.com
  • Reviews from users: 13093 ⭐ Ratings
  • Top rated: 3.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [python] NetworkX를 사용해서 데이터분석 및 시각화 해보기 [python] NetworkX를 사용해서 데이터분석 및 시각화 해보기. anweh 2020. 11. 2. 15:03. NetworkX는 파이썬 기반의 모듈로, 다양한 그래포 알고리즘을 제공한다. …
  • Most searched keywords: Whether you are looking for [python] NetworkX를 사용해서 데이터분석 및 시각화 해보기 [python] NetworkX를 사용해서 데이터분석 및 시각화 해보기. anweh 2020. 11. 2. 15:03. NetworkX는 파이썬 기반의 모듈로, 다양한 그래포 알고리즘을 제공한다. NetworkX는 파이썬 기반의 모듈로, 다양한 그래포 알고리즘을 제공한다. 우연히 알게된 라이브러리인데 생각보다 적용할 수 있는 영역이 다양하고, 무엇보다 그래프라는 툴을 사용하면 데이터 간의 상관관계나 연..
  • Table of Contents:

이것저것 기록

[python] NetworkX를 사용해서 데이터분석 및 시각화 해보기 본문

[python] NetworkX를 사용해서 데이터분석 및 시각화 해보기
[python] NetworkX를 사용해서 데이터분석 및 시각화 해보기

Read More

Networkx를 활용한 네트워크 분석 기초 입문 정리 #1

  • Article author: velog.io
  • Reviews from users: 387 ⭐ Ratings
  • Top rated: 4.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about Networkx를 활용한 네트워크 분석 기초 입문 정리 #1 Networkx를 활용한 네트워크 분석 기초 입문 정리 #1. … (3) Node는 파이썬 객체로서 다양한 형태 (Text, 이미지, 시계열 데이터 등)로 변이 용이 …
  • Most searched keywords: Whether you are looking for Networkx를 활용한 네트워크 분석 기초 입문 정리 #1 Networkx를 활용한 네트워크 분석 기초 입문 정리 #1. … (3) Node는 파이썬 객체로서 다양한 형태 (Text, 이미지, 시계열 데이터 등)로 변이 용이 Networkx를 활용한 네트워크 분석 기초 입문 정리 #1
  • Table of Contents:
Networkx를 활용한 네트워크 분석 기초 입문 정리 #1
Networkx를 활용한 네트워크 분석 기초 입문 정리 #1

Read More

[팀 컨피던스]네트워크 분석 – 확진이 어떻게 진행되었을까?(Python) – DACON

  • Article author: dacon.io
  • Reviews from users: 42299 ⭐ Ratings
  • Top rated: 3.5 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [팀 컨피던스]네트워크 분석 – 확진이 어떻게 진행되었을까?(Python) – DACON 저희는 Python을 활용하여 전체적인 역학관계를 네트워크로 시각화하고 분석하였습니다. 아래의 글을 읽어보시고 유익하셨다면, 투표 부탁드립니다. !!< ... ...
  • Most searched keywords: Whether you are looking for [팀 컨피던스]네트워크 분석 – 확진이 어떻게 진행되었을까?(Python) – DACON 저희는 Python을 활용하여 전체적인 역학관계를 네트워크로 시각화하고 분석하였습니다. 아래의 글을 읽어보시고 유익하셨다면, 투표 부탁드립니다. !!< ... 6만 AI팀이 협업하는 인공지능 플랫폼Data Science Competition, datavisualization, DataScience, DataAnalyst, DataEngineer, DataScientist, MachineLearning, deeplearning, 데이터분석, 인공지능, 머신러닝, 딥러닝, 파이썬, 코드, 공유, AI, python, 통계, 수학, 경진대회
  • Table of Contents:
[팀 컨피던스]네트워크 분석 - 확진이 어떻게 진행되었을까?(Python) - DACON
[팀 컨피던스]네트워크 분석 – 확진이 어떻게 진행되었을까?(Python) – DACON

Read More

파이썬 네트워크 분석

  • Article author: www.feat.com
  • Reviews from users: 42097 ⭐ Ratings
  • Top rated: 4.8 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 파이썬 네트워크 분석 Network analysis using NetworkX … NetworkX를 이용한 네트워크 분석 … 는 NetworkX 그래프를 입력으로 사용하는 대화형 네트워크 시각화 Python 패키지입니다. …
  • Most searched keywords: Whether you are looking for 파이썬 네트워크 분석 Network analysis using NetworkX … NetworkX를 이용한 네트워크 분석 … 는 NetworkX 그래프를 입력으로 사용하는 대화형 네트워크 시각화 Python 패키지입니다.
  • Table of Contents:
파이썬 네트워크 분석
파이썬 네트워크 분석

Read More

[Python] 연관어 네트워크 분석 with networkx package – Gahwan’s Research Log

  • Article author: gahwan.com
  • Reviews from users: 31982 ⭐ Ratings
  • Top rated: 3.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [Python] 연관어 네트워크 분석 with networkx package – Gahwan’s Research Log 전에 UCINET으로 네트워크 시각화 하는 방법에 대해서 적었는데, 이번에는 아예 Python으로 동시출현단어 쌍을 만들고 -> Gephi용 확장자인 graphml로 output을 산출 … …
  • Most searched keywords: Whether you are looking for [Python] 연관어 네트워크 분석 with networkx package – Gahwan’s Research Log 전에 UCINET으로 네트워크 시각화 하는 방법에 대해서 적었는데, 이번에는 아예 Python으로 동시출현단어 쌍을 만들고 -> Gephi용 확장자인 graphml로 output을 산출 … 전에 UCINET으로 네트워크 시각화 하는 방법에 대해서 적었는데, 이번에는 아예 Python으로 동시출현단어 쌍을 만들고 -> Gephi용 확장자인 graphml로 output을 산출하는 과정에 대해서 적어보고자 한다. 동시출현 단어쌍 만들기 먼저 pandas를 불러온 후에, readlines 명령어로 미리 형태소분석이 된 데이터를 불러온다. import pandas as pd f = open(“파일 위치/파일명.txt”, encoding=’UTF8′) lines = f.readlines() #라인으로 불러오기 len(lines) #라인 갯수…
  • Table of Contents:
[Python] 연관어 네트워크 분석 with networkx package – Gahwan's Research Log
[Python] 연관어 네트워크 분석 with networkx package – Gahwan’s Research Log

Read More


See more articles in the same category here: toplist.Experience-Porthcawl.com/blog.

파이썬 네트워크 시각화 분석하기(python networkx 예제) / 파이썬 데이터 분석 실무 테크닉 100

이번 포스팅에서는 python networkx 라이브러리를 활용해 네트워크를 가시화하는 방법을 알아보고, 실제 물류 데이터를 적용하여 효율적으로 운송이 이루어지고 있는지를 살펴봅니다.

최적화를 시각화하는 라이브러리는 다양하지만 여기서는 networkx를 사용합니다.

✔Table of Contents

Tech 53. 네트워크 가시화하기 (기초)

먼저 네트워크 시각화를 하기 위해선 다음이 필요합니다.

그래프 객체

노드(node) : 점

엣지(edge) : 점과 점을 연결하는 선

좌표 : 점의 좌표

위의 순서를 지켜, 가장 기본적인 네트워크를 만들어보겠습니다.

import networkx as nx import matplotlib.pyplot as plt #그래프 객체 설정 G = nx.Graph() #노드 설정 G.add_node(‘nodeA’) G.add_node(‘nodeB’) G.add_node(‘nodeC’) #엣지 설정 G.add_edge(‘nodeA’, ‘nodeB’) G.add_edge(‘nodeA’, ‘nodeC’) G.add_edge(‘nodeB’, ‘nodeC’) #좌표 설정 pos = {} pos[‘nodeA’] = (0,0) pos[‘nodeB’] = (1,1) pos[‘nodeC’] = (0,1) #그리기 nx.draw(G, pos, with_labels= True) plt.show()

코드는 간단합니다.

우선 그래프 객체 ‘G’를 설정하고 add_node를 사용해 노드(node)를 설정합니다. 여기선 노드를 nodeA, B, C 이렇게 3가지를 설정했습니다.

그리고 각 노드(점)을 잇는 엣지를 add_edge를 사용해 이어줍니다. 마지막으로 노드의 좌표를 설정해주면 됩니다. 좌표가 잘 이해가 되지 않는다면 다음 그림을 참고하세요:

우리가 고등학교 때 배웠던 좌표평면 위에 node A, B, C를 그렸다고 생각하면 됩니다.

Tech 54. 네트워크에 노드를 추가하기

이번엔 한 단계를 더 나아가보죠. 새로운 노드인 nodeD를 추가해봅니다. 이 노드는 nodeA하고만 연결이 되며, 좌표는 (1,0)으로 설정해보겠습니다. 코드는 어떻게 써야 할까요? 위에서 사용한 코드를 살짝만 변형합니다.

#앞서 만든 그림에 새로운 노드 nodeD(nodeA와 연결되는)를 추가한다. #노드 G.add_node(‘nodeD’) #엣지 G.add_edge(‘nodeA’, ‘nodeD’) #좌표설정 pos[‘nodeD’] = (1,0) #그리기 nx.draw(G, pos, with_labels = True)

노드-엣지-좌표 순으로 새로운 노드인 nodeD를 추가해주면 됩니다.

Tech 55. 경로에 가중치 부여하기

여기까지 우리가 기본적인 경로를 그려보았는데요. 하지만 우리가 마주하게 될 경로는 굉장히 복잡합니다. 이렇게 노드와 노드 간의 경로가 하나가 아닌 여러 개가 될 수도 있죠. 이렇게 많이 사용하는 경로와 적게 사용하는 경로는 어떻게 구분해서 그릴 수 있을까요?

바로 “가중치” 를 사용하면 됩니다. 가중치의 값이 커질수록, 노드 사이의 “엣지”의 굵기를 더 굵게 하면 됩니다 .

가중치를 얻어오는 방법은 여러가지가 있지만, 여기선 csv 파일에 저장된 가중치 정보를 데이터프레임으로 읽어 와서 사용하겠습니다.

import pandas as pd import numpy as np import matplotlib.pyplot as plt import networkx as nx #데이터 불러오기 df_w = pd.read_csv(‘6장/network_weight.csv’) #가중치 df_p = pd.read_csv(‘6장/network_pos.csv’) #좌표 display(df_w, df_p)

이렇게 가중치 정보가 담긴 데이터 ‘df_w’, 좌표 정보가 담긴 데이터 ‘df_p’를 불러왔습니다.

데이터를 보면 알겠지만, 노드는 node A~E까지 총 5개가 있네요. 그리고 각 노드 간 엣지의 굵기(가중치)가 df_w에 저장되어 있고, 노드의 좌표는 df_p를 사용하면 되겠네요!

우선 엣지 가중치를 리스트화해봅니다. 빈 리스트 edge_w를 만들고, 각 행, 열에 해당하는 가중치를 넣어줍니다. 예를 들어 노드A에 대해선 0번 인덱스에 해당하는 모든 열의 값을 가져오면 되겠죠?

그럼 노드A-A , 노드A-B, 노드A-C, 노드A-D, 노드A-E 를 연결하는 엣지의 가중치 값이 담길 것입니다. 코드로 만들어봅시다. (다만 가중치 값이 너무 작은 관계로 10을 곱한 값을 가중치로 사용합시다.)

size = 10 edge_w = [] for i in range(len(df_w)): for j in range(len(df_w.columns)): edge_w.append(df_w.iloc[i][j]*size) edge_w

이제 이렇게 가중치를 리스트로 저장했습니다.

엣지에 가중치를 설정할 때와 아닐 때의 그래프의 차이가 어떻게 나타나는지를 확인하기 위해, 먼저 가중치가 없을 때의 그래프를 그려봅시다. 위의 df_w와 df_p를 활용해, 노드, 엣지, 좌표만 설정 해봅니다.

#객체 G = nx.Graph() #노드 5개 설정 for i in range(len(df_w.columns)): G.add_node(df_w.columns[i]) #엣지 설정 for i in range(len(df_w.columns)): for j in range(len(df_w.columns)): G.add_edge(df_w.columns[i], df_w.columns[j]) #좌표 설정 pos = {} for i in range(len(df_w.columns)): node = df_w.columns[i] pos[node] = (df_p[node][0], df_p[node][1]) #pos[노드] = (좌표) 임을 이용 #그리기 nx.draw(G, pos, with_labels=True) plt.show()

모든 노드 간 엣지의 굵기가 똑같습니다. 그래서 어떤 노드들 간에 더 가중치값이 큰지를 전혀 알아볼 수가 없습니다.

이제 앞서 구한 가중치 리스트 edge_w 를 활용해 다시 그림을 그려봅시다. 엣지에 가중치를 추가하는 것은 width 옵션 으로 지정하면 됩니다.

#엣지에 가중치 추가, 꾸미기 nx.draw(G, pos, with_labels=True, font_size = 16, node_size = 1000, node_color= ‘k’, font_color = ‘w’, width = edge_w) #가중치는 width 옵션으로 지정 plt.show()

이렇게 가중치를 부여한 그림을 그리면, 어떤 경로가 더 부각되는지를 직관적으로 파악하기 쉽겠죠?

참고로 width 옵션 외에도 그림을 꾸미기 위한 다양한 옵션을 추가하였습니다. 노드와 폰트의 크기 및 색깔을 바꿨습니다.

Tech 56 – 57. 운송 경로 데이터를 불러오고 시각화하자.

이제는 어떻게 그리는지를 배웠으니, 물류 데이터를 직접 가져와서 networkx 라이브러리로 시각화를 해봅니다. 사용하는 데이터는 다음의 2가지입니다.

trans_route.csv : 운송 경로 데이터. 창고(W) 에서 공장(F) 으로의 운송량이 기록됨 (df_tr)

trans_route_pos.csv : 창고(W) 및 공장(F) 의 위치정보 (df_pos)

df_tr = pd.read_csv(‘6장/trans_route.csv’, index_col = ‘공장’) df_pos = pd.read_csv(‘6장/trans_route_pos.csv’) display(df_tr, df_pos)

2가지 데이터를 불러왔습니다. 참고로 문제를 단순화하기 위해, df_tr 데이터에서는 창고(W) -> 공장(F) 에서만 물류가 이동한다고 봅니다.

시각화를 할 때는 창고(W)와 공장(F)을 노드로 사용하고, 각 노드 간 가중치를 df_tr 데이터로 사용합니다. 그리고 창고와 공장의 위치정보는 df_pos 데이터를 활용하면 되겠죠?

책에 시각화 코드가 나와있는데, 좀 복잡하게 되어 있어서 더 간단하게 쓴 제 코드로 설명하겠습니다.

시각화 코드의 순서는 위에서 했던 것과 똑같습니다. 노드 설정 – 엣지 설정 – 좌표 설정의 순서 로 하면 됩니다. 여기서 주의할 점은 경로는 창고에서 공장으로의 이동만 있다는 점입니다. 따라서, 창고와 창고 간의 이동이나 공장과 공장 간의 이동은 없습니다.

그러므로, 엣지를 설정할 때 창고(W)에서 하나를 뽑고, 공장(F)에서 하나를 뽑아 연결짓는 방식으로 코드를 짰습니다.

가중치를 적용하지 않은 버전입니다.

#객체 G = nx.Graph() #노드 설정(W 3개, F 4개) for i in range(len(df_pos.columns)): G.add_node(df_pos.columns[i]) #엣지 설정(W에서 하나 – F에서 하나를 연결) for i in range(0, 3): for j in range(3, len(df_pos.columns)): G.add_edge(df_pos.columns[i], df_pos.columns[j]) #좌표 설정 pos = {} for i in range(len(df_pos.columns)): node = df_pos.columns[i] pos[node] = (df_pos[node][0],df_pos[node][1]) #그리기 nx.draw(G, pos, with_labels=True) plt.show()

엣지에 가중치를 설정해봅시다. 가중치로는 df_tr의 값을 사용하는데, 가중치 값이 너무 커서 값을 그대로 사용하면 선이 엄청 뚱뚱하게 그려집니다. 그래서 가중치 값에 0.1을 곱해 값을 좀 줄여줍니다.

sy = [] size = 0.1 #가중치 값이 너무 커서 줄임 (그대로 쓰면 엣지가 엄청 굵게나옴) for i in range(len(df_tr.index)): for j in range(len(df_tr.columns)): sy.append(df_tr.iloc[i,j]*size) sy

위에서 만든 가중치 리스트 sy를 넣어 그림을 다시 그려봅니다.

#그래프 다시 그리기 nx.draw(G, pos, with_labels=True, font_size = 16, node_size = 1000, node_color = ‘k’, font_color= ‘w’, width = sy) #width에 가중치 리스트 설정 plt.show()

이렇게 경로가 완성되었습니다. 이렇게 시각화하여 경로를 뽑아보니, 그냥 숫자로 볼 때보다 훨씬 더 직관적인 이해가 가능하죠? 창고 W2에서 공장 F3로 가는 경로가 가장 두드러지네요!

이번엔 책에 나온 방식으로 코드를 설명하겠습니다.

다른 점은 엣지와 가중치 설정 부분인데요. 저는 엣지와 가중치 설정 코드를 따로 썼지만 책에서는 for문으로 묶어 한번에 해결했습니다.

또한 저는 창고(W)와 공장(F) 간에만 엣지를 설정할 수 있기 때문에 W에서 하나, F에서 하나를 뽑아 엣지를 설정했지만, 책에서는 그냥 모든 조합을 만들고 W와 F를 연결하는 것이 아닌 경우엔 가중치(weight)를 0으로 두는 방법 을 썼습니다. 주석에 설명을 달아두었으니 참고하세요!

#객체 G = nx.Graph() #노드 설정(W 3개, F 4개) for i in range(len(df_pos.columns)): G.add_node(df_pos.columns[i]) #—————————————– 엣지와 가중치 리스트 설정을 한번에! num_pre = 0 edge_w = [] #가중치 리스트. for문을 통해 가중치(weight) 값을 하나하나 쌓을것 size = 0.1 for i in range(len(df_pos.columns)): for j in range(len(df_pos.columns)): if i != j : #이 경우에만 엣지 설정 -> 자기자신에 대해서는 X, 다만 W끼리, F끼리도 엣지 설정할 수 있음 (가중치만 안 넣어주면 됨) G.add_edge(df_pos.columns[i], df_pos.columns[j]) #엣지 가중치 추가 if num_pre < len(G.edges): #num_pre의 기본값인 0보다 len(G.edges)가 크다면 (즉, 엣지가 하나 이상 만들어진 경우) num_pre = len(G.edges) #num_pre 값을 len(G.edges)로 바꿔줌 weight = 0 #가중치 초기화 : W끼리/ F끼리의 엣지라면 0으로 넣게됨. ## 이제 weight를 추가해보자. (weight는 W와 F 간에만 존재) if (df_pos.columns[i] in df_tr.columns) and (df_pos.columns[j] in df_tr.index): #i에 해당하는 F 와 j에 해당하는 W값이 존재(True) 한다면 if df_tr[df_pos.columns[i]][df_pos.columns[j]]: #가중치값이 존재(True)한다면 weight = df_tr[df_pos.columns[i]][df_pos.columns[j]]*size #weight에 그 값을 넣기 elif (df_pos.columns[j] in df_tr.columns) and (df_pos.columns[i] in df_tr.index): #반대로, j에 해당하는 F와 i에 해당하는 W 값이 존재한다면 if df_tr[df_pos.columns[j]][df_pos.columns[i]]: #그리고 가중치값이 존재한다면 weight = df_tr[df_pos.columns[j]][df_pos.columns[i]]*size #weight에 그 값을 넣기 #weight(가중치) 리스트화 edge_w.append(weight) #--------------------------------------------- #좌표 설정 pos = {} for i in range(len(df_pos.columns)): node = df_pos.columns[i] pos[node] = (df_pos[node][0],df_pos[node][1]) #그리기 nx.draw(G, pos, with_labels=True, font_size = 16, node_size = 1000, node_color = 'k', font_color= 'w', width = edge_w) #width에 가중치 리스트 설정) plt.show() 좀더 자세히 설명하자면 if문이 한번 실행될 때마다 edge_w에 가중치(weight) 값이 차곡차곡 담깁니다. W끼리의 가중치이거나 F끼리의 가중치이면 기본값인 0이 담기고, W와 F 간의 가중치라면 df_tr에 있는 가중치값이 담깁니다. 이렇게 해서 총 21개의 가중치가 담기게 되는데요, 이는 7개의 가짓수(창고+공장 개수 = 7개) 에서 중복을 포함하지 않게 2개를 선택하는 경우인 7C2 = 21의 값과 동일합니다. 제가 한 것은 어차피 W끼리, F끼리의 가중치 값은 0이므로 애초에 포함시키지 않는 방법을 썼습니다. 즉, W와 F 각각에서 중복을 포함하지 않고 하나씩 뽑는 것이므로 3C1 * 4C1 =12개입니다. 앞서 21개 중에서 가중치 값이 있는 경우는 12개뿐이므로 제가 한 것과 교재에서 한 결과가 같은 이유입니다! (저는 개인적으로 제가 한 방법이 더 쉬운 거 같네요..!) 이로써 오늘의 포스팅을 마칩니다. 이번 포스팅을 통해, python networkx 라이브러리를 활용해 경로를 시각화하는 방법을 배웠습니다. 다음 포스팅에서는 목적 함수와 제약조건을 설정하는 방법을 배우고, 직접 이를 설정하여 최적화를 진행해봅니다. 궁금한 점 있으시다면 언제든 댓글 주세요! 감사합니다 🙂 반응형

NetworkX 파이썬 패키지를 이용한 네트워크 그래프 작성

안녕하세요? 이번 글은 NetworkX 파이썬 패키지를 이용한 네트워크 그래프 작성 방법을 정리합니다.

NetworkX는 그래프와 네트워크 연구를 위한 파이썬 라이브러리입니다. NetworkX 깃허브 | https://networkx.github.io/

앞서 정리한 단어 연관규칙(association rules)을 네트워크 그래프를 그려 가시화한다고 보시면 됩니다.

이전 글: 빅카인즈 뉴스 데이터를 이용한 ‘깃대종’ 연관규칙 분석 | http://blog.daum.net/geoscience/1407

자, 그럼 시작해볼까요?! 일단 분석을 위한 라이브러리를 추가합니다.

앞서 빅카인즈에서 1900년부터 2019년 6월까지 ‘깃대종’이 언급된 뉴스 데이터를 내려받고,

이 중 ‘제목’ 컬럼을 텍스트 파일로 별도 저장했었습니다. 빅카인즈(BIG KINDS) | https://www.bigkinds.or.kr/

해당 텍스트 파일을 열고,

단어빈도 분석을 위한 한나눔을 불러옵니다.

한국어 NLP를 위한 코엔엘파이(KoNLPy) 설치하기 | http://blog.daum.net/geoscience/1398

반복문을 통해 텍스트 파일을 한줄씩 읽어와 정규표현식을 적용하고 dataset에 기록해 갑니다.

re.sub()는 문자열에서 일치하는 텍스트를 다른 텍스트로 치환(substitution)할 때 사용합니다.

정규표현식에서 [], 즉 대괄호는 그 안에 있는 문자열을 포함하라는 의미입니다. ^는 이 패턴으로

시작해야 한다는 의미이며, 가-힣는 한글, a-zA-Z는 영문, \s는 공백(white space)을 정의합니다.

아래와 같이 단어들이 2차원 리스트로 추출된 결과를 확인합니다.

이제 어프라이어리(Apriori) 알고리즘을 적용하여 연관규칙 분석을 수행해 봅니다. 이전 글은

Mlxtend 라이브러리를 통해 구현했었는데요, 이번엔 보다 간단한 Apyori 패키지를 사용해 봤습니다.

Apyori | https://github.com/ymoch/apyori

연관 규칙(association rules)의 개념은 아래 글을 참고하시기 바랍니다.

Complete guide to Association Rules (1/2) | https://towardsdatascience.com/association-rules-2-aa9a77241654

Complete guide to Association Rules (2/2) | https://towardsdatascience.com/complete-guide-to-association-rules-2-2-c92072b56c84

아래 화면은 항목 개수가 2개이고 지지도(support)가 0.01 이상인 항목집합만 추려낸 결과입니다.

이제 위 항목들을 네트워크 그래프로 작성해 보겠습니다. 아래와 같이 네트워크 그래프를 정의합니다.

네트워크의 자료 구조는 노드와 엣지로 구성됩니다. 패이지랭크는 노드 순위를 제공하므로 노드 색상과 크기를 지정하는데 유용하게 사용됩니다.

NetworkX 패키지는 아래와 같이 다양한 레이아웃을 제공합니다.

네트워크 그래프를 그려볼까요?! 아래와 같이 단어간 연관성을 한눈에 보실 수 있습니다. 노드의 색상과 크기는 패이지랭크에 따라 다르게 표현됩니다.

레이아웃 지정에 따라 전혀 다른 느낌의 네트워크 그래프를 그려볼 수 있습니다. 간단하죠?!

그래프 레이아웃 | https://networkx.github.io/documentation/latest/reference/drawing.html#module-networkx.drawing.layout

[python] NetworkX를 사용해서 데이터분석 및 시각화 해보기

NetworkX는 파이썬 기반의 모듈로, 다양한 그래포 알고리즘을 제공한다.

우연히 알게된 라이브러리인데 생각보다 적용할 수 있는 영역이 다양하고, 무엇보다 그래프라는 툴을 사용하면 데이터 간의 상관관계나 연결성 등 분석할 수 있는 카테고리가 상당히 많아진다.

처음엔 데이터에 그래프라는 개념을 접목시킨다는 점이 다소 생소해서 해당 라이브러리에 익숙해지기까지 꽤나 시간이 걸렸지만…

일단 익숙해지고 나니까 그래프의 파워(?)를 느끼고 매우 신기했었다 ㅋㅋ

어쨌든~~ 오늘 사용할 데이터는 바로 이 데이터다.

Pokemon.csv 0.04MB

어디서 얻었는지 기억이 안나는 포켓몬 데이터다.

총 12개의 열이 있고, 행은 포켓몬 종류를 나타낸다. 총 800종이 있다.

포켓몬 종류가 이렇게 많은지 처음 알았음…;;

1. 필요한 라이브러리 불러오기

import numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt import networkx as nx

일단 필요한 라이브러리부터 불러오기~~

networkx는 nx로 줄여쓰는 것이 일반적이다. numpy를 np로 줄여쓰는 것과 똑같음.

2. 데이터 불러오기

data = pd.read_csv(‘C:/Users/user/Desktop/PyStudy/Pokemon.csv’) data.head() #상위 다섯개 data.tail() #하위 다섯개 print(len(data.isnull().any())) #null값이 있는지 확인 data.isnull().any() data[‘Type 2’].replace(np.nan, ‘0’, inplace = True) #null값 채워주기 data[‘Type 2’].head(10) #’Type 2’컬럼의 상위 열개 출력 print(“Number of pokemon are: ” + str(data[‘Name’].nunique())) #포켓몬 종류 name = pd.DataFrame(data[‘Name’].unique().tolist(), columns = [‘Pokemon’]) #포켓몬 종류 DataFrame npoke_total = data.copy() print(npoke_total.columns) #컬럼명확인 npoke_total = pd.concat([npoke_total[‘Name’], data[‘Total’]], axis=1) #포켓몬 종류와 각각의 종류 별로 몇마리인지

pd.read_csv를 사용하면 엑셀 시트를 불러올 수 있다. data라는 변수에 할당.

data.head()와 data.tail()은 상위/하위 다섯개 (조정 가능)의 데이터를 확인해주는 코드인데, 엑셀 시트안에 데이터가 어떻게 들어가 있는지 대충 확인할 때 사용하기 좋다.

엑셀 데이터로 분석을 시작하기 전엔 항상 null값이 있는지 확인을 해줘야한다.

print(len(data.isnull().any())로 null값의 갯수를 확인하고, null값이 들어가있는 컬럼을 찾아서 0으로 일괄 입력 해주었다.

print(“Number of pokemon are: ” + str(data[‘Name’].nunique())) 로 포켓몬 종류가 총 몇 개인지 확인해줬다.

포켓몬 종류수

그리고 포켓몬의 종류 이름들을 ‘name’이라는 리스트에 저장해줬다. 컬럼명은 ‘Pokemon’.

name 리스트

npoke_total에는 포켓몬의 종류 이름과 각각의 종류가 몇 마리씩 있는지 (엑셀 시트의 ‘Total’컬럼) 정보를 넣어주었다.

npoke_total 리스트

3. 분석 및 시각화

3.1 포켓몬 종류 별 몇 마리?

포켓몬 종류 별 개체수 상위 30에 대한 시각화 결과이다.

sns.set() plt.figure(figsize=(8,20)) ax = sns.barplot(x = ‘Total’, y = ‘Name’, data = npoke_total.sort_values(by = ‘Total’, ascending = False).head(30)) ax.set(xlabel = ‘Overall’, ylabel = ‘Pokemon’) plt.show()

개체수 상위 30 종류

3.2 종류 별 연관 그래프

데이터의 Type1 컬럼을 보면 다른 종류임에도 동일한 Type1 정보를 가지고 있는 케이스가 잇다.

포켓몬을 본지가 너무 오래돼서… Type1이 정확히 뭘 의미하는지는 모르겠지만 (아마도 속성일 것이라 추정)

포켓몬 종류별로 Type1에 대한 연관성 그래프를 시각화 했다. (드디어 NetworkX 라이브러리 사용!)

#Network analysis g = nx.Graph() g = nx.nx.from_pandas_edgelist(data, source = ‘Name’, target = ‘Type 1’) print(nx.info(g)) plt.figure(figsize=(20, 20)) pos = nx.spring_layout(g, k = 0.15) nx.draw_networkx(g,pos, node_size = 25, node_color = ‘blue’) plt.show()

출력 결과 시각화 결과

3.3 Type1 별 비율

시각화 결과, 물속성의 포켓몬의 개체수가 가장 많고, 요정속성?의 포켓몬 개체수가 가장 적은 것을 확인할 수 있었다.

파이팅 속성은 도대체 뭐지… 공격형 포켓몬이라는 건가?

gen1 = data[data.Generation == 1] types = gen1[‘Type 1’] explode = np.arange(len(types.unique())) * 0.01 colors = [ ‘red’, ‘blue’, ‘yellow’, ‘green’ ] types.value_counts().plot.pie( explode=explode, colors=colors, title=”Percentage of Different Types of Pokemon”, autopct=’%1.1f%%’, shadow=True, startangle=90, figsize=(9,9) ) plt.tight_layout() plt.show()

3.4 전설의 포켓몬 vs. 비전설의 포켓몬

types = gen1[‘Legendary’] explode = np.arange(len(types.unique())) * 0.01 colors = [ ‘yellow’, ‘green’ ] types.value_counts().plot.pie( explode=explode, colors=colors, title=”Percentage of Legendary to NoN-Legendary”, autopct=’%1.1f%%’, shadow=True, startangle=90, figsize=(6,6) ) plt.tight_layout() plt.show()

3.5 1세대 포켓몬 대상으로 Type1 연결성 분석

g = nx.from_pandas_dataframe(gen1,source=’Name’,target=’Type 1′) print(nx.info(g)) nx.Graph() plt.figure(figsize=(20, 20)) pos=nx.spring_layout(g, k=0.0319) nx.draw_networkx(g,pos,node_size=805, node_color=’pink’, font_size=15) plt.show()

So you have finished reading the 파이썬 네트워크 분석 topic article, if you find this article useful, please share it. Thank you very much. See more: Python networkx 예제, 파이썬 CONCOR 분석, 파이썬 네트워크 시각화, 파이썬 의미연결망 분석, 네트워크 분석 예제, 소셜 네트워크 분석 파이썬, 파이썬 크롤링 & 데이터 분석, 파이썬 networkx

Leave a Comment