Código.¶

In [85]:
# 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

Los datos están almacenados en un archivo .csv, en donde se especifica cada relación que existe en el grupo que se esta analizando.¶

In [86]:
 datos = pd.read_csv('grupos.csv', index_col=None)
In [87]:
datos.head(10)
Out[87]:
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
In [88]:
relationship_df = pd.DataFrame(datos)
In [89]:
pd.set_option('display.max_rows', None)
relationship_df
Out[89]:
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
In [90]:
relationship_df = pd.DataFrame(np.sort(relationship_df.values, axis = 1), columns = relationship_df.columns)
relationship_df
Out[90]:
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
In [91]:
relationship_df["value"] = 1
relationship_df = relationship_df.groupby(["source","target"], sort=False, as_index=False).sum()
In [92]:
relationship_df.head(20)
Out[92]:
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

Red social (Grafo)¶

In [93]:
# 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())
In [94]:
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()
In [95]:
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
Out[95]:

Visualizar comunidades dentro de la red¶

In [96]:
# Importamos librerias necesarias para mostrar la comunidades en una red
import community as community_louvain
import community.community_louvain as community_louvain
In [97]:
communities = community_louvain.best_partition(G)
In [98]:
communities
Out[98]:
{'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}
In [99]:
nx.set_node_attributes(G, communities, 'group')
In [100]:
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
Out[100]:
In [ ]:
 
In [ ]:
 
In [ ]: