簡體   English   中英

使用NetworkX Python在圖形中進行循環檢測

[英]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_edgelistto_pandas_edgelistfrom_pandas_adjacencyto_pandas_adjacency

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM