Pandas 데이터 프레임을 사용하여 생성 된 이분 네트워크 그래프 시각화

Lalit Jain

csv 파일에 데이터가 있고 아래와 같이 팬더를 통해 읽습니다.

import networkx as nx
import pandas as pd
import matplotlib.pyplot as plt

sub_data = pd.read_csv('sample.csv')

산출:

   user_id   item_id    rating

0    772          36     3
1    471         228     5
2    641         401     4
3    312          98     4
4     58         504     5

이 데이터를 사용하여 네트워크 그래프 만들기 :

 edges = [tuple(x) for x in sub_data[['user_id','item_id']].values.tolist()]
 B = nx.Graph()
 B.add_nodes_from(sub_data['user_id'].unique(), bipartite=0, label='user')
 B.add_nodes_from(sub_data['item_id'].unique(), bipartite=1, label='item')
 B.add_edges_from(edges, label='rating')    

아래 코드를 사용하여 그래프 그리기 :

pos=nx.spring_layout(B)
nx.draw(B,pos,node_color='#A0CBE2',edge_color='#00bb5e',width=1,
     edge_cmap=plt.cm.Blues,with_labels=True) 

나는 다음과 같은 줄거리를 얻고 있습니다. 여기에 이미지 설명 입력

노드 만 얻고 있습니다. 여기서 노드를 연결하고 해당 연결에 대한 레이블로 등급을 지정해야합니다.

모하메드 카 시프

당신이 작성한 코드를 실행하려고했는데, 이분 그래프를 얻을 수있었습니다. 귀하의 경우 NetworkX가 내 것과 유사한 이분 그래프를 렌더링 할 수 있다고 가정하고 있지만 그래프에 더 많은 노드가 있으므로 가장자리가 제대로 표시되지 않습니다. 이 같은

원본 그래프

가장자리가 거의 보이지 않음을 알 수 있습니다. 또한 노드 수를 10 개로 제한하면 가장자리도 볼 수 있습니다. 예제를 복제하는 데 관심이 있다면 다음은 샘플 csv 데이터입니다 (질문에 제공된 데이터에 몇 가지 포인트를 더 추가했습니다).

,user_id,item_id,rating
0,772,36,3
1,471,228,5
2,641,401,4
3,312,98,4
4,58,504,5
5,67,98,4
6,471,229,3

이제 양측에 두 세트의 노드가있는 Bipartite 레이아웃에서 그래프를보고 싶다는 것을 이해합니다. 이를 달성하기 위해 대신 bipartite_layout 을 사용해야 spring_layout합니다.

다음은 전체 코드입니다.

import networkx as nx
import pandas as pd
import matplotlib.pyplot as plt

sub_data = pd.read_csv('sample.csv')

edges = [tuple(x) for x in sub_data[['user_id','item_id']].values.tolist()]
B = nx.Graph()
B.add_nodes_from(sub_data['user_id'].unique(), bipartite=0, label='user')
B.add_nodes_from(sub_data['item_id'].unique(), bipartite=1, label='item')
B.add_edges_from(edges, label='rating')

# Now instead of spring_layout, use bipartite_layout

# First specify the nodes you want on left or top
left_or_top = sub_data['user_id'].unique()

# Then create a bipartite layout
pos = nx.bipartite_layout(B, left_or_top)

# Pass that layout to nx.draw
nx.draw(B,pos,node_color='#A0CBE2',edge_color='#00bb5e',width=1,
     edge_cmap=plt.cm.Blues,with_labels=True)

이분 신규

또한 여기언급 된대로 bipartite_setsbipartite_layout사용 하는 대신 에 한 노드 집합을 명시 적으로 전달했습니다. 그래프가 연결 해제되어 AmbiguousSolution Error로 이어질 수 있기 때문 입니다. 자세한 내용은 여기여기 에서 설명서를 참조 하십시오 .

이 Google Colab 노트북 에서 전체 코드를 볼 수도 있습니다 .

업데이트 : 엣지를 보여주고 싶을 경우 아래와 같이 할당해야합니다. (등급 추가 코드가 잘못되었습니다)

# Extract the ratings while extracting the edges from DF
edges = [tuple(x) for x in sub_data[['user_id','item_id', 'rating']].values.tolist()]

