python可视化交互,python数据处理与可视化
本文介绍了如何使用Python可视化社交网络,主要是Python的一些第三方库来可视化社交网络,并使用Linkedin的社交关系数据做一个介绍。内容可以作为学习练习,有一定的参考价值,有需要的朋友可以参考一下。
00-1010数据源数据读取和清理数据分析和可视化前言:
我们通常使用很多社交媒体,如微信、微博、Tik Tok等。在这些平台上,我们会关注一些kol,同时身边的亲朋好友也会关注我们,成为自己的粉丝。慢慢的,随着关注度和粉丝的日积月累,这个关系网会不断壮大,很多信息会通过这个关系网传播出去。因此,分析这些社交网络对我们做出各项决策来说.人来说也非常重要
今天,我们使用一些Python第三方库来可视化社交网络。
目录
本例中使用的数据是来自Linkedin的社交关系数据。由于作者之前在美国留学,正在国外找实习和工作,所以通过LinkedIn发布了简历,联系了同事。久而久之,他逐渐形成了自己的社交网络,下载了这部分社交数据,然后用熊猫模块读取。
因为涉及隐私信息,不方便提供数据。如果你有LinkedIn账号,可以通过设置中的“获取信息副本”导出这样一个CSV关系数据。或者你可以根据这个表头自己生成一个假数据:
数据来源
首先导入需要用到的模块:
importpandasaspd
进口看门人
导入日期时间
from ipython . core . display import display,HTML
frompyvisimportnetworkasnet
importnetworkxasnx
读取所需要用到的数据集:
df _ ori=PD . read _ CSV( connections . CSV ,skiprows=3)
df_ori.head()
接下来,我们将清理数据。具体思路是将空值去除掉,数据集中的“Connected on”列包含日期,但数据类型是字符串,所以我们也需要将其转换为日期格式。
df=(
df_ori。clean_names()#删除字符串中的空格,将大写改为小写。drop (columns=[名字,姓氏,电子邮件地址]) #去掉这三列。dropna (subset=[company , position]) #删除company和position列中的空值。to_datetime(connected_on ,格式=%d%b%Y )
)
输出:
companypositionconnected_on
0xxxxx
bsp;xxxxxxxxxxxxAssociatePartner2021-08-14
2xxxxx猎头顾问2021-08-14
3xxxxxxxxxxxxxxxxxxxxxxxxxConsultant2021-07-26
4xxxxxxxxxxxxxxxxxxxxxxAccountManager2021-07-19
数据的分析与可视化
来看一下这些人脉中,分别都是在哪些公司工作的
df[company].value_counts().head(10).plot(kind="barh").invert_yaxis()
输出:
再来看一下我的人脉网络中,大多都是什么职业的
df[position].value_counts().head(10).plot(kind="barh").invert_yaxis()
输出:
接下来我们绘制社交网络的可视化图表。但是在这之前呢,需要先说明几个术语,每一个社交网络都包含:
- 节点:社交网络当中的每个参与者
- 边:代表着每一个参与者的关系以及关系的紧密程度
我们先来简单的绘制一个社交网络,主要用到的是networkx
模块以及pyvis
模块,
g = nx.Graph()g.add_node(0, label = "root") # intialize yourself as central node
g.add_node(1, label = "Company 1", size=10, title="info1")
g.add_node(2, label = "Company 2", size=40, title="info2")
g.add_node(3, label = "Company 3", size=60, title="info3")
我们先是建立了4个节点,也分别给他们命名,其中的参数size
代表着节点的大小,然后我们将这些个节点相连接
g.add_edge(0, 1)g.add_edge(0, 2)
g.add_edge(0, 3)
最后出来的样子如下图:
我们先从人脉中,他们所属的公司来进行网络的可视化,首先我们对所属的公司做一个统计排序
df_company = df[company].value_counts().reset_index()df_company.columns = [company, count]
df_company = df_company.sort_values(by="count", ascending=False)
df_company.head(10)
输出:
companycount
0Amazonxx
1Googlexx
2Facebookxx
3StevensInstituteofTechnologyxx
4Microsoftxx
5JPMorganChase&Co.xx
6AmazonWebServices(AWS)xx
9Applex
10GoldmanSachsx
8Oraclex
然后我们来绘制社交网络的图表:
# 实例化网络g = nx.Graph()
g.add_node(myself) # 将自己放置在网络的中心
# 遍历数据集当中的每一行
for _, row in df_company_reduced.iterrows():
# 将公司名和统计结果赋值给新的变量
company = row[company]
count = row[count]
title = f"<b>{company}</b> – {count}"
positions = set([x for x in df[company == df[company]][position]])
positions = .join(<li>{}</li>.format(x) for x in positions)
position_list = f"<ul>{positions}</ul>"
hover_info = title + position_list
g.add_node(company, size=count*2, title=hover_info, color=#3449eb)
g.add_edge(root, company, color=grey)
# 生成网络图表
nt = net.Network(height=700px, width=700px, bgcolor="black", font_color=white)
nt.from_nx(g)
nt.hrepulsion()
nt.show(company_graph.html)
display(HTML(company_graph.html))
输出:
同样,我们再来可视化一下人脉中各种岗位的分布。
先做一个统计排序:
df_position = df[position].value_counts().reset_index()df_position.columns = [position, count]
df_position = df_position.sort_values(by="count", ascending=False)
df_position.head(10)
输出:
positioncount
0SoftwareEngineerxx
1DataScientistxx
2SeniorSoftwareEngineerxx
3DataAnalystxx
4SeniorDataScientistxx
5SoftwareDevelopmentEngineerxx
6SoftwareDevelopmentEngineerIIxx
7Founderxx
8DataEngineerxx
9BusinessAnalystxx
然后进行网络图的绘制
g = nx.Graph()g.add_node(myself) # 将自己放置在网络的中心
for _, row in df_position_reduced.iterrows():
# 将岗位名和统计结果赋值给新的变量
position = row[position]
count = row[count]
title = f"<b>{position}</b> – {count}"
positions = set([x for x in df[position == df[position]][position]])
positions = .join(<li>{}</li>.format(x) for x in positions)
position_list = f"<ul>{positions}</ul>"
hover_info = title + position_list
g.add_node(position, size=count*2, title=hover_info, color=#3449eb)
g.add_edge(root, position, color=grey)
# 生成网络图表
nt = net.Network(height=700px, width=700px, bgcolor="black", font_color=white)
nt.from_nx(g)
nt.hrepulsion()
nt.show(position_graph.html)
输出:
到此这篇关于利用Python将社交网络进行可视化的文章就介绍到这了,更多相关 Python 可视化 内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。