私はそれは私が大規模なグラフ(パンダDATAFRAME/CSVで~8M
頂点、~22M
エッジを)分析することができますPythonライブラリだろう期待して、graph-tool
を使用し始めました。 「ソース」および「ターゲット」列は、特定のデジタルサービスのユーザーIDです。パンダデータフレームまたはCSVからグラフツールのグラフを生成
私は、方法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から次の数式:0:数学:グラフで
各頂点が常に 間で一意のインデックスを有するN-1、ここで:数学: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]
。
ありがとうございました!前もって感謝します。
python 2.7
をJupyter/Anaconda
に使用しています。
これ以降どのように進めますか?私は 'v_name = g.add_edge_list(edges.values、string_vals = True、ハッシュ= True、eprops = e_weight)'を試みました。しかし、私は 'Unpickling Error'を取得しました。 edgesは 'DataFrame' e_weight'はエッジプロパティとして開始され、v_nameは文字列として頂点プロパティとして正しく開始されるノード名です。ありがとう、 –