[英]Cycle Detection in a Graph using NetworkX Python
我的CSV文件擁有約260萬筆不同人之間的交易記錄。 我正在嘗試從此文件制作一個圖形:具有唯一ID作為節點和代表兩個人之間交易的邊的人,並希望從圖形中獲取所有可能的周期。 我正在嘗試使用networkx.simple_cycles(graph_name)
從該圖獲取所有周期,但出現此錯誤:
NetworkXNotImplemented Traceback (most recent call
last)
<ipython-input-21-c36e4cd0e220> in <module>()
----> 1 nx.simple_cycles(Directed_G)
<decorator-gen-215> in simple_cycles(G)
~\AppData\Local\Continuum\anaconda3\lib\site-
packages\networkx\utils\decorators.py in _not_implemented_for(f, *args,
**kwargs)
64 if match:
65 raise nx.NetworkXNotImplemented('not implemented for %s
type'%
---> 66 '
'.join(graph_types))
67 else:
68 return f(*args,**kwargs)
NetworkXNotImplemented: not implemented for undirected type
我的Python代碼如下所示:
import pandas as pd
import time
import networkx as nx
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
data=pd.read_csv(path/to/csv/file)
Directed_G=nx.DiGraph()
Directed_G=nx.from_pandas_dataframe(data, 'from', 'to')
nx.simple_cycles(Directed_G)
我的數據如下所示:
from to
0 000028c1f8598db 1a55bc3aab8562f
1 00003147f02a255 9c1f54d9859ce12
2 00003cdc5ed35a0 472f48d28903b43
3 00003cdc5ed35a0 5ab9e7e07978f9d
4 00003cdc5ed35a0 693452b7ae2fd0c
有人可以幫我解決這個錯誤。 可以使用其他方法從該圖中找到所有可能的周期嗎?
執行此操作時:
Directed_G=nx.from_pandas_dataframe(data, 'from', 'to')
它從pandas數據框創建一個圖形,並將該結果分配給名稱Directed_G
。 它不會首先檢查以前是哪種圖形Directed_G
。 因此,它將使用默認類型( Graph
)創建一個圖,並且存儲在Directed_G
的前一個圖將被覆蓋,丟失給天空中的大型垃圾收集器。 然后,用於查找循環的命令死了,因為它無法處理無向圖。
可選的參數添加create_using=DiGraph
您的來電from_pandas_dataframe
。
您應該知道,在最新版本的networkx中, from_pandas_dataframe
已被刪除: https : from_pandas_dataframe
以前,函數
from_pandas_dataframe
假定該數據幀具有類似邊緣列表的結構,但是to_pandas_dataframe
生成一個鄰接矩陣。 現在,我們提供了四個函數from_pandas_edgelist
,to_pandas_edgelist
,from_pandas_adjacency
和to_pandas_adjacency
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.