首发于 数据分析
复杂网络分析之数据准备篇

复杂网络分析之数据准备篇

《 文本分析之网络关系

上一篇文章直接给大家发了个封装好的复杂网络分析脚本,bug比较多。也不方便自己DIY,今天咱么就条分缕析,一点点拆解。然后大家根据需要,自己DIY吧。

关系图之原始数据

我给大家编了下面两组原始数据,试图画出abcd四元素之间的关系

nodes_data = ['a', 'b', 'c', 'd']

raw_data = ['acW', 'aca', 'caE', 'ec', 'cd', 'dc']

我们做关系网络前的最初始数据最好就是上面这样子,这种数据格式还是比较简单的。


nodes_data表示节点数据,用来在图中画节点

raw_data中含有共现的相互关系,但是需要进一步的清理规整。

关系图之数据格式

{source: {target: weight}}

source 起点

target 终点

weight 权重(起点到终点次数)


nodes_data = ['a', 'b', 'c', 'd']

raw_data = ['acW', 'aca', 'caE', 'ec', 'cd', 'dc']

nodes_data和raw_data整理成有权有向数据格式如下:

{'a': {'c': 4},

'c': {'a': 4, 'd': 2},

'd': {'c': 2}}

上面的格式即可用来画有权有向图,也可用到无权无向图,还可画有权无向图、无权有向图。

所以数据保存,尽量保存为有权有权有向格式。尽可能保存多的信息,请用有权有向数据格式。

后面所有的关系图数据格式均以有权有向格式为基准。

如何实现有权有向数据格式

nodes_data = ['a', 'b', 'c', 'd']

raw_data = ['acW', 'aca', 'caE', 'ec', 'cd', 'dc']

||

|| ?

\/

{'a': {'c': 4},

'c': {'a': 4, 'd': 2},

'd': {'c': 2}}

这里很难,我估计我今天也说不太清除。这个只能希望大家悟性比我高,在就是运行下,编点简单的数据实验试验下,发现规律,也就懂了。


networkx需要的数据格式

有了上面富有信息量的有向有权格式数据还不行,我们要再将数据微调下,才能使用networkx库。

networkx需要啥数据格式?

data = {'a':{'b':1},
'c':{'a':2},
'e':{'b':3},
'b':{'a':4}}
nodes = {'a','b','c','d','e'}

networkx节点

#首先导入库,解决中文显示问题

import networkx as nx
import matplotlib.pyplot as plt
from pylab import mpl

#解决显示中文问题
# 指定默认字体
mpl.rcParams['font.sans-serif'] = ['SimHei']   

# 解决保存图像是负号'-'显示为方块的问题
mpl.rcParams['axes.unicode_minus'] = False  

可见networkx创建节点需要的数据很简单,就是字符串或者列表(集合也可以的)。而且本身nodes数据就是列表,直接就能用到networkx构建节点中来。

但是networkx构建边时候,要用什么样式的呢?


networkx无向边

可见networkx无向边的构建只需要元组或列表数据,但是如何从有权有向格式数据转化为元组或者列表(集合也可以的)数据呢?


data = {'a':{'b':1},
'c':{'a':2},
'e':{'b':3},
'b':{'a':4}}

一、无权无向边

a->b 和b->a是一条边

data的边的集合是{('e', 'b'), ('c', 'a'), ('a', 'b')}

生成无权无向边数据的代码:

二、 有权无向边

a->b和b->a使得 ab共出现5次。

有权无向边应为{('c', 'a', 2), ('a', 'b', 5), ('e', 'b', 3)}

networkx有向边

可见networkx无向边的构建只需要元组或列表数据,但是如何从有权有向格式数据转化为元组或者列表(集合也可以的)数据呢?


data = {'a':{'b':1},
'c':{'a':2},
'e':{'b':3},
'b':{'a':4}}

一、无权有向边

a->b 和b->a是一条边

data的边的集合是{('a', 'b'), ('b', 'a'), ('c', 'a'), ('e', 'b')}

生成无权有向向边数据的代码:

二、有权有向边

[('a', 'b', 1), ('c', 'a', 2), ('e', 'b', 3), ('b', 'a', 4)]


这样更好理解些

weight = data.get(node_k).get(node_v)



其实涉及到有权的边画图,比如让边显示粗细以表示权重大小。这个我还没有实现,主要是刚刚学networkx。不过今天这篇文章的探讨还是很有用的。可以将数据整理成其他绘图软件指定格式。绘制有权图。

写了这么多也不知道大家搞糊涂了没有,反正我写的有点晕!


公众号原文
附有文中所有代码的下载资源



更多内容

文本分析

python居然有情感??真的吗??

文本分析之网络关系

自然语言处理库之snowNLP

数说中南大学研究生感情状况及择偶观

用gensim库做文本相似性分析

基于共现发现人物关系的python实现

用python计算两文档相似度

神奇的python

怜香惜玉,我用python帮助办公室文秘

逆天的量化交易分析库-tushare

酷炫的matplotlib

开扒皮自己微信的秘密

8行代码实现微信聊天机器人

使用Python登录QQ邮箱发送QQ邮件

爬虫

初识Python的GUI编程

爬虫实战视频专辑

【视频】手把手教你抓美女~

当爬虫遭遇验证码,怎么办

知易行难

用词云图解读“于欢案”

【视频】于欢案之网民的意见(1)?

【视频】有了selenium,小白也可以自豪的说:“去TMD的抓包、cookie”

【视频】快来get新技能--抓包+cookie,爬微博不再是梦

【视频教程】用python批量抓取简书用户信息

爬豆瓣电影名的小案例(附视频操作)

爬豆瓣电影名的小案例2(附视频操作)

用Python抓取百度地图里的店名,地址和联系方式

深圳SEO优化公司宜春模板制作哪家好杭州网站优化按天扣费价格深圳推广网站多少钱永州网站制作永州网站关键词优化商洛建网站哪家好坂田如何制作网站哪家好临汾外贸网站建设价格绍兴网站关键词优化公司拉萨网页设计公司迪庆关键词按天计费价格遵义百度关键词包年推广价格楚雄seo网站优化报价滨州网站制作设计多少钱马鞍山英文网站建设昆明建设网站报价柳州模板网站建设多少钱兰州品牌网站设计多少钱厦门营销网站公司塘坑关键词按天计费公司新余网站优化推广报价山南百度竞价包年推广推荐衡阳网站开发价格莱芜seo网站推广兰州如何制作网站公司黄山外贸网站制作价格兰州网站搜索优化公司盐田网站优化按天扣费银川设计网站多少钱济宁网站制作设计公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化