我有 pandas 数据框,由 10 列组成。
- 每行包含用户在线执行的一个步骤。总共 10 列,因此所有 10 个步骤过程
- 假设第一个活动是预订机票,那么步骤是
登录网站-->给出出发时间-->选择座位-->付款--审核
![enter image description here](https://i.stack.imgur.com/LFAun.png)
所以每一步都可能发生各种排列,我想从所有数据集中绘制一个有向图。
目前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()
有人可以告诉我如何处理两列以上的有向图吗
网络xfrom_pandas_dataframe
uses 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()
With a result:
![Resulting graph](https://i.stack.imgur.com/2BfxU.png)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)