Python?實(shí)現(xiàn)社交網(wǎng)絡(luò)可視化,看看你的人脈影響力如何
時(shí)間:2021-11-16 13:44:46
手機(jī)看文章
掃描二維碼
隨時(shí)隨地手機(jī)看文章
[導(dǎo)讀]作者|俊欣來(lái)源|?關(guān)于數(shù)據(jù)分析與可視化我們平常都會(huì)使用很多的社交媒體,有微信、微博、抖音等等,例如在微博上面,我們會(huì)關(guān)注某些KOL,同時(shí)自己身邊的親朋好友等等也會(huì)來(lái)關(guān)注我們自己,成為我們自己的粉絲。而慢慢地隨著粉絲的量不斷累積,這層關(guān)系網(wǎng)絡(luò)也會(huì)不斷地壯大,很多信息也是通過(guò)這樣的關(guān)...
作者 | 俊欣
來(lái)源 | 關(guān)于數(shù)據(jù)分析與可視化我們平常都會(huì)使用很多的社交媒體,有微信、微博、抖音等等,例如在微博上面,我們會(huì)關(guān)注某些KOL,同時(shí)自己身邊的親朋好友等等也會(huì)來(lái)關(guān)注我們自己,成為我們自己的粉絲。而慢慢地隨著粉絲的量不斷累積,這層關(guān)系網(wǎng)絡(luò)也會(huì)不斷地壯大,很多信息也是通過(guò)這樣的關(guān)系網(wǎng)絡(luò)不斷地向外傳播,分析這些社交網(wǎng)絡(luò)并且了解透徹它對(duì)于我們做出各項(xiàng)商業(yè)決策來(lái)說(shuō)也是至關(guān)重要的,今天小編就用一些
來(lái)源 | 關(guān)于數(shù)據(jù)分析與可視化我們平常都會(huì)使用很多的社交媒體,有微信、微博、抖音等等,例如在微博上面,我們會(huì)關(guān)注某些KOL,同時(shí)自己身邊的親朋好友等等也會(huì)來(lái)關(guān)注我們自己,成為我們自己的粉絲。而慢慢地隨著粉絲的量不斷累積,這層關(guān)系網(wǎng)絡(luò)也會(huì)不斷地壯大,很多信息也是通過(guò)這樣的關(guān)系網(wǎng)絡(luò)不斷地向外傳播,分析這些社交網(wǎng)絡(luò)并且了解透徹它對(duì)于我們做出各項(xiàng)商業(yè)決策來(lái)說(shuō)也是至關(guān)重要的,今天小編就用一些
Python的第三方庫(kù)來(lái)進(jìn)行社交網(wǎng)絡(luò)的可視化
數(shù)據(jù)來(lái)源
小編用的數(shù)據(jù)是來(lái)自領(lǐng)英當(dāng)中的社交數(shù)據(jù),由于小編之前也在美國(guó)讀書(shū),也嘗試過(guò)在國(guó)外找實(shí)習(xí)、找工作等等,都是通過(guò)領(lǐng)英在進(jìn)行職場(chǎng)上的社交,投遞簡(jiǎn)歷、結(jié)交職場(chǎng)精英等等,久而久之也逐漸地形成了自己的社交網(wǎng)絡(luò),我們將這部分的社交數(shù)據(jù)下載下來(lái),然后用pandas模塊讀取
數(shù)據(jù)的讀取和清洗
當(dāng)然我們先導(dǎo)入需要用到的模塊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
讀取所需要用到的數(shù)據(jù)集df_ori = pd.read_csv("Connections.csv", skiprows=3)
df_ori.head()
接下來(lái)我們進(jìn)行數(shù)據(jù)的清洗,具體的思路就是將空值去除掉,并且數(shù)據(jù)集當(dāng)中的“Connected on”這一列,內(nèi)容是日期,但是數(shù)據(jù)類(lèi)型卻是字符串,因此我們也需要將其變成日期格式。df = (
df_ori
.clean_names() # 去除掉字符串中的空格以及大寫(xiě)變成小寫(xiě)
.drop(columns=['first_name', 'last_name', 'email_address']) # 去除掉這三列
.dropna(subset=['company', 'position']) # 去除掉company和position這兩列當(dāng)中的空值
.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 獵頭顧問(wèn) 2021-08-14
3 xxxxxxxxxxxxxxxxxxxxxxxxx Consultant 2021-07-26
4 xxxxxxxxxxxxxxxxxxxxxx Account Manager 2021-07-19
數(shù)據(jù)的分析與可視化
先來(lái)看一下小編認(rèn)識(shí)的這些人脈中,分別都是在哪些公司工作的df['company'].value_counts().head(10).plot(kind="barh").invert_yaxis()
output
從上圖可以看到,排在比較前面的大公司都是亞馬遜、谷歌、Facebook、微軟以及JP Morgan等大公司,看來(lái)在小編的校友以及人脈當(dāng)中也就屬小編混的最差了然后我們?cè)賮?lái)看一下小編所結(jié)交的人脈中,大多都是什么職業(yè)的df['position'].value_counts().head(10).plot(kind="barh").invert_yaxis()
output
從上圖可以看出,大多都是從事的是軟件工程師相關(guān)的工作,排在第二的則是數(shù)據(jù)科學(xué)家以及高級(jí)軟件工程師,看來(lái)程序員認(rèn)識(shí)的果然大多也都是程序員。然后我們來(lái)看一下社交網(wǎng)絡(luò)的可視化圖表的繪制,但是在這之前呢,小編需要先說(shuō)明幾個(gè)術(shù)語(yǔ),每一個(gè)社交網(wǎng)絡(luò)都包含:
-
節(jié)點(diǎn):社交網(wǎng)絡(luò)當(dāng)中的每個(gè)參與者
-
邊緣:代表著每一個(gè)參與者的關(guān)系以及關(guān)系的緊密程度
我們先來(lái)簡(jiǎn)單的繪制一個(gè)社交網(wǎng)絡(luò),主要用到的是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個(gè)節(jié)點(diǎn),也分別給他們命名,其中的參數(shù)size代表著節(jié)點(diǎn)的大小,然后我們將這些個(gè)節(jié)點(diǎn)相連接g.add_edge(0, 1)
g.add_edge(0, 2)
g.add_edge(0, 3)
最后出來(lái)的樣子如下圖
我們先從小編的人脈中,他們所屬的公司來(lái)進(jìn)行網(wǎng)絡(luò)的可視化,首先我們對(duì)所屬的公司做一個(gè)統(tǒng)計(jì)排序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