Saltar al contenido principal
LibreTexts Español

15.5: Importación/Exportación de Datos de Red

  • Page ID
    115857
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)

    ( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\id}{\mathrm{id}}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\kernel}{\mathrm{null}\,}\)

    \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\)

    \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\)

    \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    \( \newcommand{\vectorA}[1]{\vec{#1}}      % arrow\)

    \( \newcommand{\vectorAt}[1]{\vec{\text{#1}}}      % arrow\)

    \( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vectorC}[1]{\textbf{#1}} \)

    \( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)

    \( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)

    \( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)

    \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    En la mayoría de los estudios de redes, los investigadores necesitan modelar y analizar las redes que existen en el mundo real. Para ello, necesitamos aprender a importar (y exportar) datos de red desde fuera de Python/NetworkX. Afortunadamente, NetworkX puede leer y escribir datos de red desde/hacia archivos en varios formatos 2.

    Fig. 15.5.png

    Fig 15.5 pt2.png

    Fig 15.5 pt3.png
    Figura\(\PageIndex{1}\): Salida visual de Código 15.13, mostrando ejemplos de opciones de dibujo disponibles en NetworkX. Las mismas posiciones de nodo se utilizan en todos los paneles. Los dos últimos ejemplos muestran los ejes porque se generan usando diferentes funciones de dibujo. Para suprimir los ejes, use axis ('off') justo después del dibujo de red.

    Trabajemos en un ejemplo sencillo. Puedes crear tu propia lista de adyacencias en una hoja de cálculo normal (como Microsoft Excel o Google Spreadsheet) y luego guardarla en un archivo en formato “csv” (Fig. 15.5.2). En este ejemplo, la lista de adyacencia dice que John está conectado a Jane y Jack; Jess está conectada con Josh y Jill; y así sucesivamente.

    Higo 15.6.png
    Figura\(\PageIndex{2}\): Crear una lista de adyacencias en una hoja de cálculo.

    Puedes leer este archivo usando el comando read_adjlist, de la siguiente manera:

    Código 15.14.png

    Higo 15.7.png
    Figura\(\PageIndex{3}\): Salida visual del Código 15.14.

    Se ve bien. No, espera, aquí hay un problema. Por alguna razón, ¡hay un nodo extra sin nombre (en la parte superior de la red en la Fig.15.5.3)! ¿Qué pasó? El motivo queda claro si abres el archivo CSV en un editor de texto, lo que revela que el archivo realmente se ve así:

    Código 15.15.png

    Anote las comas al final de la tercera, cuarta y quinta líneas. Muchas aplicaciones de hojas de cálculo tienden a insertar estas comas adicionales para que el número de columnas sea igual para todas las filas. Es por ello que NetworkX pensó que habría otro nodo cuyo nombre era “” (en blanco). Puedes eliminar esas comas innecesarias en el editor de texto y guardar el archivo. O bien, podría modificar el código de visualización para eliminar el nodo sin nombre antes de dibujar la red. De cualquier manera, el resultado actualizado se muestra en la Fig. 15.5.4.

    Higo 15.8.png
    Figura Salida\(\PageIndex{4}\) visual del Código 15.14 con un archivo de datos CSV corregido.

    Si desea importar los datos como un gráfico dirigido, puede usar la opción create_using en el comando read_adjlist, de la siguiente manera:

    Código 15.16.png
    El resultado se muestra en la Fig.15.5.5, en la que las puntas de flecha se indican mediante segmentos de línea gruesa.

    Otra función simple para importar datos es read_edgelist. Esta función lee una lista de bordes, es decir, una lista de pares de nodos, formateada de la siguiente manera:

    Código 15.17.png

    Higo 15.9.png
    Figura\(\PageIndex{5}\): Salida visual del Código 15.16.

    Una característica útil de read_edgelist es que puede importar no solo bordes sino también sus propiedades, tales como:

    Código 15.18.png

    La tercera columna de este archivo de datos está estructurada como un diccionario Python, que se importará como propiedad del borde.

    Ejercicio\(\PageIndex{1}\)

    Crea un archivo de datos de la red social que creaste en el Ejercicio 15.3.2 usando una aplicación de hoja de cálculo, y luego lee el archivo y visualízalo usando NetworkX. Puede usar el formato de lista de adyacencia o el formato de lista de bordes.

    Ejercicio\(\PageIndex{2}\)

    Importe los datos de red de su elección desde el sitio web de Network Data de Mark Newman: http://www-personal.umich.edu/~mejn/netdata/. Los datos de este sitio web están todos en formato GML, por lo que debe averiguar cómo importarlos a NetworkX. Luego visualice la red importada.

    Por último, NetworkX también tiene funciones para escribir archivos de datos de red a partir de sus objetos graph, como write_adjlist y write_edgelist. Su uso es muy sencillo. Aquí hay un ejemplo:

    Código 15.19.png
    Entonces aparecerá un nuevo archivo de texto llamado 'complete-graph.txt' en la misma carpeta, que se ve así:

    Código 15.20.png

    Tenga en cuenta que la lista de adyacencia está optimizada para que no haya información redundante incluida en esta salida. Por ejemplo, el nodo 4 está conectado a 0, 1, 2 y 3, pero esta información no se incluye en la última línea porque ya estaba representada en las líneas anteriores.

    Ejercicio\(\PageIndex{3}\)

    Escriba los datos de red de la gráfica Zachary Karate Club en un archivo en cada uno de los siguientes formatos:

    • Lista de adyacencia

    • Lista de bordes

    2 Para más detalles, consulte https://networkx.github.io/documenta...ence/readwrite. html.

    3 Si no puede leer el archivo de datos u obtener el resultado correcto, puede deberse a que su NetworkX no reconoció caracteres de nueva línea específicos del sistema operativo en el archivo (esto puede ocurrir particularmente para usuarios de Mac). Puede evitar este problema guardando el archivo CSV en un modo diferente (por ejemplo, modo “MS-DOS” en Microsoft Excel).


    This page titled 15.5: Importación/Exportación de Datos de Red is shared under a CC BY-NC-SA 3.0 license and was authored, remixed, and/or curated by Hiroki Sayama (OpenSUNY) via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.