咱們用Python列了一份十年漫威角色清單,請查收!

網站是基於Graph技術開發的。數據庫

其實以前小F也利用了有關Graph的庫實現了一波人物的關係分析。json

只不過度析結果比較粗糙而已~app

下面是網站的概況,你們能夠一覽。學習


在這裏仍是要推薦下我本身建的Python開發學習羣:[304][050][799],羣裏都是學Python開發的,若是你正在學習Python ,小編歡迎你加入,你們都是軟件開發黨,不按期分享乾貨(只有Python軟件開發相關的),包括我本身整理的一份2018最新的Python進階資料和高級開發教程,歡迎進階中和進想深刻Python的小夥伴!網站

那麼人家能作出這麼酷炫的關係圖,咱們本身能不能實現呢?url

這一期就利用網站提供的數據,使用Neo4j(NOSQL圖形數據庫)進行實戰一波。教程

/ 01 / 獲取分析接口

人物及人物關聯信息從網站上獲取,具體接口以下。ip

數據爲json格式,分別在「characters」和「relationship」中。ci

這裏的信息是分別指託尼·斯達克,關係「0」爲朋友斯蒂文·羅傑斯

/ 02 / 數據獲取

具體代碼以下。

import json

import requests

headers = {

'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'

}

url = 'https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-who-interactive/data/marvel-data.json'

response = requests.get(url=url, headers=headers)

result = json.loads(response.text)

num = 0

names =

item = {0: 'friend', 1: 'enemy', 2: 'creation', 3: 'family', 4: 'work', 5: 'love'}

for i in result['relationship']:

subject = result['relationship'][i]['id']

object = result['relationship'][i]['target_id']

if subject not in names:

names.append(subject)

if object not in names:

names.append(object)

relation = int(result['relationship'][i]['relationship'])

with open('relation_message.csv', 'a+') as f:

f.write(subject + ',' + object + ',' + item[relation] + '

')

for j in names:

num += 1

with open('names_message.csv', 'a+') as f:

f.write(j + ',' + str(num) + '

')

for k in result['characters']:

id = result['characters'][k]['id']

name = result['characters'][k]['name']

status = result['characters'][k]['status']

species = result['characters'][k]['species']

with open('message.csv', 'a+') as f:

f.write(id + ',' + name + ',' + status + ',' + species + '

')

最後成功獲取數據。

人物名爲簡稱,共計182我的物。

1144條人物關係數據,4大類型。

下面是182我的物的一些詳情信息。

包含了人物的名字及簡稱,存活狀態,人物屬性。

/ 03 / 數據可視化

下面經過Neo4j對人物關係進行可視化。

Neo4j的安裝這裏就不細說了,你們能夠自行百度。

開啓Neo4j服務後,登錄Neo4j網站,初始化界面以下。

先加載第一個文件。

具體代碼以下。

LOAD CSV WITH HEADERS FROM 'file:///names_message.csv' AS data CREATE (:people{name:data.name, id:data.id});

下面加載第二個文件。

具體代碼以下。

LOAD CSV WITH HEADERS FROM "file:///relation_message.csv" AS relations

MATCH (entity1:people{name:relations.subject}) , (entity2:people{name:relations.object})

CREATE (entity1)-[:rel{relation: relations.relation}]->(entity2)

點擊1144按鈕處,取消限制數,再點擊全屏。

這裏大體能看出來漫威的人物彙集狀況。

第一大反派滅霸(thanos),原來這麼孤立的。

這裏因爲人物太多,形成觀察不便,因此對結果進行一些篩選。

好比篩選託尼·斯達克的朋友,運行下面的代碼。

match p=(n:people{name:"tonys"})-[:rel{relation:"friend"}]-> return p;

獲得下圖結果。

其中「thor」爲「雷神」,「stever」爲「美隊」,「blackw」爲「黑寡婦」,「vision」爲「幻視」,「peterp」爲「蜘蛛俠」,「bruceb」爲「綠巨人」。

下面再來看一下美隊的女朋友吧。

佩吉·卡特和她的侄女莎朗·卡特,聽說兩人樣貌極爲相像。

/ 04 / 總結

本次只是對Neo4j的一些簡單操做,後期或許會去深刻了解。

此外漫威的這些人物信息,還能夠玩出不少花樣的。

也但願你們能去動手嘗試嘗試,作一枚硬核鐵粉~

-The End-

將門是一家以專一於發掘、加速及投資技術驅動型創業公司的新型創投機構,旗下涵蓋將門創新服務、將門技術社羣以及將門創投基金。將門成立於2015年末,創始團隊由微軟創投在中國的創始團隊原班人馬構建而成,曾爲微軟優選和深度孵化了126家創新的技術型創業公司。

將門創新服務專一於使創新的技術落地於真正的應用場景,激活和實現全新的商業價值,服務於行業領先企業和技術創新型創業公司。

將門技術社羣專一於幫助技術創新型的創業公司提供來自產、學、研、創領域的核心技術專家的技術分享和學習內容,使創新成爲持續的核心競爭力。

將門創投基金專一於投資經過技術創新激活商業場景,實現商業價值的初創企業,關注技術領域包括機器智能、物聯網、天然人機交互、企業計算。在三年的時間裏,將門創投基金已經投資了包括量化派、碼隆科技、禾賽科技、寬拓科技、杉數科技、迪英加科技等數十傢俱備高成長潛力的技術型創業公司。

相關文章
相關標籤/搜索