как создать граф из списка ребер с помощью GraphFrame

У меня есть фрейм данных с двумя столбцами, которые являются списком краев, и я хочу создать из него график с помощью pyspark или python. Кто-нибудь может предложить, как это сделать. В R это можно сделать с помощью приведенной ниже команды из igraph

graph.edgelist(as.matrix(df))

мой входной фрейм данных - df

    valx      valy 
1: 600060     09283744
2: 600131     96733110 
3: 600194     01700001

Мой результат должен выглядеть, как показано ниже (в основном это все valx и valy в V1 и информация об их членстве в V2)

V1               V2
600060           1
96733110         1
01700001         2

person Tilo    schedule 07.06.2019    source источник
comment
networkx.from_pandas_dataframe тем, кем вы являетесь находясь в поиске? Я не могу сказать, нужен ли вам график в качестве вывода или другой фрейм данных.   -  person mdml    schedule 07.06.2019


Ответы (1)


Судя по желаемому результату, вам, похоже, нужен не график, а массив, показывающий, в какой строке изначально было сохранено ваше значение V1. Которое вы можете получить из исходного фрейма данных.

Я собираюсь предположить, что вы хотите преобразовать фрейм данных в формат графика, а не как указано выше.

import networkx as nx
import pandas as pd

filelocation = r'C:\Users\Documents\Tilo Edgelist'

Panda_edgelist = pd.read_csv(filelocation)

g = nx.from_pandas_edgelist(Panda_edgelist,'valx','valy')

nx.draw(g,with_labels = True,node_size = 0)

Приведенный выше код создаст для вас график на python, ниже показано, как будет выглядеть результат, если вы нарисуете график с помощью функции рисования из networkx.

Вывод графика на консоль

Я пошел дальше и предположил, что вы создаете фрейм данных, читая какой-то файл.

Если вы можете преобразовать этот файл в файл csv, вы можете прочитать его во фрейм данных с помощью pandas.

Формат файла csv, который я использовал, следующий:

valx,valy

600060,09283744

600131,96733110 

600194,01700001

замените путь к файлу в кавычках на путь к вашему файлу csv.

ниже вы можете увидеть, как выглядит фрейм данных из pd.read_csv

   valx      valy
0  600060   9283744
1  600131  96733110
2  600194   1700001

Итак, мы передаем этот фрейм данных в networkx, чтобы создать график

g = nx.from_pandas_edgelist(Panda_edgelist,'valx','valy')

В приведенной выше функции вы можете видеть, что я дал ей аргумент Panda_edgelist, а затем 'valx' и 'valy' в качестве имен столбцов исходного и целевого узла соответственно. Он использует эти аргументы для создания графа с именем g.

Наконец, я нарисовал график, сгенерированный в консоли с помощью nx.draw.

 nx.draw(g,with_labels = True,node_size = 0)

Эта функция требует, чтобы вы передали ей график, в нашем случае g.

with_labels = True используется для отображения имен / идентификаторов узлов.

node_size = 0 используется для того, чтобы нарисовать размер узла равным нулю. По умолчанию, если вы не дадите функции этот аргумент, она будет рисовать маленькие красные кружки для представления узлов на графике.

person Ankur    schedule 07.06.2019