Мы работаем над данными Blockchain и запускаем коды в Python Jupyter Notebook прямо сейчас.Я обнаружил, что не было такой функции объединения для слияния двух графиков в networkx
, поэтому я просто слил вручную.Так как в графике могут быть самопетли и несколько ребер и общие узлы в обоих графах, я сначала создал два графа отдельно, а затем извлек узлы и ребра из этих двух графов, а затем создал объединение уникальных узлов и всех ребер в дваграфики.После этого я создал новый большой граф, используя объединение узлов и ребер.Из-за 26 миллионов данных я потратил около 30 минут на создание каждого графа и 30 минут на создание ребер и узлов объединения.Создание двухнедельного графика из ребер и узлов объединения занимает 56 минут.Таким образом, весь процесс создания двухнедельного графика с использованием функции объединения занимает около 120 минут.Поскольку тестирование с данными за две недели заняло так много времени, мы считаем, что иметь дело с данными за несколько месяцев будет страшным кошмаром. Мне было интересно, могут ли эти другие способы помочь нам сэкономить гораздо больше времени и памятипри запуске кодов. Вот код:
Создание двух графиков отдельно, потрачено 30 минут на каждый график
edges_week2 = [tuple(x) for x in week2.to_records(index=False)]
df1 = week2.stack().reset_index(drop=True, level=1).reset_index(name='Nodes')
nodes0 = df1['Nodes'].tolist()
nodes_week2 = list(set(nodes0))
G_week1 = nx.MultiDiGraph()
G_week1.add_nodes_from(nodes_week1)
G_week1.add_edges_from(edges_week1)
G_week2 = nx.MultiDiGraph()
G_week2.add_nodes_from(nodes_week2)
G_week2.add_edges_from(edges_week2)
Создание ребер объединения и узлов, потрачено 30 минут
week_union_nodes=list(set(list(G_week1.nodes)+list(G_week2.nodes)))
week_union_edges=list(list(G_week1.edges())+list(G_week2.edges()))
Создание двухнедельного графика из ребер и узлов объединения занимает 56 минут
G_week_union=nx.MultiDiGraph()
G_week_union.add_nodes_from(week_union_nodes)
G_week_union.add_edges_from(week_union_edges)