我的编程空间,编程开发者的网络收藏夹
学习永远不晚

利用Python将社交网络进行可视化

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

利用Python将社交网络进行可视化

前言:

我们平常会使用很多社交媒体,如微信、微博、抖音等等,在这些平台上面,我们会关注某些KOL,同时自己身边的亲朋好友也会来关注我们,成为我们自己的粉丝。慢慢地,关注和粉丝随着时间不断累积,这层关系网络也会不断地壮大,很多信息也是通过这样的关系网络不断向外传播。因此,分析这些社交网络对于我们做出各项决策来说也是至关重要的。

今天我们就用一些Python的第三方库来进行社交网络的可视化

数据来源

本案例用的数据是来自领英(Linkedin)的社交关系数据。由于作者之前在美国读书,并且在国外找实习、找工作,都是通过领英投递简历、联系同事等,久而久之也逐渐地形成了自己的社交网络,将这部分的社交数据下载下来,然后用pandas模块读取

由于涉及隐私信息,数据就不便提供了。如果你有领英账号,可以通过设置里的“获取资料副本”导出这样一份CSV关系数据。或者也可以按照这个表头自己生成一份假数据:

数据的读取和清洗

首先导入需要用到的模块:

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')
  )

输出:

                    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()

输出:

再来看一下我的人脉网络中,大多都是什么职业的

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)

输出:

                            company  count
0                            Amazon     xx
1                            Google     xx
2                          Facebook     xx
3   Stevens Institute of Technology     xx
4                         Microsoft     xx
5              JPMorgan Chase & Co.     xx
6         Amazon Web Services (AWS)     xx
9                             Apple      x
10                    Goldman Sachs      x
8                            Oracle      x

然后我们来绘制社交网络的图表:

# 实例化网络
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)

输出:

                           position  count
0                 Software Engineer     xx
1                    Data Scientist     xx
2          Senior Software Engineer     xx
3                      Data Analyst     xx
4             Senior Data Scientist     xx
5     Software Development Engineer     xx
6  Software Development Engineer II     xx
7                           Founder     xx
8                     Data Engineer     xx
9                  Business Analyst     xx

然后进行网络图的绘制

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 可视化 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

利用Python将社交网络进行可视化

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何在Python中使用Pygal进行交互可视化

这篇文章主要介绍“如何在Python中使用Pygal进行交互可视化”,在日常操作中,相信很多人在如何在Python中使用Pygal进行交互可视化问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何在Python
2023-06-15

Python实现城市公交网络分析与可视化

这篇文章主要介绍了通过Python爬取城市公交站点、线路及其经纬度数据,并做可视化数据分析。文中的示例代码讲解详细,感兴趣的可以学习一下
2022-11-12

使用Python进行数据可视化

本文主要介绍了使用Python进行数据可视化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-03-14

Python怎样实现城市公交网络分析与可视化

这期内容当中小编将会给大家带来有关Python怎样实现城市公交网络分析与可视化,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、数据查看和预处理数据获取自高德地图API,包含了天津市公交线路和站点名称及其
2023-06-22

如何使用Python进行数据可视化

这篇“如何使用Python进行数据可视化”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何使用Python进行数据可视化”文
2023-07-05

怎么利用Python对500强排行榜数据进行可视化分析

今天小编给大家分享一下怎么利用Python对500强排行榜数据进行可视化分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一
2023-06-30

怎样利用互联网差异化进行网络推广?

互联网技术飞速发展,互联网时代逐步来临,当今互联网的发展趋势开始朝着差异化方向发展,这也是以后很长一段时间内发展的趋势,网络推广的过程中怎样更好的处理各种差异化情况将成为越来越重要的问题。当然,这些差异体现在很多方面,但是最主要的还是这些方
2023-06-03

如何利用python将Matplotlib可视化插入到Excel表格中

这篇文章主要讲解了“如何利用python将Matplotlib可视化插入到Excel表格中”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何利用python将Matplotlib可视化插入到
2023-07-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录