我想從存盤在 CSV 檔案中的資料中可視化具有 networkx 和 matplotlib 的網路。CSV 檔案中的資料由 15 列和大約 150 行組成。csv 檔案中的資料如下面的玩具示例所示。索引列由名稱串列組成。每個名稱都應該是一個節點。每個列名代表一個組織。“x”表示該人是該組織的成員。目標是將兩個人之間的所有直接關系顯示為一條邊——關系越多,visu 中的節點越大。感謝幫助!

作為文本:
(a)
Name Org A Org B Org C Org D Org F ...
Person 1 x x x x
Person 2 x x
Person 3 x
Person 4 x
Person 5 x x
Person 6
Person 7 x x x
Person 8 x x
Person 9 x
Person 10 x x x
...
uj5u.com熱心網友回復:
IIUC,你想要這樣的東西:
import networkx as nx
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
df = pd.DataFrame({'Name':[f'person {f}' for f in range(1,11)],
'Org A':['x'] [np.nan]*7 ['x'] [np.nan],
'Org B':['x'] [np.nan]*3 ['x'] [np.nan] ['x']*2 [np.nan]*2,
'Org C':['x',np.nan,'x'] [np.nan]*3 ['x'] [np.nan]*2 ['x'],
'Org D':['x', 'x', np.nan, 'x'] [np.nan]*2 ['x'] [np.nan]*2 ['x'],
'Org F':[np.nan] ['x'] [np.nan]*2 ['x'] [np.nan]*2 ['x'] [np.nan, 'x']})
dfm = df.melt('Name').dropna()
df_net= dfm.merge(dfm, on = 'variable').query('Name_x != Name_y')
G = nx.from_pandas_edgelist(df_net, 'Name_x', 'Name_y')
fig, ax = plt.subplots(figsize=(10,8))
nx.draw_networkx(G, ax=ax)
輸出:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/464547.html
標籤:Python 熊猫 CSV matplotlib 网络x
上一篇:動態選擇CSV檔案中的特定列
下一篇:如何更改csv列中的資料型別
