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 是节点。
任何帮助是极大的赞赏!
使用您的代码,您将按原样从'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)
会画你:
| 归档时间: |
|
| 查看次数: |
2258 次 |
| 最近记录: |