从pandas datafram的多个列构建networkx定向图或流程图

2024-06-16 12:47:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有熊猫数据帧,由10列组成。在

  • 每一行由一个用户执行的联机步骤组成。总共有10列,所以所有10步过程
  • 假设第一个活动是预订机票,步骤如下 登录网站-->give src dest time-->select seats-->pay--review

enter image description here

所以每一步都会有不同的排列,我想从所有的数据集中画一个有向图。在

当前networkx仅支持中的2列

# libraries
import pandas as pd
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt

# Build your graph
G=nx.from_pandas_dataframe(df, 'src', 'dest',create_using=nx.DiGraph())

# Plot it
nx.draw(G, with_labels=True)
plt.show()

有人能告诉我如何对多于两列的有向图进行d吗


Tags: 数据用户importsrcnetworkxpandas网站过程
1条回答
网友
1楼 · 发布于 2024-06-16 12:47:48

networkxfrom_pandas_dataframe使用add_edges_from,您可以执行类似的操作:

# libraries
import pandas as pd
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt

# Build your graph

df = pd.DataFrame(np.random.randn(2,4),columns=list('ABCD')) #Create a 4 column data frame

columns = list(df.columns.values)# Get columns name

g = nx.empty_graph(0, nx.DiGraph()) #initialize an empty graph

for i in range(len(columns)-1):
    g.add_edges_from(zip(df[columns[i]], df[columns[i+1]])) #Create edge between 2 values, between all consecutive coumns

# Plot it
nx.draw(g, with_labels=True)
plt.show()

结果是:

Resulting graph

相关问题 更多 >