B = nx.Graph()

B.add_nodes_from(sub_data['user_id'].unique(), bipartite=0, label='user')
B.add_nodes_from(sub_data['item_id'].unique(), bipartite=1, label='item')

# Now assign the ratings correctly to edges
for row in edges:
    B.add_edge(row[0], row[1], rating=row[2])

이제 draw_netwokrx_edge_labels를 사용하여 가장자리 레이블을 그 립니다 .

left_or_top = sub_data['user_id'].unique()
pos = nx.bipartite_layout(B, left_or_top)

# Draw the graph
nx.draw(B,pos,node_color='#A0CBE2',edge_color='#00bb5e',width=1,
     edge_cmap=plt.cm.Blues,with_labels=True)

# Get the edge labels for ratings
edge_labels = nx.get_edge_attributes(B,'rating')

# Draw the edge labels
nx.draw_networkx_edge_labels(B, pos, edge_labels=edge_labels)

가장자리 레이블이있는이 분할

참조 :

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

공통 열을 사용하여 데이터 프레임에서 네트워크 생성

분류에서Dev

Google 차트를 사용하여 Pandas 데이터 프레임의 데이터 시각화

분류에서Dev

pandas 데이터 프레임 행을 생성하여 데이터 프레임을 시작하는 방법

분류에서Dev

Pandas를 사용하여 데이터 프레임에서 (그룹화 된) 막대 차트를 그리는 방법

분류에서Dev

Python / Pandas를 사용하여 Google 시트에 데이터 프레임 작성

분류에서Dev

데이터 프레임에서 네트워크 플롯 생성

분류에서Dev

Pandas 데이터 프레임을 사용하여 데이터 프레임 값의 각 열을 하나씩 새 시트에 추가하는 방법

분류에서Dev

pandas-데이터 프레임에서 이분 네트워크 프로젝트

분류에서Dev

pandas-데이터 프레임별로 그룹화 된 키 값 쌍 생성

분류에서Dev

pkg : sjPlot 함수를 사용하여 부분적으로 기울임 꼴로 표시된 셀을 생성하는 데이터 프레임 만들기

분류에서Dev

rvest 또는 RSelenium을 사용하여 프레임 내부 테이블의 자동화 된 웹 스크랩 생성

분류에서Dev

pandas-데이터 프레임의 하위 집합 요약으로 구성된 데이터 프레임 생성

분류에서Dev

Python을 사용하여 데이터 프레임에서 그룹화 된 데이터를 시각화하는 방법

분류에서Dev

중첩 된 JSON을 평면화하고 Pandas를 사용하여 데이터 프레임에 연결

분류에서Dev

Python Pandas를 사용하여 데이터 프레임 열을 그룹화하고 Excel 시트에서 새 열을 계산하는 데 사용

분류에서Dev

파이썬에서 규정 된 정도 분포로 네트워크 (그래프) 생성

분류에서Dev

그룹화 된 pandas 데이터 프레임을 조작하는 방법

분류에서Dev

동기화 프레임 워크를 사용하여 거의 동일한 데이터로 다시 생성 된 테이블을 동기화하는 방법은 무엇입니까?

분류에서Dev

Pandas에서 생성기를 통해 생성 된 다른 데이터 프레임에 데이터 프레임을 추가하는 방법

분류에서Dev

Pandas 데이터 프레임에서 이미 생성 된 edgelist에 가중치 목록을 추가하고 가중치를 그래프에 edge 레이블로 표시

분류에서Dev

Python에서 Pandas를 사용하여 값이 구분 된 txt 파일을 데이터 프레임으로 변환

분류에서Dev

for 루프를 사용하여 여러 데이터 프레임을 작성하여 Excel 시트 수정

분류에서Dev

그룹화 된 데이터 프레임을 다시 생성하지 않고 서브 플롯을 두 번 이상 사용할 수 없습니다.

분류에서Dev

Python / Pandas : "for-loop"를 사용하여 Excel 시트에 여러 데이터 프레임 작성

분류에서Dev

Concat을 사용하여 데이터 프레임에 시프트 된 시리즈 결합

분류에서Dev

