# 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('grupos.csv', index_col=None)
datos.head(10)
source | target | |
---|---|---|
0 | Jesus | Alexis |
1 | Jesus | Aldahir |
2 | Jesus | David |
3 | Jesus | Israel |
4 | Jesus | Mago |
5 | Jesus | Ramon |
6 | Alexis | Jesus |
7 | Aldahir | Jesus |
8 | David | Jesus |
9 | Israel | Jesus |
relationship_df = pd.DataFrame(datos)
pd.set_option('display.max_rows', None)
relationship_df
source | target | |
---|---|---|
0 | Jesus | Alexis |
1 | Jesus | Aldahir |
2 | Jesus | David |
3 | Jesus | Israel |
4 | Jesus | Mago |
5 | Jesus | Ramon |
6 | Alexis | Jesus |
7 | Aldahir | Jesus |
8 | David | Jesus |
9 | Israel | Jesus |
10 | Mago | Jesus |
11 | Ramon | Jesus |
12 | Lesli | Alexis |
13 | Lesli | Aldahir |
14 | Alexis | Lesli |
15 | Aldahir | Lesli |
16 | Said | Alexis |
17 | Said | Aldahir |
18 | Said | Ceci |
19 | Said | David |
20 | Said | Israel |
21 | Said | Mago |
22 | Said | Ramon |
23 | Said | Naye |
24 | Said | Vianey |
25 | Alexis | Said |
26 | Aldahir | Said |
27 | Ceci | Said |
28 | David | Said |
29 | Israel | Said |
30 | Mago | Said |
31 | Ramon | Said |
32 | Naye | Said |
33 | Vianey | Said |
34 | Oscar | Alexis |
35 | Oscar | Aldahir |
36 | Oscar | Ceci |
37 | Oscar | David |
38 | Oscar | Israel |
39 | Oscar | Mago |
40 | Oscar | Ramon |
41 | Oscar | Naye |
42 | Oscar | Vianey |
43 | Alexis | Oscar |
44 | Aldahir | Oscar |
45 | Ceci | Oscar |
46 | David | Oscar |
47 | Israel | Oscar |
48 | Mago | Oscar |
49 | Ramon | Oscar |
50 | Naye | Oscar |
51 | Vianey | Oscar |
52 | Oscar | Brian |
53 | Oscar | Fernando |
54 | Oscar | Dzain |
55 | Oscar | Misael |
56 | Oscar | Karen |
57 | Oscar | Estefania |
58 | Oscar | Marisol |
59 | Lesli | Marisol |
60 | Brian | Oscar |
61 | Fernando | Oscar |
62 | Dzain | Oscar |
63 | Misael | Oscar |
64 | Karen | Oscar |
65 | Estefania | Oscar |
66 | Marisol | Oscar |
67 | Marisol | Lesli |
68 | Brian | Fernando |
69 | Brian | Dzain |
70 | Brian | Misael |
71 | Fernando | Brian |
72 | Fernando | Dzain |
73 | Fernando | Misael |
74 | Dzain | Brian |
75 | Dzain | Fernando |
76 | Dzain | Misael |
77 | Misael | Brian |
78 | Misael | Fernando |
79 | Misael | Dzain |
80 | Karen | Estefania |
81 | Karen | Marisol |
82 | Estefania | Karen |
83 | Estefania | Marisol |
84 | Marisol | Karen |
85 | Marisol | Estefania |
86 | Azul | Bere |
87 | Azul | Carlos |
88 | Azul | Lesli |
89 | Yahir | Armando |
90 | Yahir | Bere |
91 | Yahir | Carlos |
92 | Yahir | Oscar |
93 | Yahir | Said |
94 | Armando | Yahir |
95 | Armando | Oscar |
96 | Armando | Carlos |
97 | Bere | Azul |
98 | Bere | Yahir |
99 | Bere | Carlos |
100 | Bere | Francisco |
101 | Bere | Lesli |
102 | Bere | Oscar |
103 | Bere | Pedro |
104 | Bere | Said |
105 | Carlos | Azul |
106 | Carlos | Yahir |
107 | Carlos | Bere |
108 | Carlos | Jesus |
109 | Carlos | Francisco |
110 | Carlos | Lesli |
111 | Carlos | Oscar |
112 | Carlos | Pedro |
113 | Carlos | Said |
114 | Jesus | Carlos |
115 | Jesus | Francisco |
116 | Jesus | Lesli |
117 | Jesus | Oscar |
118 | Jesus | Said |
119 | Francisco | Azul |
120 | Francisco | Yahir |
121 | Francisco | Armando |
122 | Francisco | Bere |
123 | Francisco | Carlos |
124 | Francisco | Jesus |
125 | Francisco | Lesli |
126 | Francisco | Oscar |
127 | Francisco | Pedro |
128 | Francisco | Said |
129 | Lesli | Azul |
130 | Lesli | Yahir |
131 | Lesli | Bere |
132 | Lesli | Carlos |
133 | Lesli | Jesus |
134 | Lesli | Francisco |
135 | Lesli | Oscar |
136 | Lesli | Pedro |
137 | Lesli | Said |
138 | Oscar | Azul |
139 | Oscar | Yahir |
140 | Oscar | Armando |
141 | Oscar | Bere |
142 | Oscar | Carlos |
143 | Oscar | Jesus |
144 | Oscar | Francisco |
145 | Oscar | Lesli |
146 | Oscar | Pedro |
147 | Oscar | Said |
148 | Pedro | Bere |
149 | Pedro | Carlos |
150 | Pedro | Francisco |
151 | Pedro | Lesli |
152 | Pedro | Oscar |
153 | Pedro | Said |
154 | Said | Carlos |
155 | Said | Francisco |
156 | Said | Lesli |
157 | Said | Oscar |
158 | Alexis | Ceci |
159 | Alexis | Vianey |
160 | Alexis | Mago |
161 | Aldahir | David |
162 | Aldahir | Israel |
163 | Aldahir | Ramon |
164 | Aldahir | Naye |
165 | Ceci | Alexis |
166 | Ceci | Vianey |
167 | Ceci | Aldahir |
168 | David | Aldahir |
169 | David | Israel |
170 | David | Mago |
171 | David | Ramon |
172 | David | Naye |
173 | Israel | Alexis |
174 | Israel | Aldahir |
175 | Israel | Ceci |
176 | Israel | David |
177 | Israel | Mago |
178 | Israel | Ramon |
179 | Israel | Naye |
180 | Israel | Vianey |
181 | Mago | Alexis |
182 | Mago | David |
183 | Mago | Israel |
184 | Mago | Ramon |
185 | Ramon | Alexis |
186 | Ramon | Aldahir |
187 | Ramon | David |
188 | Ramon | Israel |
189 | Ramon | Mago |
190 | Ramon | Naye |
191 | Ramon | Vianey |
192 | Naye | Aldahir |
193 | Naye | David |
194 | Naye | Israel |
195 | Naye | Ramon |
196 | Vianey | Alexis |
197 | Vianey | Ceci |
198 | Vianey | Israel |
199 | Vianey | Ramon |
relationship_df = pd.DataFrame(np.sort(relationship_df.values, axis = 1), columns = relationship_df.columns)
relationship_df
source | target | |
---|---|---|
0 | Alexis | Jesus |
1 | Aldahir | Jesus |
2 | David | Jesus |
3 | Israel | Jesus |
4 | Jesus | Mago |
5 | Jesus | Ramon |
6 | Alexis | Jesus |
7 | Aldahir | Jesus |
8 | David | Jesus |
9 | Israel | Jesus |
10 | Jesus | Mago |
11 | Jesus | Ramon |
12 | Alexis | Lesli |
13 | Aldahir | Lesli |
14 | Alexis | Lesli |
15 | Aldahir | Lesli |
16 | Alexis | Said |
17 | Aldahir | Said |
18 | Ceci | Said |
19 | David | Said |
20 | Israel | Said |
21 | Mago | Said |
22 | Ramon | Said |
23 | Naye | Said |
24 | Said | Vianey |
25 | Alexis | Said |
26 | Aldahir | Said |
27 | Ceci | Said |
28 | David | Said |
29 | Israel | Said |
30 | Mago | Said |
31 | Ramon | Said |
32 | Naye | Said |
33 | Said | Vianey |
34 | Alexis | Oscar |
35 | Aldahir | Oscar |
36 | Ceci | Oscar |
37 | David | Oscar |
38 | Israel | Oscar |
39 | Mago | Oscar |
40 | Oscar | Ramon |
41 | Naye | Oscar |
42 | Oscar | Vianey |
43 | Alexis | Oscar |
44 | Aldahir | Oscar |
45 | Ceci | Oscar |
46 | David | Oscar |
47 | Israel | Oscar |
48 | Mago | Oscar |
49 | Oscar | Ramon |
50 | Naye | Oscar |
51 | Oscar | Vianey |
52 | Brian | Oscar |
53 | Fernando | Oscar |
54 | Dzain | Oscar |
55 | Misael | Oscar |
56 | Karen | Oscar |
57 | Estefania | Oscar |
58 | Marisol | Oscar |
59 | Lesli | Marisol |
60 | Brian | Oscar |
61 | Fernando | Oscar |
62 | Dzain | Oscar |
63 | Misael | Oscar |
64 | Karen | Oscar |
65 | Estefania | Oscar |
66 | Marisol | Oscar |
67 | Lesli | Marisol |
68 | Brian | Fernando |
69 | Brian | Dzain |
70 | Brian | Misael |
71 | Brian | Fernando |
72 | Dzain | Fernando |
73 | Fernando | Misael |
74 | Brian | Dzain |
75 | Dzain | Fernando |
76 | Dzain | Misael |
77 | Brian | Misael |
78 | Fernando | Misael |
79 | Dzain | Misael |
80 | Estefania | Karen |
81 | Karen | Marisol |
82 | Estefania | Karen |
83 | Estefania | Marisol |
84 | Karen | Marisol |
85 | Estefania | Marisol |
86 | Azul | Bere |
87 | Azul | Carlos |
88 | Azul | Lesli |
89 | Armando | Yahir |
90 | Bere | Yahir |
91 | Carlos | Yahir |
92 | Oscar | Yahir |
93 | Said | Yahir |
94 | Armando | Yahir |
95 | Armando | Oscar |
96 | Armando | Carlos |
97 | Azul | Bere |
98 | Bere | Yahir |
99 | Bere | Carlos |
100 | Bere | Francisco |
101 | Bere | Lesli |
102 | Bere | Oscar |
103 | Bere | Pedro |
104 | Bere | Said |
105 | Azul | Carlos |
106 | Carlos | Yahir |
107 | Bere | Carlos |
108 | Carlos | Jesus |
109 | Carlos | Francisco |
110 | Carlos | Lesli |
111 | Carlos | Oscar |
112 | Carlos | Pedro |
113 | Carlos | Said |
114 | Carlos | Jesus |
115 | Francisco | Jesus |
116 | Jesus | Lesli |
117 | Jesus | Oscar |
118 | Jesus | Said |
119 | Azul | Francisco |
120 | Francisco | Yahir |
121 | Armando | Francisco |
122 | Bere | Francisco |
123 | Carlos | Francisco |
124 | Francisco | Jesus |
125 | Francisco | Lesli |
126 | Francisco | Oscar |
127 | Francisco | Pedro |
128 | Francisco | Said |
129 | Azul | Lesli |
130 | Lesli | Yahir |
131 | Bere | Lesli |
132 | Carlos | Lesli |
133 | Jesus | Lesli |
134 | Francisco | Lesli |
135 | Lesli | Oscar |
136 | Lesli | Pedro |
137 | Lesli | Said |
138 | Azul | Oscar |
139 | Oscar | Yahir |
140 | Armando | Oscar |
141 | Bere | Oscar |
142 | Carlos | Oscar |
143 | Jesus | Oscar |
144 | Francisco | Oscar |
145 | Lesli | Oscar |
146 | Oscar | Pedro |
147 | Oscar | Said |
148 | Bere | Pedro |
149 | Carlos | Pedro |
150 | Francisco | Pedro |
151 | Lesli | Pedro |
152 | Oscar | Pedro |
153 | Pedro | Said |
154 | Carlos | Said |
155 | Francisco | Said |
156 | Lesli | Said |
157 | Oscar | Said |
158 | Alexis | Ceci |
159 | Alexis | Vianey |
160 | Alexis | Mago |
161 | Aldahir | David |
162 | Aldahir | Israel |
163 | Aldahir | Ramon |
164 | Aldahir | Naye |
165 | Alexis | Ceci |
166 | Ceci | Vianey |
167 | Aldahir | Ceci |
168 | Aldahir | David |
169 | David | Israel |
170 | David | Mago |
171 | David | Ramon |
172 | David | Naye |
173 | Alexis | Israel |
174 | Aldahir | Israel |
175 | Ceci | Israel |
176 | David | Israel |
177 | Israel | Mago |
178 | Israel | Ramon |
179 | Israel | Naye |
180 | Israel | Vianey |
181 | Alexis | Mago |
182 | David | Mago |
183 | Israel | Mago |
184 | Mago | Ramon |
185 | Alexis | Ramon |
186 | Aldahir | Ramon |
187 | David | Ramon |
188 | Israel | Ramon |
189 | Mago | Ramon |
190 | Naye | Ramon |
191 | Ramon | Vianey |
192 | Aldahir | Naye |
193 | David | Naye |
194 | Israel | Naye |
195 | Naye | Ramon |
196 | Alexis | Vianey |
197 | Ceci | Vianey |
198 | Israel | Vianey |
199 | Ramon | Vianey |
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 | Alexis | Jesus | 2 |
1 | Aldahir | Jesus | 2 |
2 | David | Jesus | 2 |
3 | Israel | Jesus | 2 |
4 | Jesus | Mago | 2 |
5 | Jesus | Ramon | 2 |
6 | Alexis | Lesli | 2 |
7 | Aldahir | Lesli | 2 |
8 | Alexis | Said | 2 |
9 | Aldahir | Said | 2 |
10 | Ceci | Said | 2 |
11 | David | Said | 2 |
12 | Israel | Said | 2 |
13 | Mago | Said | 2 |
14 | Ramon | Said | 2 |
15 | Naye | Said | 2 |
16 | Said | Vianey | 2 |
17 | Alexis | Oscar | 2 |
18 | Aldahir | Oscar | 2 |
19 | Ceci | 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("rg.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. rg.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
{'Alexis': 0, 'Jesus': 0, 'Aldahir': 0, 'David': 0, 'Israel': 0, 'Mago': 0, 'Ramon': 0, 'Lesli': 1, 'Said': 0, 'Ceci': 0, 'Naye': 0, 'Vianey': 0, 'Oscar': 2, 'Brian': 2, 'Fernando': 2, 'Dzain': 2, 'Misael': 2, 'Karen': 2, 'Estefania': 2, 'Marisol': 2, 'Azul': 1, 'Bere': 1, 'Carlos': 1, 'Armando': 1, 'Yahir': 1, 'Francisco': 1, 'Pedro': 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("rg_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. rg_communities.html