Código.¶

In [33]:
# 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 [34]:
 datos = pd.read_csv('cuarto.csv', index_col=None)
In [35]:
datos.head(10)
Out[35]:
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
In [36]:
relationship_df = pd.DataFrame(datos)
In [37]:
pd.set_option('display.max_rows', None)
relationship_df
Out[37]:
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
In [38]:
relationship_df = pd.DataFrame(np.sort(relationship_df.values, axis = 1), columns = relationship_df.columns)
relationship_df
Out[38]:
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
In [39]:
relationship_df["value"] = 1
relationship_df = relationship_df.groupby(["source","target"], sort=False, as_index=False).sum()
In [40]:
relationship_df.head(20)
Out[40]:
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

Red social (Grafo)¶

In [41]:
# 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 [42]:
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 [43]:
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
Out[43]:

Visualizar comunidades dentro de la red¶

In [44]:
# Importamos librerias necesarias para mostrar la comunidades en una red
import community as community_louvain
import community.community_louvain as community_louvain
In [45]:
communities = community_louvain.best_partition(G)
In [46]:
communities
Out[46]:
{'Azul': 0,
 'Bere': 0,
 'Carlos': 1,
 'Lesli': 1,
 'Armando': 0,
 'Yahir': 0,
 'Oscar': 0,
 'Said': 1,
 'Francisco': 0,
 'Pedro': 1,
 'Jesus': 1}
In [47]:
nx.set_node_attributes(G, communities, 'group')
In [48]:
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
Out[48]:
In [ ]:
 
In [ ]:
 
In [ ]: