当前位置:首页 > 公众号精选 > AI科技大本营
[导读]作者|俊欣来源| 关于数据分析与可视化我们平常都会使用很多的社交媒体,有微信、微博、抖音等等,例如在微博上面,我们会关注某些KOL,同时自己身边的亲朋好友等等也会来关注我们自己,成为我们自己的粉丝。而慢慢地随着粉丝的量不断累积,这层关系网络也会不断地壮大,很多信息也是通过这样的关...

作者 | 俊欣
来源 | 关于数据分析与可视化我们平常都会使用很多的社交媒体,有微信、微博、抖音等等,例如在微博上面,我们会关注某些KOL,同时自己身边的亲朋好友等等也会来关注我们自己,成为我们自己的粉丝。而慢慢地随着粉丝的量不断累积,这层关系网络也会不断地壮大,很多信息也是通过这样的关系网络不断地向外传播,分析这些社交网络并且了解透彻它对于我们做出各项商业决策来说也是至关重要的,今天小编就用一些Python的第三方库来进行社交网络的可视化

数据来源

小编用的数据是来自领英当中的社交数据,由于小编之前也在美国读书,也尝试过在国外找实习、找工作等等,都是通过领英在进行职场上的社交,投递简历、结交职场精英等等,久而久之也逐渐地形成了自己的社交网络,我们将这部分的社交数据下载下来,然后用pandas模块读取

数据的读取和清洗

当然我们先导入需要用到的模块import pandas as pd
import janitor
import datetime

from IPython.core.display import display, HTML
from pyvis import network as net
import networkx as nx
读取所需要用到的数据集df_ori = pd.read_csv("Connections.csv", skiprows=3)
df_ori.head()
接下来我们进行数据的清洗,具体的思路就是将空值去除掉,并且数据集当中的“Connected on”这一列,内容是日期,但是数据类型却是字符串,因此我们也需要将其变成日期格式。df = (
df_ori
.clean_names() # 去除掉字符串中的空格以及大写变成小写
.drop(columns=['first_name', 'last_name', 'email_address']) # 去除掉这三列
.dropna(subset=['company', 'position']) # 去除掉company和position这两列当中的空值
.to_datetime('connected_on', format='%d %b %Y')
)
output company            position connected_on
0                xxxxxxxxxx  Talent Acquisition   2021-08-15
1               xxxxxxxxxxxx   Associate Partner   2021-08-14
2                      xxxxx                猎头顾问   2021-08-14
3  xxxxxxxxxxxxxxxxxxxxxxxxx          Consultant   2021-07-26
4    xxxxxxxxxxxxxxxxxxxxxx     Account Manager   2021-07-19

数据的分析与可视化

先来看一下小编认识的这些人脉中,分别都是在哪些公司工作的df['company'].value_counts().head(10).plot(kind="barh").invert_yaxis()
output从上图可以看到,排在比较前面的大公司都是亚马逊、谷歌、Facebook、微软以及JP Morgan等大公司,看来在小编的校友以及人脉当中也就属小编混的最差了然后我们再来看一下小编所结交的人脉中,大多都是什么职业的df['position'].value_counts().head(10).plot(kind="barh").invert_yaxis()
output从上图可以看出,大多都是从事的是软件工程师相关的工作,排在第二的则是数据科学家以及高级软件工程师,看来程序员认识的果然大多也都是程序员。然后我们来看一下社交网络的可视化图表的绘制,但是在这之前呢,小编需要先说明几个术语,每一个社交网络都包含:
  • 节点:社交网络当中的每个参与者
  • 边缘:代表着每一个参与者的关系以及关系的紧密程度
我们先来简单的绘制一个社交网络,主要用到的是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)
output company  count
0                            Amazon     xx
1                            Google     xx
2                          Facebook     xx
3   Stevens Institute of Technology     xx
4                         Microsoft     xx
5              JPMorgan Chase 
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
关闭
关闭