用networkx和python编程可视化分析共现词关系图资讯

这些问题会在接下来的多个notebook中逐一探索,首先,本notebook将演练使用networkx画社会网络分析图。然后在接下来的notebook中演练对图的化简,分别根据边权重化简和利用MST算法化简。

2使用方法

操作顺序是:

3修改历史

2022-08-18:第一版发布

本notebook是GooSeeker大数据分析团队开发的,所分析的源数据是GooSeeker分词和文本分析软件生成的,本notebook中的代码可自由共享使用,包括转发、复制、修改、用于其他项目中。

5准备运行环境

5.1引入需要用到的库

#-*-coding:utf-8-*-

importos

importnumpyasnp

importpandasaspd

importnetworkxasnx

importmatplotlib.pyplotasplt

importpylab

%xmodeVerbose

importwarnings

#软件包之间配套时可能会使用过时的接口,把这类告警忽略掉可以让输出信息简练一些

warnings.filterwarnings("ignore",category=DeprecationWarning)

#把RuntimeWarning忽略掉,不然画图的时候有太多告警了

warnings.filterwarnings("ignore",category=RuntimeWarning)

5.2设置中文字体

因为含有中文,pyplot画图有可能会显示下面的错误信息:

C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\backends\backend_agg.py:238:RuntimeWarning:Glyph32993missingfromcurrentfont.font.set_text(s,0.0,flags=flags)

#plt.rcParams['font.sans-serif']=['SimHei']

#上面一行在macOS上没有效果,所以,使用下面的字体

plt.rcParams['font.sans-serif']=['ArialUnicodeMS']

plt.rcParams['axes.unicode_minus']=False

5.3常量和配置

在我们发布的一系列JupyterNotebook中,凡是处理GooSeeker分词软件导出的结果文件的,都给各种导出文件起了固定的名字。为了方便大家使用,只要把导出文件放在data/raw文件夹,notebook就会找到导出文件,赋值给对应的文件名变量。下面罗列了可能用到的文件名变量:

pd.set_option('display.width',1000)#设置字符显示宽度

pd.set_option('display.max_rows',None)#设置显示最大

#np.set_printoptions(threshold=np.inf)#threshold指定超过多少使用省略号,np.inf代表无限大

#存原始数据的目录

raw_data_dir=os.path.join(os.getcwd(),'../../data/raw')

#存处理后的数据的目录

processed_data_dir=os.path.join(os.getcwd(),'../../data/processed')

filename_temp=pd.Series(['词频','分词效果','选词矩阵','选词匹配','选词结果','共词矩阵'])

file_all_word=''

file_seg_effect=''

file_word_occurrence_matrix=''

file_word_frequency_matrix=''

file_word_document_match=''

file_chosen_word=''

file_co_word_matrix=''

5.4检测data\raw目录下是否有GooSeeker分词结果表

在本notebook只使用共词矩阵表,下面的代码将检查data/raw中有没有这个表,如果没有会报错,后面的程序就没法执行了。

#0:'词频',1:'分词效果',2:'选词矩阵',3:'选词匹配',4:'选词结果',5:'共词矩阵'

print(raw_data_dir+'\r\n')

foritem_filenameinos.listdir(raw_data_dir):

iffilename_temp[5]initem_filename:

file_co_word_matrix=item_filename

continue

iffile_co_word_matrix:

print("共词矩阵表:","data/raw/",file_co_word_matrix)

else:

print("共词矩阵表:不存在")

输出结果像这样:

C:\Users\work\workspace_219\notebook\发布-二舅\用networkx和python编程可视化分析共词关系图\notebook\eda\../../data/raw

共词矩阵表:data/raw/共词矩阵-知乎-二舅.xlsx

6读取共词矩阵表并存入矩阵

6.1用pandasdataframe读入共词矩阵

df_co_word_matrix=pd.read_excel(os.path.join(raw_data_dir,file_co_word_matrix))

df_co_word_matrix.head(2)

6.2提取字段名

将用于给graph的node命名