루프에서 생성 된 배열을 데이터 프레임의 열로 사용하여 데이터 프레임을 만드는 방법

분류에서Dev

Pandas 데이터 프레임 열을 정리하고 다른 데이터 프레임에 표시된 문자열에서 부분을 제거합니다.

분류에서Dev

다른 데이터 프레임의 그룹화 된 출력을 사용하여 새 데이터 프레임을 생성하려면 어떻게해야합니까?

분류에서Dev

조각화 된 데이터 그램을 재 조립하는 네트워크 계층은 무엇입니까?

Related 관련 기사

  1. 1

    공통 열을 사용하여 데이터 프레임에서 네트워크 생성

  2. 2

    Google 차트를 사용하여 Pandas 데이터 프레임의 데이터 시각화

  3. 3

    pandas 데이터 프레임 행을 생성하여 데이터 프레임을 시작하는 방법

  4. 4

    Pandas를 사용하여 데이터 프레임에서 (그룹화 된) 막대 차트를 그리는 방법

  5. 5

    Python / Pandas를 사용하여 Google 시트에 데이터 프레임 작성

  6. 6

    데이터 프레임에서 네트워크 플롯 생성

  7. 7

    Pandas 데이터 프레임을 사용하여 데이터 프레임 값의 각 열을 하나씩 새 시트에 추가하는 방법

  8. 8

    pandas-데이터 프레임에서 이분 네트워크 프로젝트

  9. 9

    pandas-데이터 프레임별로 그룹화 된 키 값 쌍 생성

  10. 10

    pkg : sjPlot 함수를 사용하여 부분적으로 기울임 꼴로 표시된 셀을 생성하는 데이터 프레임 만들기

  11. 11

    rvest 또는 RSelenium을 사용하여 프레임 내부 테이블의 자동화 된 웹 스크랩 생성

  12. 12

    pandas-데이터 프레임의 하위 집합 요약으로 구성된 데이터 프레임 생성

  13. 13

    Python을 사용하여 데이터 프레임에서 그룹화 된 데이터를 시각화하는 방법

  14. 14

    중첩 된 JSON을 평면화하고 Pandas를 사용하여 데이터 프레임에 연결

  15. 15

    Python Pandas를 사용하여 데이터 프레임 열을 그룹화하고 Excel 시트에서 새 열을 계산하는 데 사용

  16. 16

    파이썬에서 규정 된 정도 분포로 네트워크 (그래프) 생성

  17. 17

    그룹화 된 pandas 데이터 프레임을 조작하는 방법

  18. 18

    동기화 프레임 워크를 사용하여 거의 동일한 데이터로 다시 생성 된 테이블을 동기화하는 방법은 무엇입니까?

  19. 19

    Pandas에서 생성기를 통해 생성 된 다른 데이터 프레임에 데이터 프레임을 추가하는 방법

  20. 20

    Pandas 데이터 프레임에서 이미 생성 된 edgelist에 가중치 목록을 추가하고 가중치를 그래프에 edge 레이블로 표시

  21. 21

    Python에서 Pandas를 사용하여 값이 구분 된 txt 파일을 데이터 프레임으로 변환

  22. 22

    for 루프를 사용하여 여러 데이터 프레임을 작성하여 Excel 시트 수정

  23. 23

    그룹화 된 데이터 프레임을 다시 생성하지 않고 서브 플롯을 두 번 이상 사용할 수 없습니다.

  24. 24

    Python / Pandas : "for-loop"를 사용하여 Excel 시트에 여러 데이터 프레임 작성

  25. 25

    Concat을 사용하여 데이터 프레임에 시프트 된 시리즈 결합

  26. 26

    루프에서 생성 된 배열을 데이터 프레임의 열로 사용하여 데이터 프레임을 만드는 방법

  27. 27

    Pandas 데이터 프레임 열을 정리하고 다른 데이터 프레임에 표시된 문자열에서 부분을 제거합니다.

  28. 28

    다른 데이터 프레임의 그룹화 된 출력을 사용하여 새 데이터 프레임을 생성하려면 어떻게해야합니까?

  29. 29

    조각화 된 데이터 그램을 재 조립하는 네트워크 계층은 무엇입니까?

뜨겁다태그

보관