# 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