coword_names=df_co_word_matrix.columns.values[1:]

print("Thereare",len(coword_names),"words")

coword_names

输出结果:

Thereare133words

array(['世界','二舅','现实','时候','故事','人生','事情','苦难','精神','底层','内耗',

'时代','人民','视频','社会','人们','问题','母亲','普通人','国家','农村','作者',

'年轻人','价值','意义','一生','经历','感觉','方式','大学','房子','年代','条件',

'能量','医生','老师','办法','大众','电影','鸡汤','机会','压力','父母','穷人',

'小镇','角度','悲剧','收入','关系','内容','视角','老人','内心','环境','流量',

'情况','情绪','文案','目的','观点','人类','农民','资本','个体','励志','代表',

'平台','文艺创作','分钟','经济','想法','朋友','心理','群众','人物','日子','资源',

'思想','历史','残疾人','文艺','编剧','木匠','过程','生命','身体','状态','艺术',

'政府','物质','人人','医疗','村子','文学','热度','心态','网友','周劼','机制',

'宁宁','外甥','兴趣','主流','公子','父亲','官方','文艺作品','好人','源泉','公寓',

'彭叔'],dtype=object)

6.3生成矩阵数据结构

#使用astype函数对数据类型进行转换,否则,下面画图的时候可能会报错

array_co_word_matrix=df_co_word_matrix.values[:,1:].astype(float)

array_co_word_matrix

array([[101.,74.,24.,...,1.,1.,1.],

[74.,403.,59.,...,5.,1.,1.],

[24.,59.,76.,...,1.,1.,1.],

...,

[1.,5.,1.,...,7.,0.,0.],

[1.,1.,1.,...,0.,1.,0.],

[1.,1.,1.,...,0.,0.,1.]])

统计一下词语数量看看:

word_num=len(array_co_word_matrix)

word_num

输出结果:133

7生成图并进行探索

7.1从NumPy数组生成networkx图

#graph_co_word_df=nx.from_pandas_adjacency(df_co_word_matrix)

graph_co_word_matrix=nx.from_numpy_array(array_co_word_matrix)

print(nx.info(graph_co_word_matrix))

#graph_co_word_matrix.edges(data=True)

Name:

Type:Graph

Numberofnodes:133

Numberofedges:7843

Averagedegree:117.9398

7.2给node加上label

如果不加label,画出来的图上的每个节点只是一个编号,加上label可以看到节点对应的词。

coword_labels=nx.get_node_attributes(graph_co_word_matrix,'labels')

coword_labels

{}

foridx,nodeinenumerate(graph_co_word_matrix.nodes()):

print("idx=",idx,";node=",node)

coword_labels[node]=coword_names[idx]

graph_co_word_matrix=nx.relabel_nodes(graph_co_word_matrix,coword_labels)

sorted(graph_co_word_matrix)

7.3画图

#方案1:用pylab画图

#pos=nx.shell_layout(graph_co_word_matrix)

#nx.draw(graph_co_word_matrix,pos,with_labels=True,node_color='white',edge_color='grey',node_size=1200,alpha=1)

#pylab.title('co-wordmatrix',fontsize=25)

#pylab.show()

#方案2

#pos=nx.circular_layout(maximum_tree)

pos=nx.spring_layout(graph_co_word_matrix)

plt.figure(1,figsize=(30,30))

nx.draw(graph_co_word_matrix,pos,node_size=10,with_labels=True,font_size=22,font_color="red")

#nx.draw(graph_co_word_matrix,pos,with_labels=True)

#nx.draw_networkx_labels(graph_co_word_matrix,pos,labels)

plt.show()

8点度中心性分析

上面画的图糊成了一片,改进方向可以有这些

8.1定义一个公共画图函数

defdiplay_graph_degree(G):

seq_degree=sorted((dforn,dinG.degree()),reverse=True)

dmax=max(seq_degree)

fig=plt.figure("Degreeofthecountgraph",figsize=(8,8))

#Createagridspecforaddingsubplotsofdifferentsizes

