У меня есть фрейм данных с примерно 8 800 строками, из которого я хочу создать сеть с помощью networkx.Базовая структура фрейма данных для генерации сети показана ниже:
df = pd.DataFrame({'id_emp':[13524791000109, 12053850000137, 4707821000113],
'name_dep': ['DIONILSO MATEUS MARCON', 'JOSE AUGUSTO ROSA', 'LUCIO ANTONIO MOSQUINI'],
'roi':[12, 15, 18]
})
В сети, которую я хочу представить, есть два типа узлов: «id_emp» и «name_dep», и для каждого есть ребрапара этих значений, которые находятся на одной линии.Следовательно, сеть будет иметь 17 600 узлов.Края будут иметь веса, основанные на колонке Рой.Ниже приведен код для создания сети:
import networkx as nx
G = nx.Graph()
G.add_nodes_from(df['id_emp'], type_='id_emp')
for node in G.nodes:
G.nodes[node]['fornecedor'] = df[df['id_emp'] == node]['fornecedor'].values[0]
G.add_nodes_from(df['name_dep'], type_='name_dep')
G.add_weighted_edges_from(df[['id_emp', 'name_dep', 'roi']].values)
colors = ['#0000FF' if G.nodes[n]['type_'] == 'id_emp' else '#FF0000' for n in G.nodes]
edge_width = [a[2]['weight'] for a in G.edges(data=True)]
plt.figure(figsize=(7.5,7.5))
nx.draw(G, pos = nx.kamada_kawai_layout(G), node_size = 100,
node_color = colors, with_labels=False, edge_cmap=plt.cm.Blues)
nx.draw_networkx_edges(G,pos=nx.kamada_kawai_layout(G),width=edge_width)
plt.axis('off')
plt.show()
Сеть с исходным фреймом данных выглядит следующим образом:
![enter image description here](https://i.stack.imgur.com/sohmh.png)
Myвопросы заключаются в следующем: уместно ли строить сети с таким количеством узлов, используя networkx?Если да, как я могу улучшить вид сети?Если нет, что я должен сделать, чтобы улучшить вид сети?