# Importamos las librerias y dependencias necesarias.
import pandas as pd
import numpy as np
import spacy
from spacy import displacy
import networkx as nx
import matplotlib.pyplot as plt
datos = pd.read_csv('cuarto.csv', index_col=None)
datos.head(10)
| source | target | |
|---|---|---|
| 0 | Azul | Bere |
| 1 | Azul | Carlos |
| 2 | Azul | Lesli |
| 3 | Yahir | Armando |
| 4 | Yahir | Bere |
| 5 | Yahir | Carlos |
| 6 | Yahir | Oscar |
| 7 | Yahir | Said |
| 8 | Armando | Yahir |
| 9 | Armando | Oscar |
relationship_df = pd.DataFrame(datos)
pd.set_option('display.max_rows', None)
relationship_df
| source | target | |
|---|---|---|
| 0 | Azul | Bere |
| 1 | Azul | Carlos |
| 2 | Azul | Lesli |
| 3 | Yahir | Armando |
| 4 | Yahir | Bere |
| 5 | Yahir | Carlos |
| 6 | Yahir | Oscar |
| 7 | Yahir | Said |
| 8 | Armando | Yahir |
| 9 | Armando | Oscar |
| 10 | Armando | Carlos |
| 11 | Bere | Azul |
| 12 | Bere | Yahir |
| 13 | Bere | Carlos |
| 14 | Bere | Francisco |
| 15 | Bere | Lesli |
| 16 | Bere | Oscar |
| 17 | Bere | Pedro |
| 18 | Bere | Said |
| 19 | Carlos | Azul |
| 20 | Carlos | Yahir |
| 21 | Carlos | Bere |
| 22 | Carlos | Jesus |
| 23 | Carlos | Francisco |
| 24 | Carlos | Lesli |
| 25 | Carlos | Oscar |
| 26 | Carlos | Pedro |
| 27 | Carlos | Said |
| 28 | Jesus | Carlos |
| 29 | Jesus | Francisco |
| 30 | Jesus | Lesli |
| 31 | Jesus | Oscar |
| 32 | Jesus | Said |
| 33 | Francisco | Azul |
| 34 | Francisco | Yahir |
| 35 | Francisco | Armando |
| 36 | Francisco | Bere |
| 37 | Francisco | Carlos |
| 38 | Francisco | Jesus |
| 39 | Francisco | Lesli |
| 40 | Francisco | Oscar |
| 41 | Francisco | Pedro |
| 42 | Francisco | Said |
| 43 | Lesli | Azul |
| 44 | Lesli | Yahir |
| 45 | Lesli | Bere |
| 46 | Lesli | Carlos |
| 47 | Lesli | Jesus |
| 48 | Lesli | Francisco |
| 49 | Lesli | Oscar |
| 50 | Lesli | Pedro |
| 51 | Lesli | Said |
| 52 | Oscar | Azul |
| 53 | Oscar | Yahir |
| 54 | Oscar | Armando |
| 55 | Oscar | Bere |
| 56 | Oscar | Carlos |
| 57 | Oscar | Jesus |
| 58 | Oscar | Francisco |
| 59 | Oscar | Lesli |
| 60 | Oscar | Pedro |
| 61 | Oscar | Said |
| 62 | Pedro | Bere |
| 63 | Pedro | Carlos |
| 64 | Pedro | Francisco |
| 65 | Pedro | Lesli |
| 66 | Pedro | Oscar |
| 67 | Pedro | Said |
| 68 | Said | Carlos |
| 69 | Said | Francisco |
| 70 | Said | Lesli |
| 71 | Said | Oscar |
relationship_df = pd.DataFrame(np.sort(relationship_df.values, axis = 1), columns = relationship_df.columns)
relationship_df
| source | target | |
|---|---|---|
| 0 | Azul | Bere |
| 1 | Azul | Carlos |
| 2 | Azul | Lesli |
| 3 | Armando | Yahir |
| 4 | Bere | Yahir |
| 5 | Carlos | Yahir |
| 6 | Oscar | Yahir |
| 7 | Said | Yahir |
| 8 | Armando | Yahir |
| 9 | Armando | Oscar |
| 10 | Armando | Carlos |
| 11 | Azul | Bere |
| 12 | Bere | Yahir |
| 13 | Bere | Carlos |
| 14 | Bere | Francisco |
| 15 | Bere | Lesli |
| 16 | Bere | Oscar |
| 17 | Bere | Pedro |
| 18 | Bere | Said |
| 19 | Azul | Carlos |
| 20 | Carlos | Yahir |
| 21 | Bere | Carlos |
| 22 | Carlos | Jesus |
| 23 | Carlos | Francisco |
| 24 | Carlos | Lesli |
| 25 | Carlos | Oscar |
| 26 | Carlos | Pedro |
| 27 | Carlos | Said |
| 28 | Carlos | Jesus |
| 29 | Francisco | Jesus |
| 30 | Jesus | Lesli |
| 31 | Jesus | Oscar |
| 32 | Jesus | Said |
| 33 | Azul | Francisco |
| 34 | Francisco | Yahir |
| 35 | Armando | Francisco |
| 36 | Bere | Francisco |
| 37 | Carlos | Francisco |
| 38 | Francisco | Jesus |
| 39 | Francisco | Lesli |
| 40 | Francisco | Oscar |
| 41 | Francisco | Pedro |
| 42 | Francisco | Said |
| 43 | Azul | Lesli |
| 44 | Lesli | Yahir |
| 45 | Bere | Lesli |
| 46 | Carlos | Lesli |
| 47 | Jesus | Lesli |
| 48 | Francisco | Lesli |
| 49 | Lesli | Oscar |
| 50 | Lesli | Pedro |
| 51 | Lesli | Said |
| 52 | Azul | Oscar |
| 53 | Oscar | Yahir |
| 54 | Armando | Oscar |
| 55 | Bere | Oscar |
| 56 | Carlos | Oscar |
| 57 | Jesus | Oscar |
| 58 | Francisco | Oscar |
| 59 | Lesli | Oscar |
| 60 | Oscar | Pedro |
| 61 | Oscar | Said |
| 62 | Bere | Pedro |
| 63 | Carlos | Pedro |
| 64 | Francisco | Pedro |
| 65 | Lesli | Pedro |
| 66 | Oscar | Pedro |
| 67 | Pedro | Said |
| 68 | Carlos | Said |
| 69 | Francisco | Said |
| 70 | Lesli | Said |
| 71 | Oscar | Said |
relationship_df["value"] = 1
relationship_df = relationship_df.groupby(["source","target"], sort=False, as_index=False).sum()
relationship_df.head(20)
| source | target | value | |
|---|---|---|---|
| 0 | Azul | Bere | 2 |
| 1 | Azul | Carlos | 2 |
| 2 | Azul | Lesli | 2 |
| 3 | Armando | Yahir | 2 |
| 4 | Bere | Yahir | 2 |
| 5 | Carlos | Yahir | 2 |
| 6 | Oscar | Yahir | 2 |
| 7 | Said | Yahir | 1 |
| 8 | Armando | Oscar | 2 |
| 9 | Armando | Carlos | 1 |
| 10 | Bere | Carlos | 2 |
| 11 | Bere | Francisco | 2 |
| 12 | Bere | Lesli | 2 |
| 13 | Bere | Oscar | 2 |
| 14 | Bere | Pedro | 2 |
| 15 | Bere | Said | 1 |
| 16 | Carlos | Jesus | 2 |
| 17 | Carlos | Francisco | 2 |
| 18 | Carlos | Lesli | 2 |
| 19 | Carlos | Oscar | 2 |
# Create a graph from a pandas dataframe
G = nx.from_pandas_edgelist(relationship_df,
source = "source",
target = "target",
edge_attr = "value",
create_using = nx.Graph())
plt.figure(figsize=(10,10))
pos = nx.kamada_kawai_layout(G)
nx.draw(G, with_labels=True, node_color='skyblue', edge_cmap=plt.cm.Blues, pos = pos)
plt.show()
from pyvis.network import Network
net = Network(notebook = True, width="1366px", height="768px", bgcolor='#222222', font_color='white')
node_degree = dict(G.degree)
#Setting up node size attribute
nx.set_node_attributes(G, node_degree, 'size')
net.from_nx(G)
net.show("r4.html")
Warning: When cdn_resources is 'local' jupyter notebook has issues displaying graphics on chrome/safari. Use cdn_resources='in_line' or cdn_resources='remote' if you have issues viewing graphics in a notebook. r4.html
# Importamos librerias necesarias para mostrar la comunidades en una red
import community as community_louvain
import community.community_louvain as community_louvain
communities = community_louvain.best_partition(G)
communities
{'Azul': 0,
'Bere': 0,
'Carlos': 1,
'Lesli': 1,
'Armando': 0,
'Yahir': 0,
'Oscar': 0,
'Said': 1,
'Francisco': 0,
'Pedro': 1,
'Jesus': 1}
nx.set_node_attributes(G, communities, 'group')
com_net = Network(notebook = True, width="1366px", height="768px", bgcolor='#222222', font_color='white')
com_net.from_nx(G)
com_net.show("r4_communities.html")
Warning: When cdn_resources is 'local' jupyter notebook has issues displaying graphics on chrome/safari. Use cdn_resources='in_line' or cdn_resources='remote' if you have issues viewing graphics in a notebook. r4_communities.html