axgrid=fig.add_gridspec(5,4)

ax0=fig.add_subplot(axgrid[0:3,:])

Gcc=G.subgraph(sorted(nx.connected_components(G),key=len,reverse=True)[0])

pos=nx.spring_layout(Gcc,seed=10396953)

nx.draw_networkx_nodes(Gcc,pos,ax=ax0,node_size=20)

nx.draw_networkx_edges(Gcc,pos,ax=ax0,alpha=0.4)

ax0.set_title("ConnectedcomponentsofG")

ax0.set_axis_off()

ax1=fig.add_subplot(axgrid[3:,:2])

ax1.plot(seq_degree,"b-",marker="o")

ax1.set_title("DegreeRankPlot")

ax1.set_ylabel("Degree")

ax1.set_xlabel("Rank")

ax2=fig.add_subplot(axgrid[3:,2:])

ax2.bar(*np.unique(seq_degree,return_counts=True))

ax2.set_title("Degreehistogram")

ax2.set_xlabel("Degree")

ax2.set_ylabel("#ofNodes")

fig.tight_layout()

8.2对点度中心性排序

观察哪些词是中心词。可以看到,由于数据集中的每个文档都比较长,共现的机会很高,所以,点度中心性很近似,前面的这些基本上都是全连接。

sorted(graph_co_word_matrix.degree(),key=lambdax:x[1],reverse=True)

8.3综合展示点度中心性

因为图的密度很高,用这个新定义的画图函数依然显示一片黑,但是还有两个图值得注意,实际上这两个图展示了相同内容,只是展示的角度不同,从这两个图可以看到具有某个点度的节点数量。

