如何使用 networkx 从 Twitter 数据构建图表

sys*_*mie 2 python twitter networkx

所以我是一个初学者,但我想可视化用户在 Python 中使用 networkx 的提及。我已经使用 Twitter API 收集了我想要查看的所有推文,并将它们放入数据框架中。数据框包含有关推文的各种数据,但我最感兴趣的是用户(DF 中的 5 个用户)以及用户的推文中提到了谁。

+-------+---------------------+
|user   |mentioned_user       |
+-------+---------------------+
|user1  |jack,peter,anne      |
|user2  |sophie               |
|user2  |anne,user1           |
+-------+---------------------+
Run Code Online (Sandbox Code Playgroud)

我意识到我可以使用 from_pandas_edgelist 提取我需要的数据,如下所示:

test = nx.from_pandas_edgelist(
    df,
    source='user',
    target='mentioned_user',
    edge_attr=True,
    create_using=nx.DiGraph()
)
Run Code Online (Sandbox Code Playgroud)

但接下来我该怎么办?我想为每个用户绘制一个图,其中 user 和 said_user 是节点。

任何帮助是极大的赞赏!

vur*_*mux 5

使用您的代码,您将按原样从'user'列中的字符串到列中的字符串创建节点,而无需将它们拆分给不同的用户。'mentioned_user'因此,您应该拆分'mentioned_user'列并手动迭代数据框:

df = pd.DataFrame({
    'user':['user1','user2','user2'],
    'mentioned_user':['jack,peter,anne','sophie','anne,user1']
})
df['splitted_users'] = df['mentioned_user'].apply(lambda x: x.split(','))

G = nx.DiGraph()
for r in df.iterrows():
    for user in r[1]['splitted_users']:
        G.add_edge(r[1]['user'], user)
nx.draw(G, with_labels=True)
Run Code Online (Sandbox Code Playgroud)

会画你:

在此输入图像描述