【发布时间】:2017-07-28 11:55:21
【问题描述】:
我已经开始使用graph-tool,希望它是一个 python 库,可以让我分析大图(~8M 顶点,~22M 边,在 Pandas DataFrame / CSV 中)。 'source' 和 'target' 列是特定数字服务的用户 ID。
我从一个玩具示例开始,遵循in this post 的方法。
import pandas as pd
df = pd.DataFrame({'source':range(11,15), 'target':range(12,16)})
g = Graph(directed=True)
g.add_edge_list(df.values)
您可以在我的虚拟示例中看到,只有 5 个不同的顶点 (11, 12, 13, 14, 15)。但是,当我生成图形时,创建了 16 个顶点,似乎填补了 0 和最大节点值之间的空白。
g.get_vertices()
returns:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], dtype=uint64)
我假设图形工具将 df 的值“读取”为索引,而不是实际顶点的名称。这来自docs:
图中的每个顶点都有一个唯一的索引,它总是介于 :math:0 和 :math:N-1,其中 :math:N 是顶点数。
如何创建没有这些冗余顶点的图形(如果我导入我的数据,可能会达到数百万),我如何才能使用不被视为索引的用户 ID? 对于从 df 案例的大量导入,我一直在翻找可用的方法/文档,但无法弄清楚。
我还尝试了什么:
df.to_csv('test.csv', index=False)#, header=False)
g2 = graph_tool.load_graph_from_csv('test.csv', skip_first=True)
这似乎确实创建了一个只有 5 个顶点的图,但“丢失”了它们的名称(用户 ID)。
g2.get_vertices()
返回
array([0, 1, 2, 3, 4], dtype=uint64)
而不是[11, 12, 13, 14, 15]。
感谢您的帮助!提前致谢。
我在Jupyter/Anaconda 上使用python 2.7。
【问题讨论】:
标签: python pandas graph graph-tool