THE END
1.www.tup.tsinghua.edu.cn/upload/books/yz/091980第1章 Python概述 Chapter1 Python是一种解释型、跨平台、面向对象的计算机程序设计语言,具有开源性、易学性、可移植性、可扩展性和支持丰富类库等特点。Python凭借扩展性强、第三方库丰富和免费开源等特点,在机器学习、数据挖掘、人工智能等领域有着很大优势,前景非常值得期待。 1.1 Python语言简介目前,Python是一种http://www.tup.tsinghua.edu.cn/upload/books/yz/091980-01.txt
2.少儿编程最实用!国内外可视化在线Python编程平台推荐!不少小朋友小同学们在学习编程的时候,最喜欢使用的就是类似于Scratch这样的可视化拖拽式编程平台,这个平台极大的降低了少儿编程的入门门槛,所以已经得到了极大的普及。 但是随着人工智能时代的来临,当同学们想要更加深入地学习编程知识,那么Python编程语言是最合适的一门语言。但是繁杂与冗长的代码,往往会让人望而却步,https://cloud.tencent.com/developer/article/1337958
3.PythonQTGUI与数据可视化编程完整版PDF电子书下载应用平台:PDF 更新时间:2021-09-28 购买链接:京东异步社区 网友评分: 360通过腾讯通过金山通过 104MB 广告 商业广告,理性选择广告 商业广告,理性选择广告 商业广告,理性选择广告 商业广告,理性选择 详情介绍 《Python QT GUI与数据可视化编程》介绍在Python中使用PyQt5和其他模块进行GUI和数据可视化编程的方法。第一部https://www.jb51.net/books/792150.html
4.好学编程:10个强大的Python库,提升开发效率,事半功倍!10. sentry sentry是一款采用C/S模式的实时异常监控平台,基于Python实现,提供清晰高效的web管理界面,支持从任何语言、任何应用程序发送事件。尤其在应用服务开发领域,成熟的异常监控警告必不可少,sentry则可以很好地完成这方面任务。以上就是本次分享的全部内容,想学习更多编程技巧,欢迎持续关注好学编程!https://baijiahao.baidu.com/s?id=1800438705017249258&wfr=spider&for=pc
5.大一新生开发的小工具火了,不一样的Python编程体验,还是可视化的传送门 项目地址: https://github.com/leon-thomm/Ryven —完— 本文系网易新闻?网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。 原标题:《大一新生开发的小工具火了!不一样的Python编程体验,还是可视化的那种》https://m.thepaper.cn/wap/resource/jsp/newsDetail_forward_10884384
6.python全国省份名第三方库包python第三方库大全PlatformIO:多平台命令行构建工具。 PyBuilder:纯 Python 实现的持续化构建工具。 SCons:软件构建工具。 交互式解析器 交互式 Python 解析器。 IPython:功能丰富的工具,非常有效的使用交互式 Python。 bpython:界面丰富的 Python 解析器。 ptpython:高级交互式 Python 解析器, 构建于 python-prompt-toolkit 之上。 https://blog.51cto.com/u_16213718/11862513
7.有没有什么开发软件使用Python语言,且像VB,VC一样可视化wxPython:这是Python绑定wxWidgets库的工具包,可以创建跨平台的GUI应用程序,并提供了丰富的用户界面控件。 3. Python语言的可视化开发软件有什么优势? 与其他编程语言相比,Python语言的可视化开发软件具有以下几个优势: 简单易用:Python语言本身就是一种简洁易懂的编程语言,可视化开发软件进一步简化了GUI应用程序的开发过程https://docs.pingcode.com/ask/154723.html
8.线上python哪个平台好?Worktile社区在选择线上Python平台时,有很多因素需要考虑。这些平台在功能、易用性、支持、价格等方面各有不同。以下是几个值得关注的优秀线上Python平台: 一、Jupyter Notebook(https://jupyter.org/) Jupyter Notebook是一个非常受欢迎的线上Python平台,它具有交互式编程环境和丰富的可视化功能。它支持多种编程语言,包括Pythonhttps://worktile.com/kb/ask/90158.html
9.PythonQtGUI与数据可视化编程.pdf王维波栗宝鹃张晓东本书介绍在Python中使用PyQt5和其他模块进行GUI和数据可视化编程的方法。第一部分介绍PyQt5设计GUI程序的基本框架,包括GUI应用程序的基本结构、窗体UI可视化设计与窗体业务逻辑的设计、信号与槽的特点和使用等。第二部分介绍GUI程序设计中一些主要功能模块的使用,包括基本界面组件、事件处理、数据库、绘图、多媒体等。第https://max.book118.com/html/2020/1217/8024126040003027.shtm
10.Python123Python 优雅胜于丑陋,简单胜于复杂,为你提供更好的 Python 学习体验。 我们相信,学习编程不在于它有多强大,而在于它能够给你怎样的力量!https://www.python123.io/index.html&wd=&eqid=bb0f160a0013ce430000000665643882
11.Python可视化编程python的可视化编程Python可视化编程 importTkinter fromTkinterimport*; #初始化一个窗体对象 window = Tk(); #窗体内容 label = Label(window,text="This is the first python"); label.pack(); #窗体输入 var = StringVar(); entry = Entry(window,textvariable=var);https://blog.csdn.net/u010951938/article/details/42193915
12.iVX—人人都能掌握的可视化编程语言一种全新的“图形化”编程平台,通用无代码/低代码开发平台,自带IDE和编译器/解释器,自动生成全栈代码。通过iVX可视化开发平台在线开发各种应用,可以导出全栈代码,并自由部署到任何地方。该平台为“编程初学者”和“想要学编程的人”专门打造,对于个人用户完全免费。https://www.ivx.cn/
13.Python可视化足球比赛数据及分析预测足球赛事结果物联沃Python 足球可视化分析是使用 Python 编程语言来进行足球比赛数据分析,并将结果呈现为可视化图形的过程。Python 作为一种高效灵活的编程语言,可以用于数据处理和分析,同时也有丰富的可视化库。 足球比赛数据可以从各种数据来源获取,如官方网站、第三方赛事数据平台等。接着,使用 Python 的数据处理包如 Pandas,在将数据结构https://www.iotword.com/28236.html
14.Python数据可视化编程实战本书针对有一定基础的Python程序员,包含了一系列实用的秘笈,帮助读者掌握如何使用Python及其流行的可视化和数据管理库来进行数据可视化。全书包含了60多个实际的案例,涉及到使用地图可视化数据、创建3D动画数据可视化、从各种格式导入数据,将数据导出为各种格式等实用技巧。http://mc64e8402.ptpress.cn/bookDetails?id=B15522
15.Python程序设计与应用:面向数据分析与可视化问图书管理员 馆际互借 点赞 收藏 访问借阅管理系统 分享 作者:黄维通 ISBN:9787040459852 出版社:高等教育出版社 出版年:2016 Visual C++ 面向对象与可视化程序设计习题解析与编程实例 作者:黄维通 ISBN:7900630589 出版社:清华大学出版社 出版年:2000 Python数据分析与可视化应用 https://www.las.ac.cn/front/book/detail?id=911fc6a3f9c4669703c041a8eeb23193
16.PYTHON数据可视化编程实战PDF下载Java知识分享网本书是一本使用Python实现数据可视化编程的实战指南,介绍了如何使用Python最流行的库,通过60余种方法创建美观的数据可视化效果。 全书共8章,分别介绍了准备工作环境、了解数据、绘制并定制化图表、学习更多图表和定制化、创建3D可视化图表、用图像和地图绘制图表、使用正确的图表理解数据以及更多matplotlib知识。 http://www.java1234.com/a/javabook/javabase/2020/1128/18402.html
17.Python可视化界面编程入门TheChosenOnePython可视化界面编程入门具体实现代码如所示: (1)普通可视化界面编程代码入门: import sys from PyQt5.QtWidgets import QWidget,QApplication #导入两个类来进行程序界面编程 if __name__=="__main__": #创建一个Application的类 app=QApplication(sys.argv) https://www.cnblogs.com/Yanjy-OnlyOne/archive/2004/01/13/12065771.html
18.GPT模型支持下的Python学习致力于帮助科研工作者掌握Earth Engine的实际应用能力,以Python编程语言为基础,结合实例讲解平台搭建、影像数据分析、经典应用案例、本地与云端数据管理,以及云端数据论文出版级可视化等方面的进阶技能。为了提高教学质量,本课程将融合最先进的ChatGPT、文心一言等AI自然语言模型辅助教学,协助学员解答疑惑、提供针对性建议https://wap.sciencenet.cn/home.php?mod=space&do=blog&id=1385066
19.PythonTutorPython Tutor helps you do programming homework assignments in Python, Java, C, C++, and JavaScript. It contains a unique step-by-stepvisual debuggerand AI tutor to help you understand and debug code. Start coding online now inPython,Java,C,C++, andJavaScript https://www.pythontutor.com/
20.PyCharm:适用于数据科学和Web开发的PythonIDEjetbrains ide的粉丝:ui非常直观,代码补全,重构和实时模板功能让我的日常编程变得非常愉快! 我使用 pycharm向超过 13万名学生教授编程,这是我向所有打算使用 python进行编程的人推荐的第一款 ide.它功能强大,易于使用且极其直观. charlie marsh astral创始人,ruff和 uv创造者 x(以前称为 twitter) 我已经使用 pyhttps://www.jetbrains.com/pycharm/
21.GitHubjobbole/awesomepythonPython资源大全中文版,包括:Web框架、网络爬虫、模板引擎、数据库、数据可视化、图片处理等,由「开源前哨」和「Python开发者」微信公号团队维护更新。 - jobbole/awesome-python-cnhttps://github.com/jobbole/awesome-python-cn
22.如何使用Python进行数据可视化人大金仓数据库Python是一种功能强大的编程语言,具有丰富的数据可视化库和工具。本文将介绍如何使用Python进行数据可视化,并提供一些常用的数据可视化示例。 1. 安装Python和相关库 首先,您需要安装Python以及一些用于数据可视化的常用库,如matplotlib、seaborn和plotly。您可以通过运行以下命令来安装它们: https://www.6qe.net/amg-article-106043-PYZNULpTnI.html